标签归档:nodejs

Node.js入门基础知识

Node.js基础知识

/////////////////////////////////////////////////////////
Node.js控制台
1 console.log()与console.error()

console.log("字符串");

console.log("%s", "字符串1", "字符串2");
console.log("%d", 10,10.5);

2 console.dir方法(查看一个对象内容并输出到控制台)

var user = {"name": "vfeelit"};
console.dir(user);

3 console.time()和console.timeEnd()
两个方法都接收一个参数,参数值可以为任何字符串,但两个方法所使用的参数字符串必须相同才能正确统计出开始和结束时间之间锁经过的耗秒数。

4 console.trace方法
将当前位置处的栈信息作为标准错误信息进行输出。

5 console.assert方法
对一个表达式的执行结果进行评估。如果结果为false,则输出一个消息字符串并抛出AssertionError异常。

/////////////////////////////////////////////////////////
Node.js全局作用域及全局函数
1 全局作用域
Node.js中,定义了一个global对象,代码Node.js中的全局命名空间,任何全局变量、函数或对象都是该对象的一个属性值。

2 setTimeout与clearTimeout
3 setInterval与clearInterval
4 定时器对象的unref方法与ref方法

5 与模块相关的全局函数与对象
5.1 require函数加载模块

var f = require('../f.js');
var h = require('http');

模块在首次加载后将缓存在内存缓冲区中。这意味对于相同模块的多次引用得到的都是同一个模块对象,对相同模块的多次引用不会引起模块内代码的多次执行(但是引用到同一个模块,可看成是代码空间,第一运行载入内存)。

5.2 require.resolve()查询完整模块名

5.3 require.cache对象
在Node.js中,定义了一个require.cache对象,该对象代码缓存了所有已被加载模块的缓冲区。可用console.log(require.cache)来查看缓冲区中的内容。require.cache对象具有一个“键名/键值”结构,键名为每个模块的完整文件名,键值为各模块对象,可通过键名访问某一个模块:

require.cache["模块文件名"];
console.log(require.cache[require.resolve('./tm.js')]);

可用delete关键字删除缓存区中的缓存的某个模块对象。

delete require.cache[require.resolve('./tm.js')];

6 __filename 与 __dirname变量
用于获取当前模块文件名的__filename变量与用于获取当前目录名的__dirname变量。

7 EventEmitter类
在Node.js的用于实现各种事件处理的event模块中,定义了一个EventEmitter类。所有可能触发事件的对象都是一个继承了EventEmitter类的子类的实例对象(如果一个对象要可以触发事件,那么它应该是EventEmitter的子类,这样才能针对事件绑定函数)。

addListener(event, listener)	
on(event, listener)
once(event, listener)
removeListener(event, listener)
removeAllListeners([event])
setMaxListeners(n)
listeners(event)
emit(event, [arg1], [arg2])

多次调用on来对同一个事件绑定多个处理函数。默认,针对同一个事件,最多可以绑定10个事件处理函数。可以通过setMaxListeners方法修改最多可以绑定的事件处理函数数量:emitter.setMaxListeners(n)

Node.js 安装

Node.js运行环境的部署安装是非常简单的,从https://nodejs.org/en/download/(https://nodejs.org/dist/)下载不同平台编译好的二进制包(也可以下载源码编译,Windows下需要下载Windows Installer (.msi)安装文件,里面包含npm包;如果下载Windows Binary (.exe)则仅仅对应node.exe文件。安装第三方包需要npm支持),解压放入对应目录即可,在CentOS/Ubuntu下,可以释放到/usr/local下,由于PATH默认包含/usr/local/bin目录,换句话说只要解压缩就完成了安装:

cd /usr/local
wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz
#xz命令解压xz包得到tar包
xz -d node-v6.11.3-linux-x64.tar.xz
#解压tar包
tar -xvf node-v6.11.3-linux-x64.tar.xz

##或者用tar一键解压
tar xvJf node-v6.11.3-linux-x86.tar.xz

#直接拷贝释放到/usr/local
chown -hR root:root node-v6.11.3-linux-x86
cd node-v6.11.3-linux-x86
cp -frap * /usr/local

直接释放到/usr/local就可以完成安装。由于/usr/local/bin是在PATH中的,所以bin中的node和npm自然是可以直接找到的。

node -v
npm -v

#如果在国内部署,可以使用npm安装cnpm:(https://github.com/cnpm/cnpm)
npm install cnpm -g --registry=https://registry.npm.taobao.org	

使用npm或cnpm安装cheerio(https://github.com/cheeriojs/cheerio)
npm install cheerio
cnpm install cheerio

NPM是一个包管理器,NMP本身就可以看做是一个NodeJS模块,全局安装在/usr/lib/node_modules/中(nmp目录),NPM使用到的包,放入到子目录node_modules中,这个目录中的包就类似是nmp包的本地安装。

如下,升级NMP:

npm install npm -g

参数-g表示全局安装,就是放入到/usr/lib/node_modules/,否则就是本地安装。npm install npm本身就说明npm就是nodejs的一个包。

举例来说:

npm install express

就会在当前目录下创建一个叫node_modules目录,里面安装express包(它还会依赖其它包,会把依赖也下载),这里里面的包,只需要使用require进来即可(实际就是自动进入这个目录去寻找包)

npm install xxx -g
npm install xxx
npm uninstall xxx -g
npm uninstall xxx
npm update xxx
npm search xxx
npm ls -g
npm ls

npm search express
npm install                     #使用package.json文件来安装包
npm install express             #安装指定包
npm install express@0.1.1       #安装指定包指定版本
npm install ../module.tgz       #安装本地包

npm install express -g
npm remove express
npm pack                        #对一个包进行本地打包
npm view express
npm publish
npm unpublish module

对于每个包,package.json是必须的,它定义了包的属性,比如名称、版本、依赖等。更加详细的内容需要去参考官方文档。