nodeJs入门笔记(二)

js中window通常是全局变量

global 是node.js里的全局变量 node中能访问的对象一般都是 global的 属性

global 对象属性 process 用于描述当前Node 进程状态的对象,提供了一个与操作系统的简单接口.

process.argv :命令行参数数组,第一个元素是 node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数

console.log(process.argv);

$ node argv.js 1991 name=byvoid --v "Carbo Kuo"
[ ‘node‘,
‘/home/byvoid/argv.js‘,
‘1991‘,
‘name=byvoid‘,
‘--v‘,
‘Carbo Kuo‘ ] 

process.stdout.write() 通常我们调试 是用console.log() 而它提供了更底层的接口

process.nextTick(callback) 作用给功能增加一个新的项目,node会在下次循环响应时候调用callback

我个人理解就是跟js的 回调函数一个样子 比如:

//js的写法
function a(b,callback){
    c(b);
    callback()
} 

a("lee",function(){

     alert("lee是帅哥")
});

//用nextTick改写
function a(b,callback){
    c(b);
    process.nextTick(callback)
} 

a("lee",function(){

     alert("lee是帅哥")
});

但是我相信一门语言 出现每个的方法 都有属于自己独特的魅力 更加具体的效果我也不知道怎么体现 路过的大神望解答

util 是node的核心模块。

util.inherits() 是实现对象之间的原型继承 比如说:

var util = require("util");

function lee(){
    this.name = "lee";
    this.time = "1991";
    this.leeshuo = function(){
        console.log("hello i am " +this.name)
    }

}
lee.prototype.aaa= "aini"
lee.prototype.kx = function(){
    console.log("i am "+this.name);
}

function Hmx(){
    this.name="mx";
}

util.inherits(Hmx,lee);

var lee = new lee();

lee.leeshuo();
lee.kx();
console.log(lee)
var hmx = new Hmx();    

console.log(hmx.aaa);
hmx.kx();

看到了吧 hmx 继承了 lee的prototpye ..话说 这方法还挺好用的..

util.inspect(object,[showHidden],[depth],[colors]) 把对象转成字符串 通常用于调试和错误输出. 至少接受一个参数 object,

showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多
少。如果不指定depth,默认会递归2层,指定为 null 表示将不限递归层数完整遍历对象。
如果color 值为 true,输出格式将会以ANSI 颜色编码,通常用于在终端显示更漂亮
的效果。

var util = require("util");

function lee(){
	this.name = "lee";
	this.time = "1991";
	this.leeshuo = function(){
		return this.name;
	}

}

var lee = new lee();
console.log(util.inspect(lee))
console.log(util.inspect(lee,true,2,true))

//输出内容
lee { name: ‘lee‘, time: ‘1991‘, leeshuo: [Function] }
lee {
  name: ‘lee‘,
  time: ‘1991‘,
  leeshuo:
   { [Function]
     [length]: 0,
     [name]: ‘‘,
     [arguments]: null,
     [caller]: null,
     [prototype]: { [constructor]: [Circular] } } }

events 是Node.js 最重要的模块,没有“之一”,原因是Node.js 本身架构就是事件式的,而它提供了唯一的接口,所以堪称Node.js 事件编程的基石

events 模块只提供了一个对象: events.EventEmitter    每个事件由一个事件名和若干个参数组成,事件名是一个字符串

直接上代码

var events = require("events");
var emitter = new events.EventEmitter();

emitter.on("onevent",function(a,b){
    console.log("1111 " + a +" hao "+ b);
});
emitter.on("onevent",function(a,b){
    console.log("2222 " + a +" hao "+ b);
});
//发射
emitter.emit("onevent","lee","shuai");

node还绑定了一个特别的事件 "error"  应用的场景:

我们在遇到
异常的时候通常会发射 error 事件。当 error 被发射时,EventEmitter 规定如果没有响
应的监听器,Node.js 会把它当作异常,退出程序并打印调用栈。我们一般要为会发射 error
事件的对象设置监听器,避免遇到错误后整个程序崩溃

emitter.emit("error")

继续成长.....

(完)

时间: 2024-10-18 23:30:11

nodeJs入门笔记(二)的相关文章

nodejs爬虫笔记(二)

node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var cheerio = require('cheerio');**** var url = 'https://www.youtube.com '; function crawler(url,callback){ var list = []; request(url,function(err,res){ if(e

nodejs学习笔记<二>简单的node服务器

在环境搭建好后,就可以开始动手架设(node驱动)一个简单的web服务器. 首先,nodejs还是用js编写.先来看一段node官网上的实例代码. var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end('Holle,nodejs'); }).listen(8080,'127.0.0.1'); console

nodejs学习笔记二链接mongodb

a.安装mongoose库用来链接mongodb数据库 安装mongodb数据库参考mongodb安装 前言(怨言) 本来是想安装mongodb库来链接mongodb的,命令行到nodejs工程目录:npm install mongodb --save 但是发现报gyp ERR! stack Error:Can't find python executable "python"错误,缺少python运行环境. 我晕死,我链接mongodb还需要Python,这不是存心让用户找虐.查到有

nodejs学习笔记二(get请求、post请求、 querystring模块,url模块)

请求数据 前台:form.ajax.jsonp 后台:接受请求并返回响应数据 前台<= http协议 =>后台 常用的请求的方式: 1.GET           数据在url中 2.POST         数据不再url中 get方式:通过地址栏来传输     name=value&name1=value1&               作用:分享 post方式:通过head头传输      数据相对安全 form action="http://www.vaidu

nodeJs入门笔记(一)

node将"HTTP服务器"这一层抽离,直接面向浏览器用户 如PHP运行之前先要配置一个功能强大而复杂的HTTP 服务器,譬如Apache.IIS 或Nginx,还需要将PHP 配置为HTTP 服务器的模块,或者使用FastCGI 协议调用PHP 解释器.这种架构是“浏览器 — HTTP 服务器 —  PHP 解释器”的组织方式 node最大的特点是异步I/O,  众所周知也就是单线程 ,相对于例PHP多线程来说, 不会阻塞,例如 当线程遇到I/O操作时候,不会等待I/O操作完成或数据

&lt;&lt;深入浅出nodeJS&gt;&gt;读书笔记--&lt;二&gt;

第三章  异步I/O 目的: 1.响应速度快,用户体验佳 同步: getData('from_db'); // 消耗时间M getData('from_db2'); //消耗时间N //总时间为M + N 异步: getData('from_db',function(res){ // 消耗时间为 M }); getData('from_db2',function(res){ // 消耗时间为 N }); // 总时间为 Max(M,N); 2.单线程,资源分配合理 优缺点: 优点:高并发,非阻塞

nodejs学习笔记二:解析express框架项目文件

上一章介绍了如何去创建一个express框架的工程项目,这章介绍一下express框架下的文件和用法解析,上一张我们创建的工程项目结构图如下: models是不属于原工程项目结构,为了实现数据模型后添加的,而node_modules这个文件夹内存放着项目需要的中间件,public是存放静态文件的文件夹,routes顾名思义就是路由解析文件的所在,views就是ejs模板引擎的视图文件,app.js是项目运行的入口存放着全局大量的配置,package.json是加载第三方包的配置文件.下面来一一解

NodeJS 学习笔记(二)

url模块 ,包含分析和解析 URL 的工具. var url = require('url'); url.parse(urlStr[, parseQueryString][, slashesDenoteHost])  第一个参数,输入 URL 字符串,返回一个对象. var url = require('url'); url.parse('http://www.tianh.top'); { protocol: 'http:', slashes: true, auth: null, host:

kettle入门笔记(二) 之 kettle报的坑爹错误:Error occured while trying to connect to the database

1 引言 在用kettle开发时常会出现 Error occured while trying to connect to the database 错误,但是仔细观察日志,引起这个错误的原因不尽相同.这个错误看起来很简单,但是有时候越简单的错误越没有耐心改,尤其是忙的时候,不小心填错了某个参数导致这个错误但是自己感觉没问题却跑不成功,这是最烦人的.这时候需要淡定.不妨上网查查,错误也许就可以愉快的解决了.下面给出这错误的更细节错误的不同发生情况. 2 示例 有个很简单的ktr脚本(当前kett