node经验总结(一)
1.快速構(gòu)建express項目結(jié)構(gòu)
express 項目名 --模板類型(ejs,jade,但不可指定為html);
1.1 輸入cd nodeTest && npm install初始化node環(huán)境。
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為后臺或者代理服務(wù)的項目中,服務(wù)動不動就掛掉,著實讓
人頭疼,這就迫使我們要去研究node的異常處理機制。
在之前的項目中,通過研究發(fā)現(xiàn)在node服務(wù)中,我們可以通過一下方
法減少服務(wù)掛掉的機率:
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版本是發(fā)布的模塊,由于node異步回調(diào)特
性,我們并不能使用try catch捕捉異常。domain的發(fā)布徹底解決了
這一問題。domain可以捕捉req,resp過程中的異常并進行處理。
2.1:process對象是NOde的全局進程對象,node是以事件循環(huán)機制執(zhí)
行的,在一個事件執(zhí)行的過程,同樣也會有該事件的進程對象隨之產(chǎn)
生,如果該事件包裹在domain中,進程拋出異常,但并沒有被try-
catch捕捉到,此時會觸發(fā)domain的err事件,反之會觸發(fā)process的
uncaughtException事件。
轉(zhuǎn)載于:https://www.cnblogs.com/wangkdeblogs/p/7646970.html
總結(jié)
以上是生活随笔為你收集整理的node经验总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表单绑定
- 下一篇: web访问 FastDFS 方法思路