Express 框架对企业应用仍显不足
发布于 8 个月前 作者 VsterLong 2153 次浏览 来自 分享

以下纯属个人观点,如有错误,欢迎交流。

业务背景:
1. 能进行 MQTT 消息订阅,然后进行数据存储,以及利用 MQTT 向前端进行消息推送
2. 构建 Restful Web Api 
3. 公司现在仍在使用 MSSQL

Node 选择了弱类型 javacript 作为第一线编程语言,懂Javascript的人确实不少(不谈论懂的深度)。花了一周时间摸清了 Express 的骨架之后,node 的事件循环机制,js的异步编程思想,的确让我眼睛一亮,大叹一声原来还可以这样子做,并双击666。对于高IO和低CPU的需求来说,从 node 的角度来看,node 确实不错。
然而,在我看来,node + express 这套组合拳,打得却不是那么好。
首先,javascript 的弱类型性质,在服务器端这种相对前端比较严谨、容错性低的环境下,对生产环境来说,并不是每个会 js 的人都能够驾驭的住。仅仅对类型而言,强类型语言虽然对很多人来说有点限制,但也不是没有好处,例如在 VS2017 看到的 Node API 定义,全部都是 typescript,参数类型,返回类型,让人读起来确实一清二楚,例如 fs.readFile() 的定义:

image.png 其二,虽说 npm 拥有很强大的社区,有很多的开源组件,但是能够镇得住脚的组件又有多少,例如对 MSSQL 支持的组件就很少,能够完全支持 MSSQL 的基本没有。在默认的组件bodyParse中,文件上传在 StackFlow 上曝出不安全,但是官方仍在默认组件中使用。

Node 确实很优秀,但是围绕于 Node 的生态还需努力。
18 回复

node已经沦为前端工具链,给vue,react什么的打下手

坐等大佬分析

@yakczh 其实是现在前端要求技能太多了

node感觉写起来、用起来还是挺爽的,无所不能

要点

  • MSSQL。。。用户量太小,兼容也没太多必要,win用户就算了
  • MQTT有好多Node现成的实现,作者是Node TC里的大牛,很好
  • Restful 几行代码的事儿
var express = require('express');
var router = express.Router();

var $ = require('../controllers/users_controller');


// -- custom


/**
 * Auto generate RESTful url routes.
 *
 * URL routes:
 *
 *  GET    /users[/]        => user.list()
 *  GET    /users/new       => user.new()
 *  GET    /users/:id       => user.show()
 *  GET    /users/:id/edit  => user.edit()
 *  POST   /users[/]        => user.create()
 *  PATCH  /users/:id       => user.update()
 *  DELETE /users/:id       => user.destroy()
 *
 */

router.get('/new', $.new);  
router.get('/:id/edit', $.edit);

router.route('/')
  .get($.list)
  .post($.create);

router.route('/:id')
  .patch($.update)
  .get($.show)
  .delete($.destroy);


module.exports = router;
  • 弱类型有ts,黑不到点上
  • 上传有multer,另外上传方式可以按情况处理

在我看来用node写后端, 很多会js的人很难驾驭这是很正常的事情啊. 就跟用java写web服务和写app一样, 本来就是不同的范畴, 拥有不同的思想.

弱类型写后端其实是很爽的事情, 只不过要求开发者必须事事都明白自己在做什么, 这样才能写出层次分明, 简洁易维护的代码. 我相信那些像我一样静态语言写了几年再去用node写后端的人都会爽到. (前提是能喜欢起node哈)

看你用VS2017, VS拥有最好的调试工具, vscode把同样很爽的调试体验带给了node.

我之前用静态语言的时候用过MSSQL, 现在已经不用了. 现在node连的都是mysql, postgres, mongo. 现在用的sequelize库, 我看是支持MSSQL的, 不知道你用了没.

ts感觉还是差了一点。不支持运行时检查类型的话,还是不够严谨。

试试这个 > https://enhancer.io 看看能否帮你节约时间?

nodejs操作MSSQL 确实没遇上,不过操作mysql,mongodb,redis之类的。。。没遇上什么大坑(当然和公司业务有关)。。

使用 NodeJS 连 MSSQL 可以用微软官方提供的driver:https://github.com/patriksimek/node-mssql 另外如果 enhancer.io 可以让你只需要打开浏览器写 MSSQL 就能完成企业级应用开发,可以尝试一下。

sequelize连MSSQL一点问题没有(虽然我没用过,但sequelize连mysql很爽)

说白了就是工具,用的恰到好处就行 --采用Cnode VueJs --github地址

sequelize连MSSQL一点问题没有 +1

sequelize 这东西为什么难用。。

@yefeng2016 快使用 sequelize-typescript + sequelize-auto-migrations

回到顶部