如何在运行时加载Webpack生成的块文件?

时间:2016-01-24 13:39:57

标签: javascript frontend webpack

如何加载由webpack 1.12.9生成的块文件?
webpack引导脚本是否在运行时自动加载块文件? 或者....我是否必须通过脚本标记在网页中手动导入这些块文件?

情况是我有一个由amd(异步模块定义)模块化的cordova web应用程序。
由于它的架构存在设计缺陷,我们必须在我们的网页中单独加载javascript。 我们想在head标签内加载框架和框架初始化代码,并在body标签的末尾加载所有内容。 我的页面结构如下所示。

<html>
    <head>
        <!--ignored-->
        <script src="lib/requirejs/require.js"></script>
        <script src="js/common.js"></script><!-- frameworks e.g. jquery-->
        <script src="js/boot.js"></script><!-- framework initialization -->
    </head>
    <body>
        <!-- Several pages in this SPA -->
        <script src="js/main.js"></script><!-- main entry point -->
        <script src="js/delivery.js"></script><!-- other modules -->
   </body>
</html>

但如果我通过下面的webpack设置构建我的网页,那么我的浏览器将尝试在运行时从我网站的根路径加载jquery。
例如,requirejs尝试从http://localhost:8000/browser/www/jquery加载jquery,而不是从块文件中获取它,其中包含构建此SPA的框架。
这个问题导致我的应用崩溃了。

{
    entry: {
        boot: "./src/js/boot.js",
        main: "./src/js/main.js",
        delivery: "./src/js/module/dev/delivery.js"
    },
    output: {
        path: path.join(__dirname, "www/js"),
        filename: "[name].js",
        chunkFilename: '[name].js'
        //,libraryTarget:"amd"
    },
    resolve: {
        root: [
           path.resolve('./src/js')
        ],
        alias: {
            "jquery":path.join(__dirname, jquerySrcPath),
            "jquery.mobile":path.join(__dirname, jqmSrcPath),
            "jqm-and-i18next-config":path.join(__dirname, "src/js/jqm-and-    i18next-config.js"),
            "jquery.i18next":path.join(__dirname, "src/lib/jquery-i18next-plugin-for-synnex/i18next.amd.withJQuery-1.8.0.js"),
            "underscore":path.join(__dirname,    "src/lib/underscore/underscore.js"),
            "backbone":path.join(__dirname, "src/lib/backbone/backbone.js")
        }
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin("common.js")
    ]
}

我想知道这个问题的根本原因是什么? 并且....如果requirejs尝试从不正确的地方加载jquery是因为我的网页在运行时没有加载块文件,那么如何在webpack中建议的方式呢?

感谢任何建议,谢谢!

0 个答案:

没有答案