Node的十个技巧

作者 : 开心源码 本文共3793个字,预计阅读时间需要10分钟 发布时间: 2022-05-12 共184人阅读

从问世到现在将近20年,JavaScript一直缺乏其它有吸引力的编程语言,比方Python和Ruby,的很多优点:命令行界面,REPL,包管理器,以及组织良好的开源社区。感谢Node.js和npm,现如今的JavaScript鸟枪换炮了。Web开发者有了强大的新工具,接下来就看他们的想象力了。

下面这个提醒和技巧清单,能让你和你的node程序保持快乐。

1. 用npm init开始新项目

npm有个init命令,可以引导你完成创立package.json文件的过程。即使你非常熟习package.json和它的属性,也可以把npm init当作将你的新程序或者板块导入正轨的简便办法。 它可以聪明地为你设置默认值,比方通过上层目录的名称推断板块名,从~/.npmrc中读取创作者的信息,以及用你的git设置确定代码库。

mkdir my-node-appcd my-node-appnpm init</pre>

2.公告所有依赖项

在将板块安装到项目本地时坚持使用–save (或者 –save-dev)是个好习惯。这些选项会将指定的板块增加到package.json的dependencies(或者devDependencies)清单中,并使用正当的默认semver范围。

npm install domready –save
</pre>

注意,现在npm使用插入符风格的semver范围:

"dependencies": {  "domready": "^1.0.4"}</pre>

3.指定启动脚本

在package.json中设定scripts.start,你即可以在命令行中用npm start启动程序了。这个非常方便,由于克隆了你的程序的其余node开发人员不用猜就能轻松运行它。

额外奖励:假如在package.json中定义了scripts.start,你就不需要Procfile了(Heroku平台用Procfile来公告在你程序的dynos上运行什么命令)。使用npm start会自动创立一个作为web进程的Procfile。

这里有个启动脚本示例:

"scripts": {  "start": "node index.js"}</pre>

4.指定测试脚本

就像团队中的所有人都应该可以运行程序一样,他们也应该可以测试它。package.json中的scripts.test就是用来指定运行测试套件的脚本的。假如你用mocha之类的东西运行测试,肯定要确保把它包含在package.json里的devDependencies中,并且指向安装在你项目本地的文件,而不是全局安装的mocha:

"scripts": {  "test": "mocha"}</pre>

5.不要把依赖项放在源码的版本控制中

很多node程序使用的npm板块带有C语言写的依赖项,比方bson、ws和hiredis,这些依赖项必需在Heroku的64位Linux架构下进行编译。编译过程可能非常耗时。为了让构建过程尽可能的快,Heroku的node buildpack在下载和编译完依赖项后会缓存它们,以便在后续部署中重用。这个缓存是为了降低网络流量并减少编译次数。

忽略node_modules目录也是板块创作者推荐的npm实践。应用程序和板块之间少了一个区别!

echo node_modules >> .gitignore</pre>

6.用环境变量配置npm

以下内容摘自npm配置:

所有以npm_config_开头的环境变量都会被解释为配置参数。比方说环境中有npm_config_foo=bar时,会将配置参数foo设置为bar。任何没有给出值的环境配置的值都会设置为true。配置值对大小写不敏感,所以NPM_CONFIG_FOO=bar也一样。

最近在所有的Heroku构建中都有程序的环境。这一变化让Heroku上的node客户无需修改程序代码即可以控制他们的npm配置。习惯#7是这一方式的完美例证。

7.带着你自己的npm注册中心

最近几年公共npm注册中心出现了突飞猛进式的增长,因而会偶尔不稳固。所以很多node客户开始寻求公共注册中心之外的方案,他们或者者是出于开发和构建过程中速度及稳固性方面的考虑,或者者是由于要放置私有的node板块。

最近几个月冒出了少量可供选择的npm注册中心。Nodejitsu和Gemfury提供收费的私有注册中心,此外也有少量免费的,比方Mozilla的只读S3/CloudFront镜像和Maciej Ma?ecki的欧洲镜像。

在Heroku上配置node程序使用定制注册中心很容易:

heroku config:set npm_config_registry=http://registry.npmjs.eu</pre>

8.追踪过期的依赖项

假如你编程的时间足够长,可能已经领教过相依性地狱的厉害了。好在Node.js和npm接纳了semver,即 语义化版本管理规范 ,设置了一个健全的依赖项管理先例。在这个方案下,版本号和它们的变化方式传达的含义涉及到了底层代码,以及从一个版本到下一版本修改了什么。

npm有一个很少有人知道的命令,outdated。它可以跟npm update结合使用,能够找出程序的那些依赖项已经过期了,需要升级:

cd my-node-appnpm outdatedPackage            Current  Wanted     Latest  Location-------            -------  ------     ------  --------express              3.4.8   3.4.8  4.0.0-rc2  expressjade                 1.1.5   1.1.5      1.3.0  jadecors                 2.1.1   2.1.1      2.2.0  corsjade                0.26.3  0.26.3      1.3.0  mocha > jadediff                 1.0.7   1.0.7      1.0.8  mocha > diffglob                 3.2.3   3.2.3      3.2.9  mocha > globcommander            2.0.0   2.0.0      2.1.0  mocha > commander</pre>

假如你做的是开源的node程序或者板块,可以看看david-dm,NodeICO和shields.io,你可以用这三个优秀服务所提供的图片徽章在项目的README或者网站上显示生动的依赖信息。

9.用npm脚本运行定制的构建步骤

随着npm生态系统的持续增长,开发和构建过程的自动化选择也会随之增长。Grunt是迄今为止node世界中最流行的构建工具,但像gulp.js这种新工具,以及普通的老式npm脚本也由于较轻的负载受到欢迎。

在你把node程序部署到Heroku上时,要运行npm install –production命令以确保程序的npm依赖项会被下载下来装上。但那个命令也会做其它事情:它会运行你在package.json文件中定义的所有npm脚本钩子,比方preinstall和postinstall。这里有个样本:

{  "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"  }}</pre>

这些脚本可以是行内bash命令,或者者也可以指向可执行的命令行文件。你还可以在脚本内引用其余npm脚本:

{  "scripts": {    "postinstall": "npm run build && npm run rejoice",    "build": "grunt",    "rejoice": "echo yay!",    "start": "node index.js"  }}</pre>

10.尝试新东西

ES6,也就是被大众称为JavaScript的ECMAScript语言规范的下一版,其工作名称为Harmony。 Harmony给JavaScript带来了很多振奋人心的新特性,其中很多已经出现在较新版本的node中了。

Harmony实现了很多新特性,比方块作用域、生成器、代理商、弱映射等等。

要在你的node程序中启用harmony的特性,需要指定一个比较新的node引擎,比方0.11.x,并在启动脚本中设置–harmony选项:

{  "scripts": {    "start": "node --harmony index.js"  },  "engines": {    "node": "0.11.x"  }}</pre>

11. Browserify

用户端JavaScript有乱如麻团般的遗留代码,但那并不是语言本身的错。因为缺乏正当的依赖项管理工具,让jQuery-插件拷贝-粘帖的黑暗时代延续了好多年。感谢npm,带着我们步入了前台振兴的年代:npm注册中心像野草一样疯长,为浏览器设计的板块也呈现出了惊人的增长势头

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:582735936,不论你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天升级视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Node的十个技巧

发表回复