ruby-on-rails – 如何使用Webpacker为链轮提供jquery?
发布时间:2020-12-17 02:57:21 所属栏目:百科 来源:网络整理
导读:我刚开始在现有的应用程序中试验Webpacker. 从我读过的所有内容中,我的理解是Webpacker和Sprockets可以共存,并且在Webpacker中编译的库(例如,jquery)可以通过全局变量提供给Sprokets. 但是我在资产管道中的所有jquery都引发了ReferenceError:无法找到变量:
我刚开始在现有的应用程序中试验Webpacker.
从我读过的所有内容中,我的理解是Webpacker和Sprockets可以共存,并且在Webpacker中编译的库(例如,jquery)可以通过全局变量提供给Sprokets. 但是我在资产管道中的所有jquery都引发了ReferenceError:无法找到变量:$ 我误解了,或者我的代码中是否有错误? 我添加了jquery 纱添加jquery 并在environment.js中分配变量 const { environment } = require('@rails/webpacker'); const webpack = require('webpack'); environment.plugins.prepend('Provide',new webpack.ProvidePlugin({ $: 'jquery',jQuery: 'jquery' })); module.exports = environment; 这工作: #javascript/packs/application.js $(function () { console.log('Hello World from Webpacker via JQUERY'); }); 这不 #assets/javascripts/application.js $(function () { console.log('Hello World from Sprockets via JQUERY'); }); # ReferenceError: Can't find variable: $ 预期的行为是什么? 解决方法
最后,从webpacker中将jQuery暴露给全局变得相对容易.但是找到关于如何做到这一点的文档非常困难!希望这可以节省别人的搜索.
添加expose-loader yarn add expose-loader -D 然后将以下配置添加到config / webpack / environment.js environment.loaders.append('expose',{ test: require.resolve('jquery'),use: [{ loader: 'expose-loader',options: '$' },{ loader: 'expose-loader',options: 'jQuery',}] }) 然后我能够从资产管道中删除jquery,重新启动服务器,并且链轮内的所有剩余jquery函数继续按预期运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |