javascript - Next.js 带或不带 express
问题描述
我最近开始将使用 create-react-app 制作的项目迁移到 next.js,但我不确定应该如何迁移它的后端。
我目前有一个快速服务器作为我的后端,但我在 next.js 中看到通过在api
文件夹中使用无服务器函数可以带来性能优势。我的问题是:我最好将 express 服务器迁移到无服务器功能还是保留它并将其与 next.js 一起使用?另外,在无服务器函数中使用 express 是不是一个坏主意?
我看过很多关于 next.js 的教程,很多都使用 express,尽管 next.js 文档建议不要这样做,所以我不确定我是否在这里遗漏了一些优势。
[编辑]:我的后端基本上由用于获取/更新数据库内容和上传文件的路由以及 JWT 身份验证中间件组成。
解决方案
我尽量避免使用 express.js。不仅是为了性能优势,还因为它需要多一层调试和维护。
但是,在某些情况下仍会迫使您依赖 express:
- 一些(尤其是较旧的)插件将依赖它。例如,直到最近,用于多语言支持的 next-18next 插件还需要 express.js 才能工作。这可能就是为什么一些教程和示例也会使用 express,如果他们使用这样的插件的话。幸运的是,在最近的一次更新中,next-i18next 团队设法删除了这个要求,您可以在不依赖 express 的情况下使用该插件。希望随着时间的推移,会有更多的插件效仿,尽管在教程、文档和示例赶上之前还有时间。
- 根据您的托管设置,您可能需要 express.js 来管理资产的缓存。如果您在专为托管 next.js 应用程序而构建的 Vercel 上进行托管,那么这将不是问题,因为您可以在该控制台中管理托管,我认为这也比拥有的想法更可取维护一个快递服务器。
总之,如果您在 Vercel 上托管或不需要担心资产缓存,并且不使用任何依赖 express.js 的插件,那么设置 express 是浪费精力。
推荐阅读
- c# - 如何在另一个线程中绑定控件的属性以防止导致 ui 冻结的主线程重载?
- python - 我正在尝试用多个条件替换我的 Dataframe 中的 NaN 值?
- intellij-idea - IDEA2019中如何设置选择当前单词的快捷键?
- firebase - 如何使用 Flutter 在 Firestore 中检索数组索引中的多个字段
- python - 如何从包含在列表中的 JSON 对象获取信息?
- javascript - 无法在 componentDidMount 中工作 setTimeout
- php - 如何使用全日历避免事件在日期上重叠?
- c - 二进制交错、二进制混合、交替位
- rollupjs - Rollup JS 使用 rollup-plugin-modify 插件构建不替换构建文件中的所有字符串实例(使用 'replace-in-file' 插件代替)
- spring - 资源中未处理的异步异常与服务器发送事件 RESTEasy + Spring Integracion