Node.js从入门到精通 Node.js做后端的使用详解
沉沙 2018-07-25 来源 : 阅读 1244 评论 0

摘要:本篇Node.js教程探讨了Node.js做后端的使用,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

本篇Node.js教程探讨了Node.js做后端的使用,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

 

当前一个web portal项目,我用node.js写就,大概有2个月了,后面还会继续迭代开发。总结一些心得。

· 多数团队还是主要用node.js的npm作为工具仓库,用node.js本身做核心业务支撑的比较少。确实npm发展的越来越好,早已超过cpan成为第一大open source repository了

· node.js的门槛。这个主要还是看对js的兴趣,写惯js的当然怎么都顺眼,而多年C++的人看到弱类型变量就别扭。就node.js本身,如果不是探寻底层eventlib之类架构的话,js基础知识肯定够用了。标准Ecmascript就行,ES6不是全部都支持

· node.js的便利性。其实说白了就是npm的便利性,这个简直是机器猫的四维兜,要什么伸手就行。时间处理,安全连接,异步任务,数据库操作,web爬虫,定时调度什么的,真是应有尽有。而且很多应用服务商提供的api接口,都有node版本,或者说java,python,node三接口已经是标配了,缺一个就缺了一大块火热用户群。例子就很多了,比如amazon aws,统一支付网管ping++等等。而且现有的成熟js库都可以直接使用,比如underscore,moment

· 框架选择。相比java的spring/play,c++的STL,php的thinkphp,python的django/tronado,甚至perl古董级的catalyst,它们要么一统天下,要么多年就一两个,node简直就得了选择困难症。各种框架,前端后台,我感觉一个月出一个也不为夸张。不说angular/vue/react/backbone等面向移动端的,就后端来说除了经典的express.js,还有koa.js为代表的各种后起之秀。最近阿里也开源了一个egg.js。用什么框架,第一要看是否有人维护,是否长期和稳定。还要从用户热度(其实也可以说是google结果量),文档难度,插件和扩展各方面考虑。过于小众的,github上可能久不更新,最新issue都是陈年的。如果团队里新手较多或者业务比较重要,还是建议以exress.js入手。经典,用户基础大,出了异常有的搜,这有点儿像mysql,久经考验

· 性能问题。关于单线程的javascript能否支撑QPS等吞吐,这个网上有各种压力测试。请根据实际环境自行mock测试,不要贸然上线。我的这个项目,由于是内部用户使用,所以不存在性能问题,node的eventloop机制可以很好的支撑并发请求

前面说了一些泛泛而谈的,就express.js来说,我还有以下具体建议:

· 如果拿spring来类比,express似乎不是那种DI/IOC容器,需要自行require模块,这个也是ecmascript标准。至于AOP就很简单了,app.js里有各种中间件,其实就是自定义的函数,比如拦截登录做分析等等,比spring还简单

· 可以做前后端分离,也可以大包大揽。如果是后者,那么需要选择page template。我选择的是默认的jade(现在叫pug),因为我写惯python了所以对缩进很喜欢。如果想要更原生html的可以选择其他如EJS。前端框架用的是JADE-Bootstrap,一个印度大叔写的,github上回应了我一次issue,问了下情况,后来就没touch了

· 数据库,我们的数据源是aws redshift,类似于postgre,所以采用了pg-promise,很好的异步模式

· 信息提示,用的默认的connect-flash,这个在做一些错误提示上还是很好用的

· 循环日志可以用file-stream-rotator

我的pakage.json如下

 

{

  "name": "某个项目",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "start": "node ./bin/www"

  },

  "dependencies": {

    "body-parser": "~1.15.2",

    "cookie-parser": "~1.4.3",

    "debug": "~2.2.0",

    "express": "~4.14.0",

    "jade": "~1.11.0",

    "morgan": "~1.7.0",

    "serve-favicon": "~2.3.0",

    "pg": "latest",

    "express-session": "latest",

    "express-validator":"latest",

    "connect-flash": "latest",

    "jade-bootstrap": "latest",

    "promise": "~6.1.0",

    "pg-promise": "latest",

    "express-logger": "latest",

    "file-stream-rotator": "latest",

    "util": "latest",

    "string-format": "latest",

    "bluebird": "latest",

    "date-and-time": "latest",

    "underscore": "latest",

    "underscore.string": "latest",

    "request": "latest",

    "node-schedule": "latest"

  }

}

 

 本文由职坐标整理发布,学习更多的Node.js相关知识,请关注职坐标WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程