因为在 OSX 和 Windows 系统中,MyClass.js 和 myclass.js 没有任何区别,Linux 则会区分。所以为了你写的代码在不同操作系统是可移植的(在使用 require 来引入模块确保语句是一致明确的),所以始终保持小写 - my-class.js
智能的.npmrc 和正确的版本管理做法默认上, npm 在安装新的依赖的modules,默认不会加入到package.json中。同时,modules的版本号不是严格锁死的(^尖角号来确保大版本保持一致)这样会造成一些问题,如在发布时才发现没有把依赖写入到package.json中,造成线上缺少必要的模块,线上部署发现用的不是相同的modules,导致莫名其妙的问题和大量的depricated warning警告。
所以安装新依赖推荐这样的写法:npm install foobar --save --save-exact
或者写入.npmrc 这样下次 npm install 就不会犯错啦
$ npm config set save=true $ npm config set save-exact=true $ cat ~/.npmrc
当然啦,如果如果希望更灵活的依赖控制,可以通过 npm shrinkwrap 命令生成 npm-shrinkwrap.json 加入到版本库中,这样在build环境构建也能保证版本统一。
及时更新依赖上面的版本锁死让你面对依赖模块的时候更加从容,但是要记得保持定期更新依赖,从而获得修复bug和性能优化功能完善的更新。可以每周利用 npm outdated 或 ncu 工具包
选择合适的数据库大部分新的noder,在选择数据库,喜欢选择Mongodb。它的确很不错,但是 Mongodb 不是唯一的选择、
你应该根据你的应用场景来选择:
你的数据是否结构化的
你的数据操作是否要支持事务
你数据是否需要持久化
从而选择不同的数据库:如 PostgreSQL, Redis, LevelDB 等等
监控你的应用程序你要对你的线上应用的运行状况了如指掌(CPU,Memory,日志等),对一些突发情况需要及时获得通知。
很多开源项目和SaaS产品都提供完善强大的监控服务,如Zabbix, Collectd, ElasticSearch 和 Logstash. 甚至结合Cabot给微信公众号发消息提醒等等
现在的JavaScript的工具链有大量的选择: Grunt, Gulp, Webpack等。譬如在团队里,我们选择 Webpack 来辅助前端开发,gulp用来处理大量其他的自动化任务(你的shell脚本也可以通过gulp-shell集成进来)。当然我们也推荐使用 vanilla build (尤其你可以结合 npm lifecycle hooks 完成很多事)
NPM 生命周期钩子提供了很好的钩子来使得一些task实现的很优雅,我们的脚手架大量使用了这样的技巧
"postinstall": "bower install && grunt build", "postinstall": "if $BUILD_ASSETS; then npm run build-assets; fi", "build-assets": "bower install && grunt build" # 如果脚本变复杂可以单独文件: "postinstall": "scripts/postinstall.sh” (sh 脚本中会自动可以访问到 ./node_modules/.bin 中的命令,因为该路径被加入到 $PATH)
管好垃圾回收v8默认使用 lazy 和 贪婪的 GC. 有时候等到1.5GB 自由才去回收未被使用的内存 (所以有时候内存涨不是因为泄露还是node’s usual lazy behavior)
所以你不想自己的node应用经常把服务器的内存占满(或者你不得不调整,因为你的机器可用内存没那么多),试着使用下面的命令/proc 文件来启动 node 服务(推荐写在 .pm2config 中,正如脚手架推荐的)
web: node --optimize_for_size --max_old_space_size=920 --gc_interval=100 server.js
使用长期支持的 Node.js 版本如果你需要在不同项目中工作,并且不同项目用的node版本还不一样,可以使用 node version manager(nvm)
使用语义化的版本号通过三段版本数来确保把兼容性声明好。 major.minor.patch 这样的格式,不同级别的升级对API更新的要求也是不一样的。可以通过semantic-release 来让版本升级更加自动化
持续学习和跟上潮流JavaScript 和 Node.js 社区异常活跃,的确是件好事。每周都有新的工具新的理念的加入,让我们始终保持热情和技术的提升(警惕自己变成跟风狗,要取色和了解每个新东西背后的不变的本质),不要待在自己的蜜罐中,要动手做试验和学习。以下资料:
Node.js Weekly Newsletter
Microservice Weekly Newsletter
Changelog Weekly - for Open-Source news
下面关于Node.js的内容你可能也喜欢: