Webpacker (или Webpack) environment.js против application.js

#ruby-on-rails #webpack #webpacker

#ruby-on-rails #webpack #webpacker

Вопрос:

Вопрос новичка относительно webpack / er environment.js и application.js Для импорта библиотеки JS, такой как jQuery, Popper и т.д. Я использую плагин, предоставляющий webpack в environment.js

 // environment.js
const webpack = require("webpack");
    environment.plugins.append("Provide", new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
      Popper: ['popper.js', 'default']
    }));
  

Это делает jQuery и Popper доступными для начальной загрузки и любого JS-кода, который я пишу.
Но если я использую select2, он в списке плагинов не работает. Я должен импортировать его в свой application.js

 //application.js
import select2; 
  

Если я хочу использовать Quilljs, я должен импортировать его (немного по-другому) в мой application.js

 import Quill from 'quill';
  

В чем разница между импортом библиотеки и добавлением библиотеки в качестве плагина. Я немного погуглил, но не могу найти ресурс, который объясняет эти концепции. Может кто-нибудь объяснить это или указать мне на решение.

Ответ №1:

Плагины Webpack — это объекты JavaScript, у которых есть apply метод, который может вызывать компилятор webpack. Так что, вероятно, select2 у and Quill нет такого доступного метода, и поэтому они не могут отображаться как плагины.

Импорт, который вы используете вместо этого, является стандартным импортом модуля, и это подходящий способ использовать их для использования в ваших файлах, IMO.