书摘
-
事件触发
-
单线程
-
无阻塞
-
模块和包
-
创建一个包
mkdir <package_name> ; cd <package_name> npm init
-
将自己的包上传npmjs.org
npm adduser / npm whoami
-
发布
npm npm publish
-
取消发布 / 从npmjs.org上删除
使用node-inspector调试nodejs
npm install -g node-inspector node --debug-brk=5858 <debug.js> node-inspector
browser : http://127.0.0.1:8080/debug?port=5858
Node.js适合I/O密集型的应用,不善于处理计算密集型应用。
初始时,输入流是被暂停的。使用标准输入前,需要先恢复流。
process.stdin.resume();
process.stdin.on('data', function(data){
process.stdout.write('read from console: ' + datat.toString());
})
不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。
process.nextTick(callback)
实现原型间的继承 util.inherits
util.inherits(constructor, superConstructor)
example:
var util = reuqire('util');
function Base() {
this.name = 'base';
this.base = 1991;
this.sayHello = function() {
console.log('Hello '+this.name);
};
}
Base.prototype.showName = function() {
console.log(this.name);
};
function Sub() {
this.name = 'sub';
}
util.inherits(Sub, Base);
var objBase = new Base();
objBase.showName();
objBase.sayHello();
console.log(objBase);
var objSub = new Sub();
objSub.showName();
// objSub.sayHello();
console.log(objSub);
events 是 Nodejs最重要的模块,没有之一。
events 是可以注册多个监听器 (可叠加)
express 建立工程 express -t ejs <project_name> cd <project_name> && npm install
ejs 是一个模版引擎, express 默认支持 Jade 和 ejs
express 支持的HTTP请求绑定方法
请求方式 | 绑定方法 |
---|---|
GET | app.get(path, callback) |
POST | app.post(path, callback) |
PUT | app.put(path, callback) |
DELETE | app.delete(path, callback) |
PATCH | app.patch(path, callback) |
TRACE | app.trace(path, callback) |
CONNECT | app.connect(path, callback) |
OPTIONS | app.options(path, callback) |
所有 | app.all(path, callback) |
express匹配到路径时,请求总是被前一条路由规则捕获,后面的会被忽略。如果需要后在继续处理,通过调用控制转移来实现调用。
next();
Javascript: 中的难点
- apply, call
- bind
- prototype