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

Webpack:导出到窗口中的现有模块

邵昆琦
2023-03-14
问题内容

我的目标是使用Webpack将隔离的组件导出到假定的全局对象中。

index.html

<script>
   var MyApp = window.MyApp || {};
   MyApp.something = MyApp.something || {};
</script>
<script src="my-isolated-module.js"></script>

//
// other modules/components loaded here...
//

<script>
   MyApp.something.myIsolatedModule.run();
</script>

在上面的示例中,我假设有一个全局对象/模块,该对象/模块的属性something将附加其他模块。因此,我想将隔离的模块附加到全局MyApp.something对象,而又不破坏MyAppor
MyApp.something

webpack.config.js

var webpack = require('webpack');
var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');

module.exports = {
    target: 'web',
    context: __dirname + '/src/',
    entry: './main.jsx',
    output: {
        path: __dirname + '/dist/',
        filename: 'app.bundle.js',
        library: 'something',
        libraryTarget: 'var'
    },
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    module: {
        loaders: [
            {test: /\.jsx$/, loader: '../node_modules/jsx-loader'}
        ]
    },
    externals: {
        react: {
            root: 'React',
            commonjs: 'react',
            commonjs2: 'react',
            amd: 'react'
        }
    },

    plugins: [
        new UglifyJsPlugin()
    ]
};

src / main.jsx

module.exports = {
    myIsolatedModule: require('./MyIsolatedModule')
};

我尝试将Webpack的output.libraryTarget值设置为每个可能的值(请参阅http://webpack.github.io/docs/configuration.html#output-
librarytarget
),并尝试使用的值output.library,使其包含直接名称空间随着我的模块。什么都没有我想要的…


问题答案:

output.library 可以是如下数组:

output: {
    library: ['MyApp', 'something']
}

这将在窗口上创建一个对象,window.MyApp.something或者将其添加到该对象(window.MyApp如果已存在)。



 类似资料:
  • 问题内容: 我正在制作需要使用selenium的PyQt4应用程序。在开发过程中一切正常,但是当我通过 pyinstaller* 导出到 单个文件 EXE 且 没有控制台时 ,它会产生以下回溯错误: * __ 当我将其导出时(在pyinstaller规范文件中),不会发生这种情况,该错误仅在 没有console的情况下 产生。 产生的错误在以下行中: 我的规格: Python: 3.4 体系结构:

  • 问题内容: 希望能弄清为什么以下内容无法按预期工作,希望这是我可能忽略的简单事情。如果没有Webpack,当前的实现将按预期工作。 理想情况下,想保持当前的实现,我觉得组件/控制器/等的注册应在其自己的文件中完成,并且仅指向相关模块。但是,如果这不是最佳做法,那么我也想看看另一个建议。 文件root.module是我定义根模块的位置,然后在root.component文件中,将组件附加到该模块上。

  • 问题内容: 我正在使用Selenium Webdriver自动执行网页。我无法使用简单元素定位器方法在模式弹出窗口中单击按钮。 例: 打开www.walmart.com 在搜索框中输入电视。 选择一些电视,然后单击“添加到购物车” 现在出现一个弹出窗口,其中有“签出”按钮。我需要点击此“结帐”按钮。 我尝试了switchTo()窗口句柄,也尝试了switchTo()框架,但没有任何效果。 问题答案

  • 我的默认设置上有一个按钮。启动“条款和条件”模式弹出窗口(popup1)的aspx。然后,我在模式弹出窗口上有一个按钮,在顶部(我的条款和条件第2页)启动另一个模式弹出窗口(popup2)。 我想添加一个后退按钮到modalpopup2关闭popup2,并显示modalpopup1,所以用户有从popup2前进/后退选项。 我添加了“纽扣背”,并尝试。。。 但这只是重定向回我的默认设置。aspx。

  • 大多数情况下,我在寻找一个不用重写引导的解决方案。 附加的jsfiddle。第二个输入选项。没有经常使用jsfiddle,所以不知道,但尝试增加输出框的大小来查看结果,在更小的屏幕上甚至看不到。http://jsfiddle.net/rqx8t/