博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js做后端的使用总结
阅读量:5134 次
发布时间:2019-06-13

本文共 2368 字,大约阅读时间需要 7 分钟。

当前一个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"  }}

 

转载于:https://www.cnblogs.com/elsonwe/p/6617786.html

你可能感兴趣的文章
android Dialog&AlertDialog
查看>>
如何实现一个php框架系列文章【2】实现类的自动加载
查看>>
js中(function(){…})()立即执行函数写法理解
查看>>
Humble Numbers(丑数) 超详解!
查看>>
游戏中敏感信息过滤
查看>>
计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法
查看>>
每周.NET前沿技术文章摘要(2017-05-10)
查看>>
AngularJS集合数据遍历显示
查看>>
sl学习疑问
查看>>
老李分享:android手机测试之适配(1)
查看>>
彻底理解position与anchorPoint - Wonderffee's Blog(转)
查看>>
C# 读取EXCEL文件的三种经典方法
查看>>
记错严格管理时间---记一次老师讲的学习方法
查看>>
02: DOM 实例
查看>>
nisi 脚本示例
查看>>
连接Linux服务器操作Oracle数据库
查看>>
JavaBean到底是个什么东西
查看>>
Html input file控件使用accept过滤 限制的文件类型
查看>>
赛道对比测试高尔夫6/7 全面解析后悬架
查看>>
右侧悬浮菜单
查看>>