以下纯属个人观点,如有错误,欢迎交流。
业务背景:
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() 的定义:
其二,虽说 npm 拥有很强大的社区,有很多的开源组件,但是能够镇得住脚的组件又有多少,例如对 MSSQL 支持的组件就很少,能够完全支持 MSSQL 的基本没有。在默认的组件bodyParse中,文件上传在 StackFlow 上曝出不安全,但是官方仍在默认组件中使用。
Node 确实很优秀,但是围绕于 Node 的生态还需努力。
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的, 不知道你用了没.
eggjs+TS
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 使用 knexjs
@htoooth 使用bookshelf
@yefeng2016 快使用 sequelize-typescript + sequelize-auto-migrations