我发现了许多关于在Javascript中使变量或函数全局化的问题(通常我认为这不是一个好的做法(,但有时我们需要在整个应用程序中使用JS函数,在我们的Rails 5应用程序的Webpacker中这样做通常是这样做的:
在useful_pack.js
文件中
function globalFunction() {
// some stuff
}
export {globalFunction }
然后在application.js
中,我们导入pack&将全局函数绑定到窗口:
import { globalFunction } from useful_pack.js
// some code
window.globalFunction = globalFunction
在这种情况下,绑定到窗口有什么主要的缺点吗?有没有更标准的方法来利用webpacker中的全局JS函数?(这样我就可以在rails应用程序的任何视图中调用该函数(
要在全局范围内添加一个函数,使其在整个应用程序中可用,建议使用以下方法:
global.globalFunction = function() {
// some stuff
};
// or
const globalFunction = () => {
// some stuff
};
global.globalFunction = globalFunction;