给Node.js新手的7个建议技巧

上传人:平*** 文档编号:16334799 上传时间:2017-11-07 格式:DOCX 页数:6 大小:61.24KB
返回 下载 相关 举报
给Node.js新手的7个建议技巧_第1页
第1页 / 共6页
给Node.js新手的7个建议技巧_第2页
第2页 / 共6页
给Node.js新手的7个建议技巧_第3页
第3页 / 共6页
给Node.js新手的7个建议技巧_第4页
第4页 / 共6页
给Node.js新手的7个建议技巧_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《给Node.js新手的7个建议技巧》由会员分享,可在线阅读,更多相关《给Node.js新手的7个建议技巧(6页珍藏版)》请在金锄头文库上搜索。

1、给 Node.js 新手的 7 个建议技巧一些我更愿意在开始就知道东西利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有 3 万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中。无论如何,对于一些刚开始使用 Node.js 开发的的人来说,很容易碰壁,在这个文章中,我会提到在你学习过程中遇到的问题。贴士 1: 在开发环境使用 nodemon, 在生产环境使用 pm2当你第一次开发 Node.js 应用的时候,其中一件事情就是一次又一次的运行file.js 就和揭伤疤一样。 当我第一次开发的 node app 时候,这个让我感到异常挫败和痛苦, 尤其是每当我

2、修改很小东西的时候需要 control+c幸运的是我发现了一个非常棒的工具 Nodemon. 你可以利用以下的命令来安装。npm install -g nodemonNodemon 是一个令人惊叹的工具, 当你全局安装他以后,可以通过 nodemon file.js 来启动你的 node.js scripts,它会告诉 nodemon 来监视你的script 和 scripts 的所有变化,这样的 Node.js 开发方式非常震撼以及让大大提高开发速度。那么,生产环境又如何,除非你用了 heroku,Nodejitsu 或者其他一些好的 Node.js 平台( 也许他们有类似的功能 ),但是碰

3、巧你用了 EC2 或者一些其他的云平台来运行你的 Node.js app,你如何能然保证这是一个始终运行的 Node.js app?案就是 PM2, PM2 是一个类似于 Nodemon 的工具,不同之处在于它用于生产环境,和 Nodemon 相似的地方在于他会监控你的 app 的任何修改或者重新部署,但是有更好的一面, PM2 在遭遇到崩溃的时候,他会正确重启你的 app.PM2 的优胜之处在于当你要将 app 需要多核处理的时候,PM2 内部集成的负载均衡可以让你很容易的去指定运行多少个实例。pm2 start app.js -i max-i 参数目的是指定运行多少个实例,在这个例子中 P

4、M2 使用了一个常量 max来扩展你的 app 运转到你最大的核数,不要忘记 Node 平时只会运行在单核!贴士 2: Async 或者 Q当你专注于写了更多的 node.js apps 的时候,你肯定领略了什么是回调地狱。如果你还不知道,这里有一个例子:function register(name, password, cb)checkIfNameExists(name, function(err, result)if(err)return cb(“error”);checkIfPasswordGood(password, function(err, result)if(err)return

5、 cb(“error”);createAccount(name,password, function(err,result)if(err)return cb(“error”);createBlog(name, function(err, result)sendEmail(name, function(err, result)callback(result););););););这显然不是一个有用或者令人折服的代码, 反而进入一种回调地狱般两难的境地,是你的话将如何避免?一个简单的办法是使用 events, 但是我个人不建议这么做,因为使用 events来调用只有一个用途的私有方法,足以令人受挫

6、。所以你该怎么做? 这里有两个编译好的模块 async.js 和 Q, 他们两个都可以防止落入回调地狱。Async.js 或者 async 让你可以容易的执行一些连续或者平行的任务,在不依赖一个又一个的嵌套循环前提下.下面是一些来自 Async 的 readme,写明了他支持的模式,如需获取全部的支持方式请去他们的 github 主页查看。async.map(file1,file2,file3, fs.stat, function(err, results)/ results is now an array of stats for each file);async.filter(file1,

7、file2,file3, fs.exists, function(results)/ results now equals an array of the existing files);async.parallel(function() ,function() , callback);async.series(function() ,function() );async.waterfall(function(callback)callback(null, one, two);,function(arg1, arg2, callback)callback(null, three);,funct

8、ion(arg1, callback)/ arg1 now equals threecallback(null, done); , function (err, result) / result now equals done );如果我们用 async 的 waterfall 来修改之前的例子 ,结果将更加容易阅读, 再也不用让你的代码看起来像一个死亡金字塔.另一个重要的库叫做 Q. 这个库是一个暴漏 promises 的概念,Promise 是一个含有promise方法的返回对象,他提供了一个最终的返回值,非常优雅的将javascripts 的异步和 node.js 紧密联系在一起。pro

9、miseMeSomething().then(function (value) , function (reason) );这个 promise me 方法正确返回了一个对象,对象将在传入 value 的时候调用这个方法当,并且他提供了一个额外的 callback 来处理失败后的返回值。这是一个非常有条理的方式来避免回调地狱,如果你重写我们之前的那个例子,你可以非常容易的让这些函数正确被调用并执行。就和我之前说的一样,我很不愿创建只有一个用途的一堆功能,相反的在then之后传入一个方法名,仅仅创建了一个匿名的内部功能和传递,当然了选择权始终在你手里。总的来说,当你落入回调地狱的时候,是时候去看

10、看 async.js 或者 Q 吧。我的选择? 当然是 Q贴士 3: 轻松调试 Node.js apps如果你从一个 IDE 重度集成的语言比如 java 或者 C# 转来调试 Node.js,,你一定会感到很困扰,大部分新加入 node 的开发者采用了flow的调试模式,从这一刻开始你最好的朋友就是 console.log但是依然有更常见的调试方式来代替, Node.js 内置了一个调试器你可以称为 node debug,不过我更喜欢的 node-inspector他们的 github 说 “Node Inspector 是一个使用 Blink Developer Tools (以前称为 W

11、ebKit Web Inspector)node.js 调试器的界面,”简而言之,node-inspector 可以让你用任何你想用的编辑器和 chrome web tools 来调试你的应用,这是多么的性感。Node-inspector 可以让你做一些非常酷的事情,比如实时修改 ,单步调试,注入以及一堆其他非常酷的东西。让我们来根据指示一步一步安装。贴士 4: Nodefly一旦你有你的应用程序正常运行,你可能会问自己,你怎么可以监视它的性能和配置文件,以确保您的应用程序运行在最佳的速度。最简单的答案是一个伟大的服务,我称为 Nodefly。用简单的一行代码 Nodefly 开始监视你的应用

12、程序内存泄漏,测量 redis 用了多久,mongo 查询和一堆其他很酷的东西。贴士 5: 利用 NPM 进行模块管理Node 做最常见的事情之一是通过 NPM 安装软件包。Node 有一个惊人的包管理器安装所有指定在你的 package.json 的 manifest 文件中的模块。然而,所有初学者都会碰上保持的 package.json 文件中您所使用的所有的模块都是最新版。这似乎是一个痛苦的过程,总是打开的 package.json 来更新新模块的依赖,但许多人不知道的是 npm 会为你做这个!非常简单运行 npm install - save module_name 然后 npm 将自

13、动更新你的package.json 包含正确的模块和版本。npm install - save module_name贴士 6: 不要检查 node_modules 文件夹虽然我们的话题一直是 modules 和 npm,但是并不是不是很多人都知道,你不应该提交 node_modules 文件夹。这背后最大的原因是,没有必要提交这个文件夹。只要有人下载你的代码,他们可通过运行 NPM 来安装和下载所有需要的模块。您可能会说,它是不是一个大问题,如果检查 node_modules,但是,如果下载代码的人使用了和你编译 modules 不一样的操作系统的来安装通过 NPM?你的应用程序将会崩溃,下

14、载代码的人将不知道为什么会如此!举个例子 bcrypt 以及 sentimental 如果当在您安装在主机系统上编译他们,因为他们用了本地 C 语言组件来编译。避免检查 node_modules 文件夹的方式是加入.gitignore/ .gitignore node_modules/*贴士 7: 别忘记返回初学者经常犯一个很常识的错误,就是忘记 callback 后的返回值,虽然有些时候,这没有影响,有很多时候,你会遇到奇怪的问题,因为你的回调被调用两次。让我们看一个简单的例子function do(err,result, callback)if(err)callback(“error”);callback(“good”);乍一看,这个片段是有道理的。如果有错误,在回调中发送“错误。如果不发送return,调用 callaback 后这个函数不会停下来。它只是将移动到调用回callback(“good”)。这样做在长期和复杂的代码行里面会节省几个小时的调试。翻译自:diwu.me/2013/09/24/7-tips-for-a-node-dot-js-padawan/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号