node经验总结(一)

1.快速构建express项目结构
express 项目名 --模板类型(ejs,jade,但不可指定为html);
1.1 输入cd nodeTest && npm install初始化node环境。
1.2启动SET DEBUG=nodetest:* & npm start。
tips:或者将整个项目拖到hbuilder下在www文件上右击,选择运行方
式--》node application,前提是你的hbuilder配置有node。

2.修改nodejs的模板为html
打开项目下的app.js,找到
app.set('view engine', 'ejs');
或者
app.set('view engine', 'jade');
将其改为
app.engine('.html', require('ejs').renderFile);
app.set('view engine', 'html');

3.node项目中的异常处理

以nodejs为后台或者代理服务的项目中,服务动不动就挂掉,着实让
人头疼,这就迫使我们要去研究node的异常处理机制。
在之前的项目中,通过研究发现在node服务中,我们可以通过一下方
法减少服务挂掉的机率:

app.configure(function(){
app.use(function(res, req, next){
var reqDomain = domain.create();
reqDomain.on('error', function (err) {
console.log('捕获请求异常');
res.send(500, err.stack);
});
reqDomain.run(next);
});
});


process.on("uncaughtException",function(err){
console.error("uncaughtException ERROR");
if (typeof err === 'object') {
if (err.message) {
console.error('ERROR: ' + err.message)
}
if (err.stack) {
console.error(err.stack);
}
} else {
console.error('argument is not an object');
}
});

tips:1.用domain作为express的中间件处理所有request和response
的异步请求。
2.process对象是NOde的全局进程对象,包括了该进程的信息。
1.1:domain对象是node8.0版本是发布的模块,由于node异步回调特
性,我们并不能使用try catch捕捉异常。domain的发布彻底解决了
这一问题。domain可以捕捉req,resp过程中的异常并进行处理。
2.1:process对象是NOde的全局进程对象,node是以事件循环机制执
行的,在一个事件执行的过程,同样也会有该事件的进程对象随之产
生,如果该事件包裹在domain中,进程抛出异常,但并没有被try-
catch捕捉到,此时会触发domain的err事件,反之会触发process的
uncaughtException事件。

posted @ 2017-10-10 17:47  灵魂创造者  阅读(346)  评论(0编辑  收藏  举报