当前位置: 首页 > 面试题库 >

Webpack后端?

马琛
2023-03-14
问题内容

我只是想知道,我开始将Webpack用于一个新项目,到目前为止一切正常。我几乎会说我比以前使用过的Grunt更喜欢它。但是现在我很困惑如何以及如何在Express
Express后端上使用它?

看,我正在创建一个带有前端(ReactJS)和后端(ExpressJS)的应用程序。该应用程序将在Heroku上发布。现在看来,我也应该将Webpack与ExpressJS一起使用,以通过一个命令(前端和后端)启动并运行该应用程序。

但是写此博客文章http://jlong​​ster.com/Backend-Apps-with-Webpack--Part-
I的人
似乎使用Webpack将所有后端js文件捆绑在一起,在我看来,这确实没有必要。为什么要捆绑我的后端文件?我想我只想运行后端,观察后端文件中的更改,并将Webpack的其余功能仅用于前端。

你们如何捆绑前端,但同时运行后端nodejs部分?还是有充分的理由将后端文件与Webpack捆绑在一起?


问题答案:

为什么在节点后端上使用Webpack

如果我们谈论的是 reactnode app,那么可以构建同构的react
app
。而且,如果您 import 在客户端的react app 中使用ES6模块,也可以-
它们由客户端的webpack捆绑在一起。

但是问题是在服务器上,当您使用相同的react模块时,因为node不支持ES6模块。您可以require('babel/register');在节点服务器端使用,但是它会在运行时传递代码-
无效。解决此问题的最常见方法是通过webpack打包后端(您不需要通过webpack转换所有代码-只是有问题的,例如本示例中的react东西)。

这同样与 JSX

同时捆绑前端和后端

您的webpack配置可能必须在数组中进行配置:一个用于前端,第二个用于后端:

webpack.config.js

const common = {
    module: {
        loaders: [ /* common loaders */ ]
    },
    plugins: [ /* common plugins */ ],
    resolve: {
        extensions: ['', '.js', '.jsx'] // common extensions
    }
    // other plugins, postcss config etc. common for frontend and backend
};

const frontend = {
     entry: [
         'frontend.js'
     ],
     output: {
        filename: 'frontend-output.js'
     }
     // other loaders, plugins etc. specific for frontend
};

const backend = {
     entry: [
         'backend.js'
     ],
     output: {
        filename: 'backend-output.js'
     },
     target: 'node',
     externals: // specify for example node_modules to be not bundled
     // other loaders, plugins etc. specific for backend
};

module.exports = [
    Object.assign({} , common, frontend),
    Object.assign({} , common, backend)
];

如果使用此配置启动该配置,webpack --watch则将并行构建两个文件。当您编辑前端特定代码时,只会frontend- output.js生成backend-output.js。最好的部分是当您编辑同构反应部分时-Webpack会立即构建两个文件。

您可以在本教程中找到何时对节点使用webpack的说明(第4章)。



 类似资料:
  • 请教Webpack打包后找不到资源? 入口文件如下: 打包在lib目录,如下: 入口文件index_bundle.js在package.json中设置main指向./lib/index_bundle.js就好了 但是874.index_bundle.js这个文件就找不到了,提示如下 于是我去查了下,说是要设置homepage 但是无论我是设置./lib/还是设置.,都不对 于是我想是不是要将hom

  • 问题内容: 我正在使用语句以监视模式运行Webpack来构建我的ReactJS应用。但是由于某种原因,它现在停止工作。现在,它只编译一次代码并终止 我尝试了这篇SO文章中建议的方法:webpack–watch无法编译更改的文件 但是,这并没有解决我的问题。任何帮助都感激不尽 问题答案: 该问题似乎是由于inotify手表限制而引起的 在Linux上,默认情况下,Listen使用inotify监视目

  • webpack版本为最新5.88 如图,在加入这段代码后,运行npm run build报错 报错问题 完整代码 在使用了大佬提供的代码后,成功压缩了图片,但是出现了新的报错问题 目前代码

  • 更改历史 * 2017-11-12 王莹 webpack内容更新 第一章 webpack介绍 1.1 概述 Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs

  • art-template loader for webpack. Install npm install art-template npm install art-template-loader --save-dev Usage By default every local <img src="image.png"> is required (require('./image.png')).

  • Webpack 是一个模块打包器,主要目的是在浏览器上打包 JavaScript 文件。 TL;DR 捆绑 ES 模块、CommonJS 和 AMD 模块(以及绑定)。 可以创建在运行时异步加载的单个捆绑包或多个块(以减少初始加载时间)。 在编译过程中解决了依赖性,从而减小了运行时大小。 加载程序可以在编译时对文件进行预处理,例如,将 TypeScript 转换为 JavaScript、将Hand