构建 Node.js 应用的 10 个重要的方面 已翻译 100%

oschina 投递于 2012/12/30 08:59 (共 29 段, 翻译完成于 03-08)
阅读 4398
收藏 87
6
加载中

目标

应用程序需要有个明确目标,能帮干活能解决问题。这一点同样可以用于你决定去做的每件事上。目标明确根基夯实,应用程序才会越做越好。明确的目标会帮你闯出出一条如何正确解决问题的道路、也让你在遇到阻碍陷入困境无法前行的时候依然坚定执着着望向远方。。。

王薇
王薇
翻译于 2013/01/06 17:31
4

架构

架构会考虑到源代码的设计,文件排列,程序库/模块使用,他们交织在一起编织出了应用程序。架构形式会随着应用程序的开发不断发生变化,它可能是一个web应用服务器,像express这样的处理静资源比如图片),也可能是一个scheduler/worker pipeline,排队以及处理队列中的项。

王薇
王薇
翻译于 2013/01/06 17:56
4

无论何种目的,都有一些通用的原则应该遵守。

  • 模块化。尽量保证你的代码遵守DRY原则(Don't Repeat Yourself(不要重复自己))。如果你发现你需要在许多不同的地方使用一段相似的代码,通常应该将他们放在一个单独的文件(或模块)的一个函数中,从而形成通用帮助函数集模块。这个模块可以在其他依赖它的地方使用require()函数来加载。这样做的目的不仅仅是防止多次重写相似的功能,并且当你升级功能时,你只需要修改同一个函数即可。
  • 遵守Node规范,尽量保证第三方node模块放在node_modules文件夹下。同时也应该保证node_modules在你的.gitignore里,这样你就不会提交不相干的依赖文件。
  • 分离关系。前端相关的内容(静态CSS,javascript,HTML,模板文件,图片,资源文件)应该与后端应用逻辑(路由,服务器,中间件)分离。同样的,应该将部署脚本,配置文件,数据关系文件和测试文件分开放置。
Jeky
Jeky
翻译于 2013/01/09 19:23
2

部署

你应用到生产环境的方法很大程度上依赖于你堆栈的性质。以下是我们尝试过的一些方法:

  • 手动通过SSH传到服务器和拷贝git仓库。优点:全手动控制,零部署工具设置。缺点:大量服务器时难以实施。所有的事情都需要手动设置,因此你不会得到任何好处,像upstart / initrc supervisation或者没有日志的运行。
  • Capistrano.优点:对于团队开发者来说是标准的流程,只需简单的运行:cap deploy。缺点:难以配置,需要Ruby依赖。
  • Chef 脚本. 优点:通过脚本安装程序。缺点:每次想部署时,需要重启服务器。Chef最常被用于服务器的安装/配置,而不是应用程序部署。
  • Deliver. 当我们厌倦了其他的一些操作时,我们可以使用GoSquared出品的这个部署工具。
    它的灵感来自于Heroku’s的git推送系统的基础部署。你只需要为应用程序配置一个系统用户(那些你需要做的——我们都帮你自动做好了),建立一个基本的分发配置,在工程里运行分发的命令行。它使用git通过SSH把应用程序推送到你的服务器,可以使用 foreman或者equivalent来监听应用程序的启动,复位和恢复。
缪斯的情人
缪斯的情人
翻译于 2013/03/01 20:44
2
并不是一个详尽部署方案的列表可能需要发挥一点创意来构想一个最适合您自个需求解决方案无论采用何种策略,将部署配置文件纳入您的应用程序的源代码版本控制并将部署流程记录您的README文件中都是一个好主意
wilfon
wilfon
翻译于 2013/01/09 20:01
1

配置

几乎每个应用程序都有一些常量和设置需要能被方便地更改常见的有主机,端口号,超时时间,模块选项和错误在一个地方保存这些值将非常有利,可存在一个文件或多个文件中如果这些值足够多这样做可以使他们能更快地被修改而不必花时间在梳理代码以跟踪查找到它

wilfon
wilfon
翻译于 2013/01/09 20:17
1
我之前只是转储配置的设置到一个输出配置属性为对象的文件。这在一个非常特殊的环境下运行良好,比如在生产环境的时候,但随着时间的推移,这开始成为维护的一个瓶颈,变得没有条理性,并且在应用改变时产生了多个文件作为一个基础设施。
缪斯的情人
缪斯的情人
翻译于 2013/03/01 20:57
1

我们可以通过环境配置获得想要的结果,这个想法是指你可以在应用程序运行时修改基于环境的配置值。这个方式很简单,输出一个叫做$NODE_ENV 的shell环境变量包含一个你将要运行程序的环境模式标识。你的应用程序将定制配置的设置,当它启动时使用你定义好的环境。

缪斯的情人
缪斯的情人
翻译于 2013/03/01 21:16
1
环境方面的配置为你提供了贯穿整个应用程序生命周期的更多的灵活性,你应该可以在本地开发和运行你的应用程序,而不需要网络连接(你想要在火车上能够进行?事实上写这篇文章时我正好在火车上),这需要为本地服务指定主机地址和端口号。然后,你可能会希望在部署到服务器之前能够进行测试。这些都需要不同的配置。
缪斯的情人
缪斯的情人
翻译于 2013/03/01 21:25
1
我们一般使用 node-config,一个为工作精确设计的模块。所有你需要做的是在config/default.js中定义配置的值,接下来为你不同的环境建一个文件,包含继承了default.js的默认指令。你设置$NODE_ENV作为环境变量的名字,这个模块会覆盖defaults.js中定义的[$NODE_ENV]属性。导入到你的应用程序合并配置对象,你只需使用require()就可以。
缪斯的情人
缪斯的情人
翻译于 2013/03/01 21:32
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(7)

wnfkwnfk
wnfkwnfk
噢,看完大家的评论才知道原来这篇文章是由多个人翻译的。看文章的时候还想着右侧怎么这么多的翻译人员呢?@红薯 该想办法把这个误导人的东东去掉或蛋化吧……
偃鼠饮河
偃鼠饮河

引用来自“枸杞灌篮大”的评论

@红薯 旁边翻译人员的信息容易分散读者的注意力,如果没有这些翻译者的信息或者淡化这些信息,假如通读下来没有大的错误就没人会发现这篇文章是由多个人翻译的,就会使人感觉这些文章是连续的,不然这么多的段落和翻译人员的信息,看着感觉像是羊屎蛋揉不成团。。

恩,头像有点抢眼,应该去掉头像就会好多了。
simply
simply
写的太好 看不懂了
郑柯
郑柯
好文,不过翻译的不够准确,比如臭虫,我估计就是bug,这个如果还是继续使用英文我估计效果更好。 另外,我一直用手机版看,所以也从来不关注那些干扰信息。
Eeqlee
Eeqlee
...其实我也是一直在看右则翻译人员...结果文章没怎么看就跑下来评论了~囧
ye
ye
我到是觉得挺好的。我看这文章的时候,压根就没看到右边有啥翻译人员,直接忽视掉了。哈哈,你肯定不够专注看文章了
大师兄悟空
大师兄悟空
@红薯 旁边翻译人员的信息容易分散读者的注意力,如果没有这些翻译者的信息或者淡化这些信息,假如通读下来没有大的错误就没人会发现这篇文章是由多个人翻译的,就会使人感觉这些文章是连续的,不然这么多的段落和翻译人员的信息,看着感觉像是羊屎蛋揉不成团。。
返回顶部
顶部