1.安装
>>1.1.根据不同平台安装官方node.js安装包.
安装包一般自带node package manager(npm).
npm允许我们下载第三方功能模块,现在数量很多,上万的节奏。
为npm更换到国内镜像源:
npm config set registry http://registry.cnpmjs.org
为npm更换到默认镜像源:
npm config set registry http://registry.npmjs.org
node.js通过npm安装包有两种方式,本地模式和全局模式。
全局模式安装会被记入系统环境变量,但不能在代码中被require到。即加了参数-g
本地模式安装好的包仅供当前应用调用。
若已安装全局包,则可以通过link命令使全局包可以被require,如下
npm link ./npm_modules/包名 /usr/local/npm_modules/包名(link暂不支持Windows)
>>1.2.安装node多版本管理器,允许开发者切换node运行版本。
暂不支持Windows。
本文介绍的多版本管理器就叫n。
cmd运行:
npm install -g n
安装完毕后。
cmd运行:n <版本号>代表安装任意已发布的版本号的node.js。如果该版已安装,则代表切换node版本至该版本。不同版本API差异较大。
如
n 0.7.5
2.创建http服务器
从官网下载node.js的安装包。
以下是创建一个http服务器并对所有http请求返回同一内容的代码:
var http = require('http');
http.createServer(function(req,res){
res.writeHead(200, {'Content-Type':'text/html'});
res.write("hello world");
res.end();
}).listen(80);
在cmd下运行:
node <js文件名>
浏览器键入:localhost:80 查看效果
其中require函数简单理解为取一个功能模块。这里我们取得http模块。
http模块是node.js的一个核心模块,内部用C++编写,外部用javaScript封装。
node.js社区开发了大量的第三方模块,我们可以下载来用。
3.调试代码
>>3.1 Supervisor
node.js基于性能考虑,只会在第一次启动时解析脚本,之后全部从内存中加载,所以代码的改动必须重启node才会生效。
可以通过第三方模块supervisor实现node自动重启。
通过npm下载supervisor, cmd运行:
sudo npm install -g supervisor
安装完毕后,体验supervisor。
1.cmd运行:
supervisor <js文件名>
2.修改服务器中返回内容
3. supervisor自动重启
4.查看浏览器中返回内容
>>3.2 单步断点调试
V8引擎还提供了如在eclipse,VS中的单步断点调试功能,相当强大, CMD运行
node debug <js文件名>
进入debug模式,主要命令如下
next,n,执行下一步
step,s,执行下一步,会进入函数
out,o,跳出函数
setBreakPoint('文件名',行数),sb(‘文件名’,行数),在某个文件某个行数设置断点,也可以直接写行数,代表本文件某行数设置断点。
clearBreakPoint,cb(),清除所有断点。
cont,c,继续执行,直到遇到下一个断点
list(10),显示当前代码前后10行
watch('a'),将变量a加入监视列表
unwatch('a'),取消监视变量a
repl,打开即使求值环境
scripts,显示当前已加载所有脚本
restart,从头开始调试
>>3.3 远程调试实验。
1.我们可以在终端中输入
node --debug-brk <js文件名>
来启动远程调试,默认调试端口是5858
也可以
node --debug-brk=1234 <js文件名>
来指定调试端口为1234。
2.开启另一个终端,输入“node debug 127.0.0.1:1234”来进入远程调试。
3.在eclipse中安装chrome developer插件进行远程调试。
插件地址如下: http://chromedevtools.googlecode.com/svn/update/dev/
插件安装完毕后,用eclipse打开单个nodejs文件,点击进入debug configuration, 在左侧配置栏中找到Standard V8 VM,选中。
选中后,单击左上角“new”按钮,新建一个V8 debug配置,输入相应configuration name, host和port。(host默认是本地)
在命令行启动:
node --debug-brk=[eclipse插件调试port] httpServer1.js
node启动后, 单击eclipse中开启debug按钮。
4. 在chrome中调试
安装node-inspector包
npm install node-inspector -g//下载并安装node-inspector
node --debug-brk[=port] script.js//开启调试端口
在另一终端中输入node-inspector启动inspector,根据response指定的URL,
将该URL键入浏览器地址栏就可以通过chrome来调试node.js程序了。
4. 异步IO和同步IO结果比较
异步IO代码:
var fs = require('fs');
fs.readFile('log.txt', 'utf-8',function (err, data) {
if (err) {
throw err;
}
var txt = data.toString();
console.log(txt);
});//异步读文件
console.log('end');
output:
end
文件txt内容
同步IO代码:
var fs = require('fs');
var data = fs.readFileSync("log.txt", "utf-8");
console.log(data);
console.log('end');
output:
文件txt内容
end
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。
5. 自个儿知道的第三方模块
fs, node文件系统模块。
http, 用来收发http请求的模块。
request, 经过简化的http模块。
nimble,串行流程控制模块。
6. NodeJS中模块是单次加载的
建立模块module1.js
var name;
exports.setName = function(thaks) {
name = thaks;
}
exports.sayHello = function() {
console.log("Hello" + name);
}
读取模块module1.js
var module1 = require("./module1");
module1.setName("edmond");
var module2 = require("./module1");
module2.setName("edward");
module1.sayHello();
7. Express框架安装
npm install -g express
安装express环境变量
npm install -g express-generator