瞎扯淡 用 Node.js 做一个项目的后端,后悔了

wushexu · 2019年07月13日 · 最后由 solos 回复于 2019年08月27日 · 3087 次阅读

本人近一年都在撸一个创业项目,近日终于上线了。

这是一个 英语阅读 的项目,工作量巨大,个中甘苦自不待言。

要说过程中有什么遗憾或者后悔的,就是后端采用了Node.js,后悔没用Ruby。

当时选Node.js有一点原因是它不那么烧服务器,现在看来是想得多了。

大量的静态化、cache使得这个问题微不足道。何况开发效率才是王道。

当时后端不想用那么重的框架,所以也没用什么框架,只用了exprees。用个重的框架还不如RoR呢,反正多多少少都是学RoR。

然而它实在是过于simple,甚至于naive了,导致很多东西都得手撸。包括REST、一些公共的DAO方法。cors、集中的session管理、file upload也要自己实现或集成。

开发效率比RoR低多了,真是无限怀念RoR的Active Record,REST API。

js这样弱类型不适合稍大一些项目的开发。没有强制的API契约,IDE/jsLint起不了作用(btw,TS真香)。

大量的async/await,错误处理要非常小心。简单的try/catch是不行的,哪有rescue/ensure省事呢。

我今天就吐槽一下。

共收到 25 条回复

用了 eggjs,一些常用的库,比如 cache,ruby 的库可能几千 commit,现在还活跃开发中,eggjs 的几个到二三十个,而且发布后基本就没有更新了。

开发起来还是 ruby 比较爽,毕竟初衷是一个让人快乐的语言。

没有iOS的吗

tmr 回复

没有。有微信版

wushexu 回复

关注了👍

Rails、ActiveRecord 的很多特性,其他语言不是想模仿就能模仿的,尤其是 Node.js,因为他们缺少 Ruby 那种丰富的动态性。

还用过一个框架叫 sails,用起来也非常难受,尤其是它的 model 层。

greatghoul 回复

node的web框架太多,让人眼花缭乱,始终没有杀手级的。上面说得对,根源在于动态性,而model层是对动态性要求最高的。

曾经听过一个分享,在一个用 koa 做后端的网站上实现 I18n……那时候我就震惊 node.js 生态需要从这么原始的地方写起。类比 Ruby 就是从 Rack 开始实现自己需要的 Rails 功能。

Rei 回复

koa是非常小的框架,只负责管理middleware,连routing都没有。相对来说express要完整一些,不过没有model层,没有CoC,没有generator。

wushexu 回复

真有不少人信了它官网“next generation web framework for node.js”的标语,GitHub README 倒是写“middleware framework for node.js to make web applications”。

Rack 就是 “middleware framework for Ruby to make web applications”

fastify 推荐下这个 nodejs 框架,比如说做个中间层或应用接口层。比较重的项目建议还是 Rails. 用了 nodejs 后会发现蛮多都得自己造轮子或者拿来的轮子相对没有 ruby 生态这么完善,使用体验上没有 Rails 这么爽。

Rei 回复

我最近录制 Node.js 教程里面写的

因为要发布视频出去的,所以我已经说的非常客气了。。。koa,什么鬼玩意嘛?一些国内站点文章要舔上天了。真的感觉只有国内在关注koa,koa 连 generator 都是国人搞的。

Express generator 建项目,加上 Sequelize Cli 搞 ORM。有类似于 Rails的开发体验,也可以命令生成 模型、迁移、seeds等等,然后跑命令自动建表,填充数据,设置关联模型。但论完善性,和 Rails 还差得远。

nodejs的应用库也有很多坑,很多应用包都没标准而且版本比较乱;

canonpd 回复

哈哈,实在看不出koa有什么好。async?我用express一直都是async。据说koa封装了request和response,而express直接暴露了node.js的http核心库的request和response。暴露有什么不好?有什么必要封装。

whong 回复

node.js有很多非常小的库,要搁别的语言都不好意思提交的。还是因为提交一个新包太容易了

和 Sinatra 比感觉如何?

ecnelises 回复

express 可以对标 sinatra

typeorm 也勉强可以当 Active Record 用 https://github.com/typeorm/typeorm

不太明白为啥node圈里express和koa这么受推崇,我记得当年学习后端的时候比来比去,觉得hapi最完善,所以毅然从hapi入手,现在想想,当时幸好没从express入手,要不然肯定学的七零八碎的。

能上RubyChina应该都不会傻到用其他语言去写后端,项目方指定语言的除外。

样式挺漂亮的

不得不说ruby的并发性能不如node

jetspeed 回复

各方面性能都不如,但架不住用着爽。而且前期也没几个用户,考虑性能干啥呢😂

nodejs异步这个很恶心

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册