技术解析

有没有用 node 写后端的?
0
2021-06-09 20:04:01
idczone
大家有没有用 node 写后端的?最近用 koa 结合 ioredis,sequelize,winston 写了个玩具,写起来挺快的,有没有用 node 写生产环境后端的?通常你们结合 typescript 开发吗?尝试添加了下 types美国服务器cript,感觉代码有点乱了,类型声明可用可不用,有的库需要安装 types 有的又不需要,有的库又没有 ts 声明文件
用 egg

Nestjs 写舒服得多。

https://github.com/hantsy/nestjs-sample

写 node 后端三年,node 写起来确实很爽,但是项目一大维护起来就困难,尤其是多人开发的情况
所以上 ts 是明智的

ts 一开始写着还挺好的,后来写着写着发现。。。那我干嘛不直接写 java 。。。

是呢,我也这么想,为啥我不直接上 java 这种

工程化还是建议用 nestjs,egg 这些

云函数用 node 算吗?

说实话,不太喜欢 nest.js 的风格,egg 貌似网评不好

不太喜欢 nest 的风格

因为 AWS Lambda 用 Node 速度最快,支持最全,所以用 Node 。
但我想的是既然需要编译,何不直接用现成的语言,比如 Java,非得另行开发个 TS 呢?

NestJS 很大程序上利用了 Angular 的成果,对于大型项目,组织代码太重要了。

最近遇到比较坑的,我的 NestJS 例子配置了依赖自动更新,Mongoose 更新到 5.12 。

Mongoose 从 5.11 自带 types (应该是用 TS 写了), 原来的 @types/mongoose 不需要了,但功能上不如原来 @types/mongoose 丰富, 导致很多 Jest 测试代码 Broken,mockResolvedValue, mockReturnedValue 都出了类型问题。

如果有足够的能力,可以从 NodeJS API (或者基于 Express ) 自己构建。
NodeJS 框架中 express 依然是核心地位,太多第三方框架都是基于 express,或者提供了 Express 扩展. 另外 Fastify 相对比较新,以速度著称,好像在 NestJS 中也可以切换。从这个角度看 NestJS 可以核心还是比较有远见的, 封装了最流行的核心(默认用 express ),简化了工程化的所需要的一切元素(模块化代码结构,DI,安全,测试等)。
其他的 NodeJS 框架,基本都是边缘化了,koa, sails 这些二等公民都算不上了。Meteor 算是个另类,提供一个定制化的 Node 环境,国外有不少用户,不知国内有没有人用,最初(1.0 之前)我是关注一下。

Koa 和 Express 该怎么选择?为啥说 Koa 二等公民都算不上?

koa2 还行

我也有此疑问,nest 之前大家都说推 koa,之后基本都是推 nest 了,不过鄙人不喜欢 nest 风格

是,可以用 async,await 了,避免回调地狱

https://risingstars.js.org/2020/zh

没人用 https://nextjs.org/ 这类的混合框架?

还在用 Express... 做久了一大堆现成的代码,开发起来很快,也懒得换

用 express,上 ts,把 lint 配置作为代码文件的一部分上传...

用 egg 写过公司项目,自己写的项目都是 express 没有用到 ts,用 eslint 对代码格式化,然后用 husky 和 eslint 对代码格式进行提交前检查

想了解一下不喜欢 nestjs 的原因是什么?
nestjs sailsjs loopback 我都用来做过一些项目,目前选择深耕在 nestjs

用 Nestjs,前端也能写一点后端,而且写起来非常简单,也不用操心项目规范和代码组织,反正他都定好了。本身基于 ts,写起来提示非常全面简单,文档都不咋用看。但是数据库我依旧玩不转

typeorm 其实相对来说挺简单的,也有中文说明文档

三年 node 后端...
从 Express-> Koa2 -> Nest -> Egg 总体来说是越写越舒服的。
Express 算是 node 框架的基石,大多数现有框架都是基于 Express 二次开发。自己玩造轮子可以玩这个。
Koa2 算是工业化的一个里程碑,写起来就是写 js 的感觉。
Nest 基数大的最主要原因,就是因为 Java 后端转过来写的人多,完全 js 版本的 spring 框架风格,AOP, 对面向对象思维的后端很友好。我写起来感觉最不舒服的一点就是太重了。。 感觉是写 java 。
Egg 也是基于 Koa2 二次开发的,目前来看开发效率还是挺高的,社区活跃,文档很好。
生产 ts 还是要上的,真的是用了 ts 就回不去了,读别人代码舒服,自己写 focus 业务。

Node 写大型系统路过

5 年前写过,那个时候还是一片芒荒,callback hell 满天飞。现在应该好太多了。

我也很疑惑 nodejs 做后端的优势区间在哪儿?
看到不少人说 nodejs 高并发性能很不错,但是没有找到具体数据说到底有多不错。
而且,相比如 go 怎么样呢?
(前端工程化中的 esbuild 就是利用 go 写的,性能完爆 JS 几条街)

用什么写都一样 curd 的多啊

同问。

优势区间主要是对前端来说不需要再去学一个新的语言就可以开发后台,至于性能,不太能比得上 golong

nestjs 。分清楚是“不喜欢”还是“不理解”nestjs 抽象解决的问题。
nestjs 是 node 框架里为数不多知识经验可迁移至传统后端的了

看人,习惯不好写什么都够呛。
js 没有说项目代码难以控制,完全是由于过于自由+缺少类型检查导致的,可以用 joi,可以写 jsdoc 。
只是你用了 ts,上面的可以,都自带了。但是不保证就所有 npm 的包都支持 ts 调用,可能有部分需要自己写描述,但这一小部分也不一定就能碰到,真碰到了,说不定还能够混个 pr 。

公司的用 egg,自己的用 koa

用过两年 koa2,项目做大了还是有点麻烦。1. 公司内部的 node 生态不够好,一些部件没有 node sdk 。2. JS 自身的面向对象有点难受,强行上各种设计模式会很蹩脚; 但是不上的话,代码的维护和迭代有很是问题

nest 在做中间层应用 并发确实不错 写起来基本没啥大问题,

概念多,
亲,您用 eslint 开发 node 项目有最佳实践吗,可以分享下您的 eslintrc 文件吗,有用--fix 有些常规错误修复不了呢,比如变量没有使用,多分号了等等

如果前端是一个独立的 typescript 工程,后端是一个独立的 typescript node.js 工程,两者之间的 typescript 没有 import type 的关系。我也觉得后端拿 node.js 写没啥好处,不如用 java 。至少也要做到部分类型定义的复用,如果业务上有需要,还可能要做到部分代码的一致性保证(比如前后端算两遍价格,前后端做两遍验证)。

但是 node 比 python 快

typescript 写起来太舒服了
这么舒服 为啥要去写 java(跑

早就有全程类型安全的框架了
从数据库到前端都是类型安全的,虽然我不写 node(

有,我写了一个简单可上手的模板,包含网关,用户中心,基础服务,可以看下

https://github.com/sophons-space/nest-server
https://github.com/sophons-space/nest-gateway
https://github.com/sophons-space/nest-user-center

[nodejs 项目自动格式化方案]( https://bubao.github.io/2020/09/16/nodejs%E9%A1%B9%E7%9B%AE%E8%87%AA%E5%8A%A8%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%96%B9%E6%A1%88/)
eslint 主要是看 eslint 的官网,另外别 prettier 和 eslint 一起用

首先 nodejs 的代码是 js,写起来舒服,实现什么功能也快,虽然比不上 python,但是和 java 比起来真的快很多。
go 我也在学习,但是 go 的包是扔在 github 上的,相比于 nodejs 和 python 的包管理真的差很远,不知最近 go 的包管理有什么进展。
是否高并发不错我真不好说,和 go 这种基因自带高并发的语言相比,nodejs 的事件驱动异步回调似乎没有那么的高大上。go 是编译运行的,性能是肯定是比 nodejs 这种 script 解释执行快的。但是纵观其他语言,脚本语言能有 nodejs 这样速度的好像真没有,甚至比很多编译执行的语言都快。
go 和 nodejs 都是 08 年左右开始开源的,如果 go 能把一些想包管理这种痛点解决掉的话,我估计会用 go 去做一些好玩的项目吧

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服