在本文中,我们主要介绍应用模块的内容,自我感觉有个不错的建议和大家分享下
标目
应用序程须要有个确明标目,能帮干活能解决题问。这一点一样可以于用你定决去做的每件事上。标目确明础基夯实,应用序程才会越做越好。确明的标目会帮你闯出出一条如何准确解决题问的途径、也让你在到遇妨碍陷入困境没法前行的时候仍然坚决执着着望向远方。。。
王薇
翻译于 2个月前
1人顶
顶 翻译的不错哦!
架构
架构会虑考到源代码的计设,文件排列,序程库/模块用使,他们交织在一起编织出了应用序程。架构式形会随着应用序程的开辟一直生发化变,它是能可一个web应用服务器,像express这样的处置静态资源(比如片图),也是能可一个scheduler/worker pipeline,排队以及处置列队中的项。
王薇
翻译于 2个月前
1人顶
顶 翻译的不错哦!
无论何种标目,都有一些通用的准则应当守遵。
- 模块化。尽量保障你的代码守遵DRY准则(Don't Repeat Yourself(不要重复自己))。如果你现发你须要在多许不同的地方用使一段相似的代码,常通应当将他们放在一个独自的文件(或模块)的一个函数中, 从而成形通用助帮函数集模块。这个模块可以在其他赖依它的地方用使require()函数来载加。这样做的标目不仅仅是止防多次重写相似的功能,并且当你级升功能时,你只须要修改同一个函数便可。
- 守遵Node准标,尽量保障第三方node模块放在node_modules文件夹下。同时也应当保障node_modules在你的.gitignore里,这样你就不会提交不相干的赖依文件。
- 分离关系。前端相干的内容(静态CSS,javascript,HTML,模板文件,片图,资源文件)应当与后端应用逻辑(路由,服务器,中间件)分离。一样的,应当将署部脚本,置配文件,数据关系文件和测试文件离开放置。
Jeky
翻译于 1个月前
0人顶
顶 翻译的不错哦!
署部
你应用到产生境环的法方很大程度上赖依于你栈堆的质性。以下是我们试尝过的一些法方:
- 手动通过SSH传到服务器和拷贝git库仓。长处:全手动制控,零署部工具置设。点缺:量大服务器时难以施实。有所的事件都须要手动置设,因此你不会到得任何利益,像upstart / initrc supervisation或者没有志日的行运。
- Capistrano.长处:对于团队开辟者来讲是准标的程流,需只单简的行运:cap deploy。点缺:难以置配,须要Ruby赖依。
- Chef 脚本. 长处:通过脚本装安序程。点缺:每次想署部时,须要重启服务器。Chef最常被于用服务器的装安/置配,而不是应用序程署部。
- Deliver. 当我们厌倦了其他的一些操纵时,我们可以用使GoSquared出品的这个署部工具。
它的灵感来自于Heroku’s的git推送系统的础基署部。你只须要为应用序程置配一个系统用户(那些你须要做的——我们都帮你主动做好了),立建一个基本的发分置配,在工程里行运发分的命令行。它用使git通过SSH把应用序程推送到你的服务器,可以用使 foreman或者equivalent来监听应用序程的动启,复位和恢复。
缪斯的恋人
翻译于 7天前
1人顶
顶 翻译的不错哦!
这
其实不是
一个详实
的
署部
筹划的列表
,
你可能须要挥发一点创意来想构一个最适合您自个需求的
解决
筹划
。
无论
你
用采
何种
略策
,将署部置配文件入纳您的应用序程的源代码版本制控
并将署部程流记载
在
您的
README文件
中都是一个好主意。
wilfon
翻译于 1个月前
0人顶
顶 翻译的不错哦!
置配
几乎个每应用序程都有一些常量和置设须要能被便方地变动。见常的有主机名,端口号,超时间时,模块选项和错误。在一个地方保存这些值将非常利有,可存在一个文件或多个文件中,如果这些值充足多。这样做可以使他们能更快地被修改,而不必花间时在梳理代码以踪跟查找到它们。
wilfon
翻译于 1个月前
0人顶
顶 翻译的不错哦!
缪斯的恋人
翻译于 7天前
0人顶
顶 翻译的不错哦!
缪斯的恋人
翻译于 7天前
0人顶
顶 翻译的不错哦!
缪斯的恋人
翻译于 7天前
0人顶
顶 翻译的不错哦!
缪斯的恋人
翻译于 7天前
0人顶
顶 翻译的不错哦!
志日,度量和监测
你想给自己充足的应用的不常正行为的证据,以至于你就够能在尽可能很少的间时内使‘b0rked’为变”有所错误经已正修“。一个最好的法办是赖依志日。 常通的前提是,如果到得了错误,记载它。你必须从遵node的错误处置则规,在Callback的第一个章节经已预设了当一个错误生发时的错误信息:
1 | makeRyanDahlProud( function (err, result){ |
2 | if (err){ |
3 | console.log(err); |
4 | } |
5 | }); |
daishulzd
翻译于 3天前
0人顶
顶 翻译的不错哦!
daishulzd
翻译于 3天前
0人顶
顶 翻译的不错哦!
enixyu
翻译于 2天前
0人顶
顶 翻译的不错哦!
指标
应用指标为我们供给了有效的信息,以便看查应用在做什么操纵和这些操纵的间时间隔。它给我们供给一个要重的门路去检测异常的事件,瓶颈还有充扩压缩筹划的参考。我将这些归结到一个小的模块,叫做abacus,它可以助帮我们维护计数器的合集,并通过statsd把它们以可视化图绘式形描写到graphite。实践证明,保障应用在给定的参数下行运时非常便方。
enixyu
翻译于 2天前
0人顶
顶 翻译的不错哦!
监测
监测并非是必须的,但是监测是一个很好的门路,让我们解了行运应用的服务器的资源用使率。另外的期早告警系统,一样非常要重,可以让我们免避一些初级题问而致使的应用崩溃。没有比服务器硬盘空间足不而致使的应用崩溃,或者CPU用使超越载负而崩溃,而更让人困顿。
在现有量大的监测工具或者服务:开源的有Ganglia, Monit, Sensu ,还有SaaS服务ServerDensity, NodeTime and NewRelic 。
enixyu
翻译于 2天前
0人顶
顶 翻译的不错哦!
容错
在署部的时候也须要虑考的,就是你还须要虑考如果你的应用崩溃后,将会生发什么。应用最好在系统监测序程下受控,例如Ubuntu的upstart。置配upstar分十碎琐,但可以在应用崩溃时,处置开始,结束,和重启,所以还是值得的。Foreman有一个出导功能,可认为你的foreman-backed应用生成upstar置配。
enixyu
翻译于 2天前
0人顶
顶 翻译的不错哦!
enixyu
翻译于 2天前
0人顶
顶 翻译的不错哦!
效率和可伸缩性
许也在开始阶段我们很少虑考,但随着你的应用的生长,务事压力会一直增大,你许也须要虑考让应用变得更高效,甚至是可伸缩性。这里存在的险风是过早的优 化。你不须要心担让你的应用具有超强的可伸缩性或者具有级超性能,因为在真正对面这么高的载负的之前,你为什么为此而恼苦呢?你还是把最名贵的间时放在核 心组件的构建上,或者"最小的可行性",就如,刚开始动启,少至先达到须要展扩的阶段。
enixyu
翻译于 昨天(22:54)
0人顶
顶 翻译的不错哦!
enixyu
翻译于 昨天(23:00)
0人顶
顶 翻译的不错哦!
有时候最直接的谜底是把应用迁移到具有充足资源的服务器上。如果这对于你来讲,是可行的,那么务任就比在多节点上从新架构你的应用要单简的多,但是如果应用加增速度很快,那这个可不是最好的解决筹划。但是这个法方可能会消费你量大的间时去构建。
在多个服务器上横向展扩应用,是一个辣手的筹划,并且引入量大的错误,但是期长来讲却带来生命力和人令入神的技巧挑战。
enixyu
翻译于 昨天(23:11)
0人顶
顶 翻译的不错哦!
文档和组内协作
一个应用如果没有文档,就像一个包装盒没有说明书一样。你可以找出须要做什么,但这样做是拙笨的,浪费间时和不精确的。最好你能供给晰清的文档描述,要简 说明你的代码。这样做不单单是助帮其他人很快的上手和速快的开辟,而且还能助帮你在六个月后从新拾起这个应用,修复臭虫。
enixyu
翻译于 昨天(23:17)
0人顶
顶 翻译的不错哦!
enixyu
翻译于 昨天(23:25)
0人顶
顶 翻译的不错哦!
个每应用序程都应当包含一个README[MD],其中含包有所须要道知是应用序程常正务任的细节。常通这包含:
- 应用序程其标目的短简说明
- 装安说明
- 动启说明
- 测试说明
- 如何署部
- 其他须要道知的点
我们须要一个模块提早代码里的注释并生成清洁,有吸引力的文档。我们会用使一个叫
的模块在我们的app中。
lidashuang
翻译于 6天前
0人顶
顶 翻译的不错哦!
测试
前以我压根没有认识到测试有如许要重,也没有被(QA)烦过。是能可因为我(太牛了)从来没有到遇这样悲催的情况:多年当前,之前开辟的应用开始出题问 了,你没法保障哪分部还常正务任,哪分部就快瘫了。可是在现,经历过这些狗血的事件后。我道知,我们须要测试,我们须要大伟的QA!!!
王薇
翻译于 2个月前
0人顶
顶 翻译的不错哦!
enixyu
翻译于 昨天(23:32)
0人顶
顶 翻译的不错哦!
enixyu
翻译于 昨天(23:38)
0人顶
顶 翻译的不错哦!
enixyu
翻译于 昨天(23:43)
0人顶
顶 翻译的不错哦!
赖依
Node具有一个壮大的模块系统和被称为npm的包管理工具,npm能助帮你无缝的集成各种模块到你的应用中。npm给你供给了一个非常丰富的开源模块的目录 引索,你可以找到你想要的。
wilfon
翻译于 1个月前
0人顶
顶 翻译的不错哦!
文章结束给大家分享下程序员的一些笑话语录: 一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。