知道如何处理吗?我的意思是jquery-ui似乎不是amd,而且我不知道该如何管理,知道吗?
Answers:
幸运的是,我昨天才这样做,这很容易。
npm install --save jquery jquery-ui
确保您拥有要使用webpack.config.js中的插件解析的jquery别名
...
plugins: [
new webpack.ProvidePlugin({
"$":"jquery",
"jQuery":"jquery",
"window.jQuery":"jquery"
}),
...
然后在webpack.config.js中包含两个别名
````
resolve : {
alias: {
// bind version of jquery-ui
"jquery-ui": "jquery-ui/jquery-ui.js",
// bind to modules;
modules: path.join(__dirname, "node_modules"),
确保首先在应用启动文件中加载jquery。
var $ = require("jquery"),
require("jquery-ui");
如果您需要使用主题,请配置css-loader和file-loader。不要忘记npm安装那些装载程序。
module: {
loaders: [
{ test: /\.css$/, loader: "style!css" },
{ test: /\.(jpe?g|png|gif)$/i, loader:"file" },
并在您的应用启动文件中使用。
require("modules/jquery-ui/themes/black-tie/jquery-ui.css");
require("modules/jquery-ui/themes/black-tie/jquery-ui.theme.css");
由于某些原因jquery-ui
,webpack不能很好地工作。我不得不要求jquery-ui-bundle
。
npm i -S jquery-ui-bundle
然后在jquery之后要求它
require('jquery');
require('jquery-ui-bundle');
webpack.config.js
用jquery和的工作示例扩展答案jquery-ui
?
jquery-ui
现在可以与webpack一起使用。看我的答案。
jquery-ui-dist
并且jquery-ui-bundle
似乎不由jquery-ui团队维护。在jquery-ui jquery-ui
v1.12之后,可以将npm中的官方包与webpack一起使用。
通过更新package.json
和将jquery-ui更新到1.12 npm install
。
然后,您可以require
像这样每个小部件。
require("jquery-ui/ui/widgets/autocomplete");
require("jquery-ui/ui/widgets/draggable");
如果您使用过 require("jquery-ui")
过,则需要用每个小部件的单独导入替换它。我认为新方法更好,因为它将只捆绑我们需要使用的小部件的代码。
请参阅有关使用1.12官方npm软件包的文档。
require('jquery');
在require("jquery-ui/ui/widgets/draggable");
工作前添加吗?
$.widget( "ui.draggable", $.ui.mouse, { TypeError: Cannot read property 'mouse' of undefined
不过,我可以通过要求其所有的依赖关系进行如下修正:require('jquery-ui/ui/version'); require('jquery-ui/ui/plugin'); require('jquery-ui/ui/widget'); require('jquery-ui/ui/widgets/mouse')
;
webpack-jquery-ui- 使用此插件,例如,如果您使用Rails 5,请运行
yarn add webpack-jquery-ui
jQuery UI插件启动时,它将检查是否提供了jquery,因此
将此代码添加到webpacker配置文件(shared.js-如果与Rails 5一起使用)
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery'",
"window.$": "jquery"
})
]
将这些行添加到您的应用程序代码中。
require('webpack-jquery-ui');
require('webpack-jquery-ui/css');
修复ActionController::InvalidAuthenticityToken
中jquery.ajax
您必须authenticity_token
与所有参数一起传递参数PUT
,POST
并且DELETE
请求。
为此,通常可以使用 $('[name="csrf-token"]')[0].content
因此,您的请求将类似于:
var that = this;
$.ajax({
url: navigator_item.url,
data: { authenticity_token: $('[name="csrf-token"]')[0].content},
method: 'DELETE',
success: function(res) {
...
}
});
而不是使用:
plugins: [
new webpack.ProvidePlugin({...
您应该在Webpack配置文件的别名中添加'jquery':'jquery / src / jquery':
module.exports = {
resolve: {
alias: {
'jquery': 'jquery/src/jquery'
}
}
它将提供模块名称“ jquery”。jQuery UI在初始化时检查此名称。
然后在您的app.js文件中编写:
import $ from 'jquery'
import 'webpack-jquery-ui/css'
import 'webpack-jquery-ui/sortable' // if you need only sortable widget.
window.jQuery = $;
window.$ = $; // lazy fix if you want to use jQuery in your inline scripts.
接受的答案对我不起作用,因为NPM上的jQuery-ui包不是预先构建的,因此不包含 jquery-ui.js
;该软件包将需要在使用前构建,或者单独包含/使用的所有小部件。
使整个程序包正常运行的最快方法是首先下载可分发的版本:
npm install jquery-ui-dist --save
我需要添加一个别名jquery-ui-dist
来避免出现“找不到模块”错误(使用require('jquery-ui-dist')
将不起作用,因为.js文件名不同),方法是将其添加到webpack.config.js
:
resolve: {
alias: {
'jquery-ui': 'jquery-ui-dist/jquery-ui.js'
}
},
最后,您可以在加载模块的.js文件中使用它:
var jQuery = require('jquery');
require('jquery-ui');
另外,您可以require
通过在webpack.config.js中使用ProvidePlugin来避免在加载模块时必须使用脚本,并且不必将jQuery声明为变量:
plugins: [
new webpack.ProvidePlugin({
'jQuery': 'jquery',
'$': 'jquery',
'global.jQuery': 'jquery'
})
],
require
而不是ProvidePlugin可以正常工作吗?
require('jquery-ui-dist/jquery-ui.js');
代替别名。
对我有用的步骤(在Rails 5.1.6项目中)与上述任何步骤都不相同:
安装jquery和jquery-ui:yarn add jquery
和yarn add jquery-ui
将以下内容添加到webpack配置中(即/config/webpack/environment.js
),以全局设置$以及jquery和jQuery:
environment.plugins.prepend(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
jquery: 'jquery'
})
)
需要取其个人的jquery-ui包(S)你想,在你包的顶部(例如,在顶部/javascript/packs/application.js
:
require("jquery-ui/ui/widgets/sortable")
然后,您可以$('.selector').sortable()
在包中的任何地方打电话。