TL; DR 使用插件扩展jQuery对象的正确方法是什么,在全局中公开它并在webpack中使用带有ES6模块的外部AMD库?webpack是否适合完成任务,或者SystemJ是否适合将遗留应用程序重构为ES6模块的情况?
我正在尝试使用webpack和ES6模块.我有一个遗产主要是jquery应用程序,我目前正在转换.我面临以下挑战:
我依赖以下资源:这个很好的答案解释了很多,虽然它没有提到我主要依赖的出口加载程序:https: //stackoverflow.com/a/28989476/2613786
http://webpack.github.io/docs/shimming-modules.html - 文档列出了许多可能性,但我没有经验来决定哪一个是正确的.似乎最好使用ProvidePlugin而不是expose-loader.可悲的是,我没有使用扩展的jQuery对象.它也不能用于<script>标记中调用的模块函数.
我仍然很难找到编程解决方案,并决定哪个webpack插件是正确的.非常感谢来自经验丰富的webpack用户的一些建议或示例.
在我的webpack.config.js我有以下装载机暴露jquery和巴贝尔变换:
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {modules: 'common'}
},
{
test: /jquery\.js$/,
exclude: /node_modules/,
loader: 'expose?jQuery',
},
{
test: /jquery\.js$/,
exclude: /node_modules/,
loader: 'expose?$',
},
{
test: /[\/\\]vendor[\/\\]jquery.sparkline\.js$/,
loader: "imports?define=>false"
}
]
},
amd: { jQuery: true },
// plugins: [
// new webpack.ProvidePlugin({
// $: 'jquery',
// jQuery: 'jquery',
// 'window.jQuery': 'jquery', …Run Code Online (Sandbox Code Playgroud)