<h3 id="为什么用nodejs它有哪些弱点">1、为什么用Nodejs,它有哪些弱点?
- 变乱驱动,通过闭包很轻易实现客户端的生命活期。
- 不消担忧多线程,锁,并行计较的题目
- V8引擎速率很是快
- 对付游戏来说,写一遍游戏逻辑代码,前端后端通用
- nodejs更新很快,也许会呈现版本兼容
- nodejs还不算成熟,还没有大建造
- nodejs不像其他的处事器,对付差异的链接,不支持历程和线程操纵
-
错误优先(Error-first)的回调函数(Error-First Callback)用于同时返回错误和数据。第一个参数返回错误,而且验证它是否堕落;其他参数返回数据。
fs.readFile(filePath,function(err,data)
{
if (err)
{
// 处理赏罚错误
return console.log(err);
}
console.log(data);
});
- 模块化:将回调函数转换为独立的函数
- 行使流程节制库,譬喻[aync]
- 行使Promise
- 行使aync/await
-
Promise可以辅佐我们更好地处理赏罚异步操纵。下面的实例中,100ms后会打印result字符串。catch用于错误处理赏罚。多个Promise可以链接起来。
new Promise((resolve,reject) =>
{
setTimeout(() =>
{
resolve('result');
},100)
})
.then(console.log)
.catch(console.error);</code></pre>
- 团队协作时,担保同等的代码气魄威风凛凛长短常重要的,这样团队成员才可以更快地修改代码,而不必要每次去顺应新的气魄威风凛凛。这些器材可以辅佐我们:
- [ESLint] ()
- [Standard] ()
- JSLint
- JSHint
- ESLint
- JSCS保举
-
stub用于模块的举动。测试时,stub可觉得函数挪用返回模仿的功效。好比说,我们写文件时,现实上并不必要真正去写。
var fs = require('fs');
var writeFileStub = sinon.stub(fs,'writeFile',function(path,data,cb)
{
return cb(null);
});
expect(writeFileStub).to.be.called;
writeFileStub.restore();</code></pre>
Node回收的是单线程的处理赏罚机制(全部的I/O哀求都回收非阻塞的事变方法),至少从Node.js开拓者的角度是这样的。而在底层,Node.js借助libuv来作为抽象封装层,从而屏障差异操纵体系的差别,Node可以借助livuv来实现线程。下图暗示Node和libuv的相关 
Libuv库认真Node API的执行。它将差异的使命分派给差异的线程,形成一个变乱轮回,以异步的方法将使命的执行功效返回给V8引擎。可以简朴用下面这张图来暗示 
每一个I/O都必要一个回调函数————一旦执行完便堆到变乱轮回上用于执行
- 运算错误并不是bug,这是和体系相干的题目,譬喻哀求超时可能硬件妨碍。而措施员错误就是所谓的bug
- 通过NPM,你可以安装和打点项目标依靠,而且可以或许指明依靠项的详细版本号。对付Node应用开拓而言,你可以通过
package.json 文件来打点项目信息,设置剧本,以及指明依靠的详细版本
|