aucune idée de comment faire face à cela? Je veux dire que jquery-ui ne semble pas être une DMLA et je ne sais pas comment gérer ça, une idée?
vous avez de la chance que je l'ai fait hier, c'est plutôt facile.
npm install --save jquery jquery-ui
Assurez-vous que vous avez l'alias jquery à résoudre avec le plugin dans le webpack.config.js
...
plugins: [
new webpack.ProvidePlugin({
"$":"jquery",
"jQuery":"jquery",
"window.jQuery":"jquery"
}),
...
Ensuite, incluez deux alias dans le fichier 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"),
Assurez-vous que jquery est chargé en premier dans le fichier de démarrage de votre application.
var $ = require("jquery"),
require("jquery-ui");
Si vous devez utiliser un thème, configurez css-loader et le chargeur de fichiers. N'oubliez pas d'installer NPM ces chargeurs.
module: {
loaders: [
{ test: /\.css$/, loader: "style!css" },
{ test: /\.(jpe?g|png|gif)$/i, loader:"file" },
Et utilisez-le dans le fichier de démarrage de votre application.
require("modules/jquery-ui/themes/black-tie/jquery-ui.css");
require("modules/jquery-ui/themes/black-tie/jquery-ui.theme.css");
Pour une raison quelconque, jquery-ui
n'a pas joué à Nice avec webpack. Je devais demander jquery-ui-bundle
à la place.
npm i -S jquery-ui-bundle
et ensuite l'exiger après jquery, par ex.
require('jquery');
require('jquery-ui-bundle');
jquery-ui-dist
et jquery-ui-bundle
ne semblent pas être gérés par l'équipe jquery-ui. After jquery-ui v1.12 Il est possible d’utiliser le paquetage officiel jquery-ui
à partir de npm avec webpack.
Mettez à jour jquery-ui vers 1.12 en mettant à jour package.json
et npm install
.
Ensuite, vous pouvez require
chaque widget comme celui-ci.
require("jquery-ui/ui/widgets/autocomplete");
require("jquery-ui/ui/widgets/draggable");
Si vous avez déjà utilisé require("jquery-ui")
, vous devez le remplacer par des importations distinctes pour chaque widget. Je pense que la nouvelle méthode est préférable car elle ne regroupera que le code du widget que nous devons utiliser.
Voir documentation sur l'utilisation du paquet npm officiel 1.12.
La réponse acceptée ne fonctionne pas pour moi car le package jQuery-ui sur NPM n'est pas pré-construit et ne contient donc pas jquery-ui.js
; le paquet devra soit être construit avant utilisation, soit tous les widgets inclus/utilisés individuellement.
Le moyen le plus rapide de faire fonctionner tout le paquet était de télécharger d'abord la version distribuable:
npm install jquery-ui-dist --save
J'avais besoin d'ajouter un alias pour jquery-ui-dist
afin d'éviter une erreur 'Impossible de trouver le module' (utiliser uniquement require('jquery-ui-dist')
ne fonctionnera pas, car le nom du fichier .js est différent), en ajoutant ceci à webpack.config.js
:
resolve: {
alias: {
'jquery-ui': 'jquery-ui-dist/jquery-ui.js'
}
},
Enfin, vous pouvez l’utiliser dans le fichier .js où les modules sont chargés:
var jQuery = require('jquery');
require('jquery-ui');
Sinon, vous pouvez éviter de require
les scripts lors du chargement des modules et de déclarer jQuery en tant que variable en utilisant ProvidePlugin dans votre webpack.config.js:
plugins: [
new webpack.ProvidePlugin({
'jQuery': 'jquery',
'$': 'jquery',
'global.jQuery': 'jquery'
})
],
webpack-jquery-ui - utiliser ce plugin, par exemple. si vous utilisez Rails 5, exécutez
yarn add webpack-jquery-ui
Lorsque le plug-in jQuery UI démarre, il vérifie si jquery est fourni, donc
Ajoutez ce code à votre fichier de configuration Webpacker (shared.js - si vous l’utilisez avec Rails 5)
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery'",
"window.$": "jquery"
})
]
Ajoutez ces lignes dans le code de votre application.
require('webpack-jquery-ui');
require('webpack-jquery-ui/css');
pour corriger ActionController::InvalidAuthenticityToken
dans jquery.ajax
Vous devez passer un paramètre authenticity_token
avec toutes vos demandes PUT
, POST
et DELETE
.
Pour ce faire, vous pouvez généralement le récupérer à partir de l'en-tête avec $('[name="csrf-token"]')[0].content
Donc, votre demande ressemblerait à quelque chose comme:
var that = this;
$.ajax({
url: navigator_item.url,
data: { authenticity_token: $('[name="csrf-token"]')[0].content},
method: 'DELETE',
success: function(res) {
...
}
});
À la place d'utiliser:
plugins: [
new webpack.ProvidePlugin({...
Vous devez ajouter 'jquery': 'jquery/src/jquery' aux alias du fichier de configuration webpack:
module.exports = {
resolve: {
alias: {
'jquery': 'jquery/src/jquery'
}
}
Il fournira le nom de module 'jquery'. L'interface utilisateur de jQuery vérifie ce nom sur init.
Ensuite, dans votre fichier app.js, vous écrivez:
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.
Les étapes qui ont fonctionné pour moi (dans un projet Rails 5.1.6) ne sont identiques à aucune des précédentes:
Installez jquery et jquery-ui: yarn add jquery
et yarn add jquery-ui
Ajoutez les éléments suivants à la configuration Webpack (c'est-à-dire dans /config/webpack/environment.js
) pour définir globalement $, jquery et jQuery:
environment.plugins.prepend(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
jquery: 'jquery'
})
)
Exigez le ou les packages jquery-ui individuels de votre choix en haut de votre pack (par exemple en haut de /javascript/packs/application.js
:
require("jquery-ui/ui/widgets/sortable")
Ensuite, vous pouvez appeler, par exemple, $('.selector').sortable()
n'importe où dans votre pack.