公司准备用搭建node服务,要定架构,问下现在选哪些比较好
发布于 6 个月前 作者 kiinlam 2860 次浏览 来自 问答

公司有个资讯方面的项目,主要是内容展示,考虑SEO,打算在后端跟前端直接加一层node。 为了避免踩了大坑,特向兄弟们求教,该怎么选型呢? 框架有哪些可选,express貌似比较重,而且好像有点过时的样子,koa如何,还有其他选择吗? 数据库目前还不确定会不会搞,是不是一般选mongo呢? 缓存应该是redis吧,有没有其他方案呢? 前端页面交互少,但总免费了什么加载更多,路由控制之类的,主要还是路由支持吧,有没有不太重的前端框架合适呢? 剩下的应该就是一些配置、服务进程、跟自动化方面的东西,这两块没怎么接触过,有没有好的文章推荐?

25 回复

框架建议还是用express,如果你有足够折腾能力的话可以用koa2; 数据库如果以后统计处理比较多的话还是建议用mysql等关系型数据库; 缓存用Redis或Memcache都可以; 如果前端页面少,直接用框架的路由、render实现就行了,页面很多的话可以考虑分离,react.js ,vue.js都可以。 进程管理使用forever,pm2之类的。

建议使用express. Node只作为web service. 主要做内容展示并且有SEO需求,可以考虑载入一个类似ejs的模板引擎即可,不用考虑react/vue 可以参考下面:

---------外网-----------
Nginx(Proxy+负载均衡)
---------内网-----------
PM2监控的node多实例应用
+
redis(做session,数据缓存等)
---------------------
Java等后端服务器(API服务操作数据库)

好处是能保证平滑迁移,简单快捷,容灾性好,没有坑.

@WindTrace koa2会比express复杂吗?折腾点我倒是可以,就怕经常出问题要修改,特别是下班后最怕改东西,连饭都没法好好吃了。 差点忘了可能会有统计需求,还好你提醒了,数据库用mysql应该不会有太大问题,现在后端已经在用,不懂可以问后端的同事。 uve貌似最近很热门,可以抽空看看。 thank you~

@kiinlam koa2问题应该没有,只是用了很多es6的新特性,参考资料相比express少很多,想用新东西的话可以试试。

基本就是用express,mysql,redis,Nginx,pm2这几个了。 以前写的一篇文章,就是搭建整个node网站的。 链接

可以考虑koa2做RESTful API,脚手架拿去:https://github.com/yi-ge/koa2-API-scaffold

项目紧就用express, 自己有时间折腾就用koa2

@yakczh 打算简单弄下,先保证能用,后面再慢慢优化、重构等。产品不懂技术,只在乎能不能最快看到效果,实际上内部涉及各方各面的东西,他们不管。

推荐koahub.js,基于koa.js的nodejs快速开发框架

来自 KoaHubjs

UI和后台通过API访问数据的话,我建议使用parse或者crud框架直接什么都有了,至于SEO,动态转静态的框架很多,自己选个喜欢的即可

可以考虑在我们的 egg 基础上做 vue / react ssr 的扩展. 这块的插件的开源版还在迁移中.

知乎问答: 如何评价阿里开源的企业级 Node.js 框架 egg? https://www.zhihu.com/question/50526101/answer/144952130

koa2、mysql、redis、seneca、pm2、caddy 利用caddy做proxy,koa2做api,seneca做rpc承载数据库及业务逻辑、pm2管理进程。 用hprose代替seneca也行,跨语言rpc方案。

@atian25 看你这么卖力宣传,我就支持下吧。项目已star。 环境准备说不建议windows,让我小紧张了下。现在公司只给配了windows机器,现有项目也是在windows上开发的。为了一个小项目让公司给我加个OSX,真不知道给不给。弄双系统装多个Linux不现实,切换系统成本太高。 windows系统上会有很多问题吗?难得带有中文文档的框架,实在不忍心放手啊。

@kiinlam 我觉得你可以在Window下开发,然后装个XShell ssh到测试的Linux服务器进行测试;EggJs做的挺好的,值得一试哇

@kiinlam 而且一般来说,可能在win下有问题的一般是一些需要node-gyp编译的库,如果是纯js的代码理论上来讲不会有啥问题的

@kiinlam 我们的自动集成单元测试都有覆盖 win 的, 参见: https://ci.appveyor.com/project/gxcsoccer/egg

egg 吧,别胡思乱想了。

你想到的,它都帮你做好了。 你没想到的,它都帮你想了。 你想了解的,都有一堆专家给你指路。

@okoala 这广告我给99分,少一分怕你收费。 目前已经在看egg的文档。 正如你说的,背后团队支持,语言沟通无障碍,多个可行的实践案例,egg给我很大的吸引力。

感觉题主还是不清楚各个框架的优势所在…

考虑 SEO 就应该使用模板引擎, 数据库使用 mongodb 和 mysql 都没什么问题, 缓存一般就用 redis (注意持久化单点问题)

node 框架, 如果熟悉 async await 方法以及会填坑的话, koa2 不错, 如果不熟悉刚开始用的话, 还是 express 吧, 可以加一下 promise

通讯用 API 来做, 不要耦合在一起

其他的基础设施就是 PM2 来监控并进行日志收集以及自动重启服务, 配好 nginx 和 防火墙, 基本就可以上线了…

如果需要运维的话, 最好再加一个 CMS 系统, 这样就不必事事都麻烦程序员了

配置尽量灵活一些


补充一点, web 安全别忘记, 小心 xss 和 csrf 漏洞

web 安全很复杂,egg 的两位前端安全专家, 对此有不少实践,看完这篇你就可以伪装成安全工程师了。 https://eggjs.org/zh-cn/core/security.html

@zkaip 确实,我对服务器安全方面没经验,如果框架本身有安全方面的配置会更好,我也省心点。

回到顶部