为啥 server.js 从来没有内置在 Webpack 中?

Posted

技术标签:

【中文标题】为啥 server.js 从来没有内置在 Webpack 中?【英文标题】:Why is server.js never built in Webpack?为什么 server.js 从来没有内置在 Webpack 中? 【发布时间】:2021-05-16 04:44:06 【问题描述】:

我的前端使用Vue.js 3,后端使用Node/Express。我正在尝试启用服务器端渲染,但事实证明这很困难。

我了解客户端内置于名为app.js 的文件中。但是我从来没有看到server.js 被构建并导出到dist 文件夹?以下是一些示例:

    vue-hackernews,其中有一个 entry-client.jsentry-server.js 文件被提供给 Webpack,但 server.js 却看不到任何地方。 另一个question/answer也只提供main.server.js作为服务器入口文件,不构建server.js

据我了解,server.js 是后端,必须运行 Node.js/Express 才能工作。在上面的两个示例中,究竟是从服务器条目文件构建了什么,因为它似乎不是 Express 路由所在的server.js。当然server.js 必须构建到 dist 文件夹中,以便它可以被诸如 Windows IIS 之类的 Web 服务器访问和运行(我正在使用)?

【问题讨论】:

webpack 配置,对于“生产”,可以包含仅与 server.js 相关的第二个配置块(它自己的输出在 ./dist 中)。 . module.exports = [ conf-1 , #2 ] 为了使用 dev-server 和 HMR,你将有单独的“开发”配置 【参考方案1】:

你是对的,通常不需要捆绑服务器代码。

但这样做有一些好处:

    一个项目范围的配置,必须可以共享客户端和服务器配置 - 无需维护多个构建工具 服务器代码 HMR(热模块更换)- 您可以在开发期间交换服务器代码,而无需重新启动服务器 客户端和服务器之间的代码共享 代码转译 - 服务器代码可以用现代语法(ESM 等...)编写,并将转译为目标节点版本。

【讨论】:

那么如果server.js不在dist文件夹中,web服务器如何运行呢?如果server.js 使用 ES6+ 语法怎么办? 关于 es6 语法,取决于配置,但通常您可以将服务器代码转换为特定的节点版本 关于 server.js,我不确定我是否理解了这个问题 关于 server.js,server.js 不需要在 dist 文件夹中,它不是一个神奇的文件夹,文件可以在任何地方,运行它所需要的只是到node ./what-ever/folder/server.js 我的意思是作为构建和部署过程的一部分,server.js 是如何处理的?人们是否真的将文件复制/粘贴到生产服务器?!

以上是关于为啥 server.js 从来没有内置在 Webpack 中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PhoneGap Geolocation onSuccess 从来没有第一次触发?

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

web项目部署成功,端口号,路径都正确,项目从来没有从命名,但是访问的时候报错404.求解,到底是为啥。

为啥 URLSession.DataTaskPublisher 从来不发布值?

为啥我无法让我的后端文件 server.js 连接到前端?错误:POST http://localhost:3000/api/person/add 400(错误请求)?