DevGang
Авторизоваться

Оптимизация вашего интерфейсного рабочего процесса с помощью Webpack

До сих пор мы говорили о таких темах бэкэнд-разработки, как масштабирование, проектирование, развертывание и управление и т. д. Но сегодня мы увидим самое важное, т. е. Webpack.

Проблема, которую решает Webpack

Когда наш проект становится сложным с таким количеством зависимостей и файлов, это вызывает у нас головную боль. Таким образом, webpack простыми словами решает эту проблему, позволяя разработчикам организовывать свой код в модули, а затем объединять эти модули в один файл. Webpack обычно используется для объединения и оптимизации интерфейсных ресурсов, таких как JavaScript, CSS и изображения, для использования в веб-приложениях.

Не волнуйтесь, мы еще увидим простой пример.

Вот репозиторий, за которым вы можете следить.

Подробнее о Webpack

Помимо конфигурации webpack, которую он загружает, есть некоторые дополнительные функции, такие как загрузка таблиц стилей, загрузка SVGS и т.д. Они называются погрузчиками. В webpack есть загрузчики и плагины.

  • Работа загрузчика состоит в том, чтобы просто работать с вещами, когда они загружаются. Как и перед созданием окончательного отдельного файла, существуют определенные требования, такие как загрузка CSS, загрузка SVGS, и это делается с помощью загрузчиков.
  • И после создания окончательного выходного файла, если необходимо выполнить еще какие-либо настройки, это делается с помощью плагинов.

Если вы этого не понимаете, не волнуйтесь, мы объясним это дальше, используя конфигурацию Webpack.

Вот как выглядит наш файл Webpack.config.js:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: "./app/index.js",
    module: {
        rules: [
            // JavaScript can not load SVGs directly so we'll use someone's written code in 
            // svg-inline-loader [installed via npm]
            // more about svg-loader:- https://www.npmjs.com/package/svg-inline-loader
            {
                test: /\.svg$/,
                loader: 'svg-inline-loader'
            },
            // Similar to svg-loader, we are using css-loader to load the css and style-loader to inject css into 
            // our files
            // more about css-loader:- https://www.npmjs.com/package/css-loader 
            // Note:- css-loader is dependent on style-loader
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            },
            // Babel makes our modern JS (JS having features
            // like arrow functions etc) run on old browsers that donot support new JS.
            {
                // This is a Regex which says any js file having js, jsx will be loaded by babel
                test: /\.(js)$/,
                use: "babel-loader"
            }
        ]
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    },
    // After creating bundle.js file, to inject into our index.html file we need HTMLInjection that is provided
    // by the below plugin.
    // Note:- As written above, Loaders do work before generating the output and plugins do after the output...

    // It will generate index.html and will take bundle.js to inject into html
    // More:- https://webpack.js.org/plugins/html-webpack-plugin/
    plugins: [new HtmlWebpackPlugin()],

    // Two modes are there:- development, production. Production is more optimized and do minimize the code more
    mode: process.env.NODE_ENV == "production" ? "production" : "development"
};

Зависимости, которые мы использовали

npm i css-loader style-loader --save-dev
npm install --save-dev html-webpack-plugin
npm install webpack-dev-server --save-dev
npm install svg-inline-loader --save-dev
npm install webpack webpack-cli --save-dev                                   

Некоторые скрипты, которые мы добавили в package.json для запуска и обслуживания

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack serve",
    "build": "NODE_ENV='production' webpack"
  },
#JavaScript #Начинающим
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу