https://github.com/azat-co/practicalnode
你将学会:
http://nomdejs.org/
通过Nava进行多版本安装:
通过NVM进行多版本安装:
检查安装:
node -v
npm -v
控制台(REPL):同许多其他平台或语言(如Java, Python等)类似,Node.js也有自己的虚拟运行环境:REPL。可以使用它来执行任何Node.js或JavaScript代码。甚至还可以引入模块和使用文件系统,还包括控制nodecopters和调试远程服务器等。
$ node
> 1 + 1
2
和浏览器中对ECMAScript的实现有一些比较细微的差别,但是总体上没有什么区别。
$ node 文件名
它建立在 Google Chrome的V8引擎和它的ECMAScript之上,所以同JavaScript是非常类似的。
弱类型: 只有String、Number、Boolean、Undefined、Null、RegExp、其他都是object。
Buffer:做数据存储非常有效,推荐使用它。
对象字面量:
函数:是一等公民,函数也是对象,如 var obj = function() { ... }; obj.boo = 1,如果没有return,返回undefined
数组:也是对象,它从Array.prototype中继承了一些特殊的方法。
原型特性:JavaScript中没有类的概念,对象可以直接从其他对象处继承,称之为原型继承
编码规范:
Node.js的全局变量和保留字:JavaScrtipt中,遗漏了var,就会变成全局变量,有window对象,而Node.js中却没有,但有process(进程)、global(访问全局)、module.exports和exports(模块)
__dirname与process.cwd的对比:全局变量文件的绝对路径和运行脚本进程的绝对路径。
浏览器API辅助工具:String, Array和Math对象等。
核心模块:http, util, querystring, url, fs。可通过NPM安装其他模块
便捷的Node.js工具:Cryto(随机生成器)
在Node.js中读写文件:
Node.js中的数据流:是指应用在处理数据的时候还可以同时接收数据。默认使用buffer来处理。
使用NPM安装Node.js模块:npm同Git非常类似,通过遍历工作目录来找到当前项目。使用package.json文件和node_modules文件夹进行本地模式安装,安装命令为npm install name。NPM最大的优势在于它的所有依赖都是本地模式安装的,所以如果模块A依赖于模块B v1.3,而模块C依赖于模块B v2.0,模块A和模块C分布具有B不同版本的本地副本,彼此互不影响。事实证明,这个策略比Ruby那种默认全局模式安装的策略好多了。最佳实践是:如果你的项目需要在其他应用中使用的模块,那么在Git版本仓库中就不要再包含node_modules文件夹了。然而,如果是要发布应用,那么推荐你在项目中包含node_modules文件夹,这是为了避免依赖更新所导致的程序崩溃。
优化Node.js中的回调函数:
Sublime Text
WebStorm是一个不错的选择
当文件内容发生变化时重启服务,因为Node应用存储在内存中。可以使用forever、node-dev、nodemon、supervisor、up等管理
使用Node.js的HTTP模块来创建一个简单服务器:hello.js
var http = require('http')
http.createServer(function(req, res) {
res.writeHead(200, {'Conten-Type':'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
调试Node.js程序:Core Node.js Debugger(没有图形)、Node Inspector(Chrome开发者工具)、WebStorm和其他集成开发环境
核心Node.js调试:可以在代码中加入debugger;,并使用$ node debug program.js
使用Node Inspector来调试:npm install -g node-inspector; node-inspector; $ node --debug hello.debug.js; 打开http://127.0.0.1:8080/debug?port=5858 ;