首页 文章

如何从外部URL包含webpack模块?

提问于
浏览
1

我有两个应用程序,都使用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模块 . 当它在app1中的页面上加载时,找不到 app2 (即反应)所需的模块 .

有没有办法做到这一点?我基本上希望它懒得加载 app2 bundle,但是webpack并没有自己的入口点 . 这就像我需要指定一个延迟加载的入口点或其他东西 . 请帮忙!

1 回答

  • 0

    我刚刚发现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,因为运行时以你的库名为前缀 . 因此,您需要将所有内容都包含在库中以正确加载 .

相关问题