OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

快乐Node程序员的10个习惯


分享到
分类 JS学习   发布 renyuzhuo  1395075971000
注意 转载须保留原文链接,译文链接,作者译者等信息。  
JavaScript出现近二十年了,但由于其有些问题不能解决,使得像Python和Ruby这一类的语言很吸引人,这些问题包括命令行接口、交互式开发环境、包的管理和没有一个有组织开源社区等。幸亏Node.js和npm,使得JavaScript的现状有了明显改善。网络程序员正使用强大的新工具,这使他们可以做他们想到的任何事情。

下面是一个让你的快乐和让你程序很好工作的小技巧清单。

1、用npm init开始你的程序

npm包括一个用init命令创建一个package.json文件的过程。尽管你也许很熟悉package.json极其属性,但是npm init仍然是一个很方便的方法让你的新的节点应用程序(node app)或模块开始走上正轨。它为你智能地进行默认设置,就像从其父目录推断模块名称,从~/.npmrc中读取作者信息,或者是使用你的git设置来确定repository。
mkdir my-node-app
cd my-node-app
npm init

2、声明所有的依赖关系

每次你在本地安装一个模块,使用--save或者是--save-dev是一个很好的习惯。这些标记把给定的模块增加到你的package.json的dependencies或devDependencies的列表中,并且它会使用一个合理的默认的semver range
npm install domready --save
注意现在npm使用的caret-style semver ranges :
"dependencies": {
 "domready": "^1.0.4"
}

3、指定一个启动脚本

在package.json中为scripts.start设置一个值以便允许你在命令行中用npm start来打开你的app。这是一个很好的要去遵守的惯例,这样这可以让任何的节点开发人员来拷贝你的app并没有任何问题地运行。
Bonus:如果你在你的package.json中定义了scripts.start,那么你就不需要Procfile了。正如web process使用npm start时Procfile将自动地被创建出来。
这有一个打开script的例子
"scripts": {
 "start": "node index.js"
}

4、指定一个测试脚本

就像你团队中任何人都应该能运行你的程序一样,他们也应该都能测试它。在package.json 中的scripts.test字段是用来指定一个脚本来运行测试的。如果你正在使用如mocha一类的东西来进行测试,请确保在package.json中包含它,并且要指明这是你本地项目的字节文件而不是已经发布的mocha。
"scripts": {
 "test": "mocha"
}

5、避免代码的依赖关系

许多节点app使用依赖于C的npm模式,像bson、ws、和hiredis,他们必须为HeroKu的64位Linux系统架构重新编译。这个编辑编译过程很费时。为了使这个过程尽可能快,下载过和编译后HeroKu在节点建立缓存以便在后续使用中被重复使用。这个缓存意味着占用更少的网络流量进行更少的编译。忽略node_modules也是npm模块作者推荐的做法。
echo node_modules >> .gitignore

6、使用环境变量配置npm

来自npm配置文档
任何以npm_config_开始的环境变量将被解释成一个配置参数。例如,把npm_config_foo=bar放在你的环境变量中将把foo放到bar的配置参数中。任何没有被初始化的环境变量将被设置成true。配置值不区分大小写,因此NPM_CONFIG_FOO=bar也能同样的工作。
正如最近被改变的一样,在所有的HeroKu框架中app环境变量设置都是有效地。这种改变使得HeroKu的节点使用者可以控制他们的npm的配置,并且不需要改变他们的程序代码。第七个习惯是一个极好的实例。

7、带着你自己的npm注册表

最近几年公开的npm注册增长的很快,但这伴随着一些不稳定因素。结果很多的节点使用者正寻找可替换的办法,为了同时提高开发周期开发稳定性,或者是为了建立自己的私人节点模块。NodejitsuGemfury提供付过费的私人注册表,并且有一些免费的替代品,例如Mozilla's read-only S3/CloudFront mirrorMaciej Ma?ecki's European mirror.配置你的Heroku节点应用程序来使用一个自定义注册中心是很容易的:
heroku config:set npm_config_registry=http://registry.npmjs

8、跟踪过时的依赖关系

如果你已经从事编程很久了,你可能是dedependency hell。幸运的是Node.js和npm都会对改变进行说明,通过Semantic Versioning Specification。在这种情况下,版本号和他们改变了的实现方式能传达出从一个版本到另一个版本底层是如何实现的。
npm有一个鲜为人知的命令outdated。使用npmupdate,这是一个很好的工具来检测你的app的依赖关系是否已经过时并且需要升级。
cd my-node-app
npm outdated
Package            Current  Wanted     Latest  Location
-------            -------  ------     ------  --------
express              3.4.8   3.4.8  4.0.0-rc2  express
jade                 1.1.5   1.1.5      1.3.0  jade
cors                 2.1.1   2.1.1      2.2.0  cors
jade                0.26.3  0.26.3      1.3.0  mocha > jade
diff                 1.0.7   1.0.7      1.0.8  mocha > diff
glob                 3.2.3   3.2.3      3.2.9  mocha > glob
commander            2.0.0   2.0.0      2.1.0  mocha > commander
如果你工作在开源的节点app或模式上,检查david-dmNodeICO、和shields.io这三大服务,它提供图形包,你能使用它们显示你的工程的README或者是website。

9、使用npm脚本运行自定义构建步骤

随着npm的发展,出现了自动开发构建过程。Grunt是迄今为止世界上最流行的构建工具,但是新工具如gulp.jsplain old npm scripts也同样吸引具有吸引力。
当你部署一个节点qpp到HeroKu上,执行npm install --production命令来确保你的app的npm 依赖包被下载和安装。这个命令有时也可以做其他的事情。它运行你在package.json文件中定义的npm script hooks,例如preinstall和postintall。下面是一个例子:
{
 "name": "my-node-app",
 "version": "1.2.3",
 "scripts": {
   "preinstall": "echo here it comes!",
   "postinstall": "echo there it goes!",
   "start": "node index.js",
   "test": "tap test/*.js"
 }
}
这些脚本可以内联bash命令,或者是参考command-line executables。你也可以参考其他的npm 脚本:
{
 "scripts": {
   "postinstall": "npm run build && npm run rejoice",
   "build": "grunt",
   "rejoice": "echo yay!",
   "start": "node index.js"
 }
}

10、尝试新的东西

Harmony是ES6工作集名字,下一个ECMAScript语言的版本就是人们熟知的JavaScript。Harmony给JavaScript带来了大量的令人兴奋的功能,其中有许多在新一点的版本中已经可以使用了。
Harmony实现了许多新功能像block scopinggeneratorsproxiesweak maps等。
为了在你的节点app中实现新功能,尤其是一个新版本像0.11.x,在你的启动脚本中加入--harmony吧:
{
 "scripts": {
   "start": "node --harmony index.js"
 },
 "engines": {
   "node": "0.11.x"
 }
}

11、Browserify

客户端的JavaScript有一个“面条式代码”的遗留问题,但语言本身不是这样的。缺乏正当的依赖管理使得我们陷入jQuery-plugin copy-pasta这种状态长达数年。多亏了npm,我们正在进入前端复兴:npm注册的疯狂,在浏览器中模式设计的盛行是惊人的。
Browserify是一个了不起的工具,使得节点设计模式能在浏览器中工作。如果你是一个前端开发人员,browserify可以改变你的生活。也许不是今天,也许不是明天,但就在不远的将来了。开始使用browserify吧,查看文章

你的习惯是什么呢?

无论你是否已经在node上编程一段时间了或者是仅仅刚刚开始,都希望你找到有用的方法。如果你有什么好的note习惯要分享,用#node_habits作为标签写文章吧。happy hacking!
原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. JavaScript专业八级测试,你能做对几道?
  2. 使用简单的JavaScript,我们为什么应该抵制ES6
  3. JSON为王,为什么XML会慢慢淡出人们的视野
  4. Web服务性能测试:Node完胜Java
  5. 该不该闭合这些元素?曾经〈br/〉的写法是错误的
  6. Linux应该作为学校基础教育的一部分
  7. 为什么使用"use strict"可以节约你的时间
  8. 什么是最好的编程语言?(怎样才能爱上编程呢?)
  9. 语言们都能干什么
  10. for in 比for loop慢至少20倍
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. 我最喜欢的jQuery插件模板
  2. Javascript模块化编程:AMD规范及require.js用法
  3. 编写更好的jQuery代码的建议
  4. Node初学者入门,一本全面的NodeJS教程
  5. JS学习:JavaScript的核心
  6. JavaScript教程:Airbnb代码规范
  7. 理解JavaScript中的Event Loop
  8. 通过javascript把图片转化为字符画
  9. [译] JavaScript 开发者经常忽略或误用的七个基础知识点

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号