使用 Webpack 和 JS 模块,但仍然可以从 HTML 文件访问全局变量
Using Webpack and JS modules, but still getting access to global vars from HTML file
我是 Webpack 的新手,我想我遗漏了一些东西。
我有一个简单的 Javascript 文件 (items.js),它需要一些外部模块(一些来自 npm,一些是我自己编写的)。注意:该应用程序是一个多页面应用程序,因此 Webpack 配置为从多个入口点构建,它将构建 1 "common" 包和 1 "entry point" 包(所以我使用 CommonsChunkPlugin)
var $ = require("jquery");
var vm = {
loadData: function() {
$('#items').text('Data loaded');
},
add: function() {
$('#modal').show();
}
};
$(document).ready(function() {
vm.loadData();
});
现在,在 HTML 文件中,即
<div id="items">Loading...</div>
<button onclick="vm.add()">Add</button>
<form id="modal" style="display: none">
<input type="text" name="name">
</form>
<script type="text/javascript" src="/js/common.js"></script>
<script type="text/javascript" src="/js/items.js"></script>
我看到 Webpack 让我失去了对 "vm" var 的可见性,它不是全局的。但我想从 HTML 文件访问 "vm" var,例如当用户单击 "Add" 按钮时调用 vm.add()。
有什么想法吗?
谢谢
在您的 webpack.config 文件中,您可以公开您的顶级变量
module.exports = {
output: {
//you can expose the variable to window
libraryTarget: 'window',
library: 'vm'
}
};
这是一个很好的例子,可能会对你有所帮助
expose bundle in a variable in the global context
我是 Webpack 的新手,我想我遗漏了一些东西。
我有一个简单的 Javascript 文件 (items.js),它需要一些外部模块(一些来自 npm,一些是我自己编写的)。注意:该应用程序是一个多页面应用程序,因此 Webpack 配置为从多个入口点构建,它将构建 1 "common" 包和 1 "entry point" 包(所以我使用 CommonsChunkPlugin)
var $ = require("jquery");
var vm = {
loadData: function() {
$('#items').text('Data loaded');
},
add: function() {
$('#modal').show();
}
};
$(document).ready(function() {
vm.loadData();
});
现在,在 HTML 文件中,即
<div id="items">Loading...</div>
<button onclick="vm.add()">Add</button>
<form id="modal" style="display: none">
<input type="text" name="name">
</form>
<script type="text/javascript" src="/js/common.js"></script>
<script type="text/javascript" src="/js/items.js"></script>
我看到 Webpack 让我失去了对 "vm" var 的可见性,它不是全局的。但我想从 HTML 文件访问 "vm" var,例如当用户单击 "Add" 按钮时调用 vm.add()。
有什么想法吗? 谢谢
在您的 webpack.config 文件中,您可以公开您的顶级变量
module.exports = {
output: {
//you can expose the variable to window
libraryTarget: 'window',
library: 'vm'
}
};
这是一个很好的例子,可能会对你有所帮助 expose bundle in a variable in the global context