如何从外部 url 包含一个 webpack 模块?
How to include a webpack module from external url?
我有两个应用程序,都使用 webpack。每个应用程序需要不同的 javascript 模块。例如,app1
不使用 React,app2
使用 React。我正在尝试将 app2
中的 webpack 模块包含到 app1
中。我正在使用 CommonsChunkPlugin
从 app1 和 app2s 主文件中提取 webpack 运行时。因此,从 app1 开始,我有一个包含 init.js
脚本、app1.js
脚本的页面,然后我通过 url 包含了 app2.js
文件(即 http://proxy/app2/js/app2.js
通过代理,因此不存在跨站点问题)。
加载了app2
中的javascript,但似乎并没有真正加载webpack模块。 app2
中的 None 个所需模块(即反应)在 app1 的页面上加载时被发现。
有办法吗?我基本上希望它延迟加载 app2
包,但 webpack 似乎不想从 url 获取文件(我也不希望它在构建时获取它...) .我注意到 init.js 脚本是不同的,因为每个应用程序都有自己的入口点。这就像我需要指定一个延迟加载的入口点或其他东西。请帮忙!
我刚刚发现 webpack 可以 output Libraries 可以在其他应用程序中使用。因此,我已将 app2
更改为输出一个库,然后我将其包含在 app1
中,它就像一个魅力。如果需要,所有必需的依赖项也可以随附,或者您可以将它们指定为外部。这是我的 app2
:
的 webpack 配置示例
var webpack = require('webpack');
module.exports.getConfig = function (type) {
var isDev = type === 'development';
var config = {
entry: {
one: "./src/main/javascript/one.js",
two: "./src/main/javascript/two.js"
},
output: {
path: __dirname + "/src/main/webapp/static/js",
filename: "[name].js",
library: ["MyLibrary", "[name]"],
libraryTarget: "umd"
},
...
然后在 app1
中,我只是将脚本 one.js
包含在脚本标记中,它就可以正常加载了。请注意,我还必须从 app2
中删除 CommonsChunkPlugin,因为运行时以您的库名称为前缀。因此,您需要将其全部包含在库中才能正确加载。
我有两个应用程序,都使用 webpack。每个应用程序需要不同的 javascript 模块。例如,app1
不使用 React,app2
使用 React。我正在尝试将 app2
中的 webpack 模块包含到 app1
中。我正在使用 CommonsChunkPlugin
从 app1 和 app2s 主文件中提取 webpack 运行时。因此,从 app1 开始,我有一个包含 init.js
脚本、app1.js
脚本的页面,然后我通过 url 包含了 app2.js
文件(即 http://proxy/app2/js/app2.js
通过代理,因此不存在跨站点问题)。
加载了app2
中的javascript,但似乎并没有真正加载webpack模块。 app2
中的 None 个所需模块(即反应)在 app1 的页面上加载时被发现。
有办法吗?我基本上希望它延迟加载 app2
包,但 webpack 似乎不想从 url 获取文件(我也不希望它在构建时获取它...) .我注意到 init.js 脚本是不同的,因为每个应用程序都有自己的入口点。这就像我需要指定一个延迟加载的入口点或其他东西。请帮忙!
我刚刚发现 webpack 可以 output Libraries 可以在其他应用程序中使用。因此,我已将 app2
更改为输出一个库,然后我将其包含在 app1
中,它就像一个魅力。如果需要,所有必需的依赖项也可以随附,或者您可以将它们指定为外部。这是我的 app2
:
var webpack = require('webpack');
module.exports.getConfig = function (type) {
var isDev = type === 'development';
var config = {
entry: {
one: "./src/main/javascript/one.js",
two: "./src/main/javascript/two.js"
},
output: {
path: __dirname + "/src/main/webapp/static/js",
filename: "[name].js",
library: ["MyLibrary", "[name]"],
libraryTarget: "umd"
},
...
然后在 app1
中,我只是将脚本 one.js
包含在脚本标记中,它就可以正常加载了。请注意,我还必须从 app2
中删除 CommonsChunkPlugin,因为运行时以您的库名称为前缀。因此,您需要将其全部包含在库中才能正确加载。