webpack-jquery-ui
jquery-ui y webpack, ¿cómo administrarlo en el módulo? (6)
alguna idea de cómo lidiar con eso? Quiero decir, jquery-ui parece no ser amd y no sé cómo manejar eso, ¿alguna idea?
webpack-jquery-ui
webpack-jquery-ui : use este complemento, por ejemplo, si usa Rails 5, ejecute
yarn add webpack-jquery-ui
Cuando se inicia el complemento jQuery UI, comprueba si se proporciona jquery, por lo que
Agregue este código a su archivo de configuración de webpacker (shared.js, si lo usa con Rails 5)
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery''",
"window.$": "jquery"
})
]
Agregue estas líneas en el código de su aplicación.
require(''webpack-jquery-ui'');
require(''webpack-jquery-ui/css'');
arreglar
ActionController::InvalidAuthenticityToken
en
jquery.ajax
Debe pasar un parámetro
authenticity_token
con todas sus
POST
PUT
,
POST
y
DELETE
.
Para hacerlo, generalmente puede
$(''[name="csrf-token"]'')[0].content
del encabezado con
$(''[name="csrf-token"]'')[0].content
Entonces su solicitud se vería así:
var that = this;
$.ajax({
url: navigator_item.url,
data: { authenticity_token: $(''[name="csrf-token"]'')[0].content},
method: ''DELETE'',
success: function(res) {
...
}
});
Incluyo jQuery en mi aplicación de otra manera
En lugar de usar:
plugins: [
new webpack.ProvidePlugin({...
Debe agregar ''jquery'': ''jquery / src / jquery'' a los alias en el archivo de configuración del paquete web:
module.exports = {
resolve: {
alias: {
''jquery'': ''jquery/src/jquery''
}
}
Proporcionará el nombre del módulo ''jquery''. jQuery UI verifica este nombre en init.
Luego, en su archivo app.js, escriba:
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.
Estás de suerte. Hice esto ayer, es bastante fácil.
npm install --save jquery jquery-ui
Asegúrese de tener jquery con alias para resolver con el complemento en webpack.config.js
...
plugins: [
new webpack.ProvidePlugin({
"$":"jquery",
"jQuery":"jquery",
"window.jQuery":"jquery"
}),
...
Luego incluya dos alias en webpack.config.js
- La carpeta node_modules
- La carpeta jquery-ui
`` `` ``
resolve : {
alias: {
// bind version of jquery-ui
"jquery-ui": "jquery-ui/jquery-ui.js",
// bind to modules;
modules: path.join(__dirname, "node_modules"),
Asegúrese de que jquery se cargue primero en el archivo de inicio de su aplicación.
var $ = require("jquery"),
require("jquery-ui");
Si necesita usar un tema, configure el css-loader y el file-loader. No olvide instalar npm esos cargadores.
module: {
loaders: [
{ test: //.css$/, loader: "style!css" },
{ test: //.(jpe?g|png|gif)$/i, loader:"file" },
Y utilícelo en el archivo de inicio de su aplicación.
require("modules/jquery-ui/themes/black-tie/jquery-ui.css");
require("modules/jquery-ui/themes/black-tie/jquery-ui.theme.css");
La respuesta aceptada no funciona para mí, ya que el paquete jQuery-ui en NPM no está preconstruido y, por lo tanto, no contiene
jquery-ui.js
;
el paquete deberá construirse antes de su uso o todos los widgets incluidos / utilizados individualmente.
La forma más rápida de hacer funcionar todo el paquete fue descargando primero la versión distribuible:
npm install jquery-ui-dist --save
Necesitaba agregar un alias para
jquery-ui-dist
para evitar un error ''No se puede encontrar el módulo'' (usando solo
require(''jquery-ui-dist'')
no funcionará, porque el nombre de archivo .js es diferente), agregando esto a
webpack.config.js
:
resolve: {
alias: {
''jquery-ui'': ''jquery-ui-dist/jquery-ui.js''
}
},
Finalmente, puede usar esto en el archivo .js donde se cargan los módulos:
var jQuery = require(''jquery'');
require(''jquery-ui'');
Alternativamente, puede evitar tener que
require
los scripts al cargar los módulos, y tener que declarar jQuery como una variable, utilizando ProvidePlugin en su webpack.config.js:
plugins: [
new webpack.ProvidePlugin({
''jQuery'': ''jquery'',
''$'': ''jquery'',
''global.jQuery'': ''jquery''
})
],
Los pasos que funcionaron para mí (en un proyecto Rails 5.1.6) no son idénticos a ninguno de los anteriores:
Instale jquery y jquery-ui:
yarn add jquery
y
yarn add jquery-ui
Agregue lo siguiente a la configuración del paquete web (es decir, en
/config/webpack/environment.js
) para establecer globalmente $ y jquery y jQuery:
environment.plugins.prepend(
''Provide'',
new webpack.ProvidePlugin({
$: ''jquery'',
jQuery: ''jquery'',
jquery: ''jquery''
})
)
Solicite los paquetes jquery-ui individuales que desee, en la parte superior de su paquete (por ejemplo, en la parte superior de
/javascript/packs/application.js
:
require("jquery-ui/ui/widgets/sortable")
Luego puede llamar, por ejemplo,
$(''.selector'').sortable()
en cualquier parte de su paquete.
Por alguna razón,
jquery-ui
no jugó bien con webpack.
Tuve que requerir
jquery-ui-bundle
lugar.
npm i -S jquery-ui-bundle
y luego lo requieren después de jquery, por ejemplo
require(''jquery'');
require(''jquery-ui-bundle'');
jquery-ui-dist
y
jquery-ui-bundle
no parecen ser mantenidos por el equipo de jquery-ui.
Después de jquery-ui v1.12 Es posible usar el paquete oficial
jquery-ui
de npm con webpack.
Actualice jquery-ui a 1.12 actualizando
package.json
y
npm install
.
Entonces puede
require
cada widget como este.
require("jquery-ui/ui/widgets/autocomplete");
require("jquery-ui/ui/widgets/draggable");
Si ha utilizado
require("jquery-ui")
antes de reemplazarlo con importaciones separadas para cada widget.
Creo que la nueva forma es mejor porque incluirá solo el código para el widget que necesitamos usar.
Consulte la documentation sobre el uso del paquete npm oficial 1.12.