Maison interface Web js tutoriel Comment utiliser l'outil de gestion et d'empaquetage modulaire Webpack

Comment utiliser l'outil de gestion et d'empaquetage modulaire Webpack

Jun 07, 2018 am 09:58 AM
webpack 打包 模块化

Cette fois, je vais vous montrer comment utiliser les outils de gestion et de packaging modulaires de webpack, et quelles sont les précautions à prendre pour utiliser les outils de gestion et de packaging modulaires de webpack. Ce qui suit est un cas pratique, jetons un coup d'œil.

Introduction à Webpack

Webpack est actuellement l'outil de gestion et de packaging modulaire de ressources frontales le plus populaire. Il peut regrouper de nombreux modules indépendants dans des ressources frontales cohérentes avec le déploiement de l'environnement de production en fonction des dépendances et des règles. Vous pouvez également séparer le code des modules chargés à la demande et les charger de manière asynchrone jusqu'à ce qu'ils soient réellement

nécessaires. Grâce à la conversion du chargeur, toute forme de ressource peut être considérée comme un module, comme les modules CommonJs, les modules AMD, les modules ES6, CSS, images, JSON, Coffeescript, LESS, etc.

Évolution du système de modules<script> tag</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;script src=&quot;module1.js&quot;&gt;&lt;/script&gt; &lt;script src=&quot;module2.js&quot;&gt;&lt;/script&gt; &lt;script src=&quot;libraryA.js&quot;&gt;&lt;/script&gt; &lt;script src=&quot;module3.js&quot;&gt;&lt;/script&gt;</pre><div class="contentsignin">Copier après la connexion</div></div> <p style="text-align: left;">C'est la méthode de chargement de fichiers JavaScript la plus originale Si chaque fichier est considéré comme un module, alors leurs interfaces le sont généralement. exposé dans la portée globale, c'est-à-dire défini dans l'objet window </p> <p style="text-align: left;">Les appels d'interface des différents modules sont tous dans la même portée. Certains frameworks complexes utiliseront le concept d'espace de noms pour organiser ces modules. un exemple typique est la bibliothèque YUI. </p> <p style="text-align: left;">Cette méthode de chargement originale expose quelques inconvénients évidents : </p> <ol class=" list-paddingleft-2"> <li><p style="text-align: left;">Il est facile de provoquer des conflits de variables dans la portée globale</p></li> <li><p style="text-align: left;"> Les fichiers ne peuvent être chargés que dans l'ordre dans lequel <script> Dans les grands projets, diverses ressources sont difficiles à gérer et les problèmes accumulés à long terme conduisent à une base de code chaotique</script>

  • Spécification CommonJS
  • CommonJS est un projet né dans le but de créer un écosystème JavaScript en dehors des environnements de navigateur, comme dans les environnements de serveur et de bureau.

    La spécification CommonJS est un formulaire de module défini pour résoudre le problème de portée de JavaScript, permettant à chaque module de s'exécuter dans son propre espace de noms. Le contenu principal de cette spécification est que les modules doivent exporter des variables ou des interfaces externes via module.exports et importer la sortie d'autres modules dans la portée actuelle du module via require(). Un exemple intuitif

    Spécification AMD

    AMD (Asynchronous Module Definition) est destiné aux environnements de navigateur Conçu parce que le système de modules CommonJS est chargé de manière synchrone, l'environnement de navigateur actuel n'est pas prêt à charger les modules de manière synchrone.
    // moduleA.js
    module.exports = function( value ){
      return value * 2;
    }
    // moduleB.js
    var multiplyBy2 = require('./moduleA');
    var result = multiplyBy2(4);
    Copier après la connexion

    Le module est défini dans la fermeture via la fonction de définition, au format suivant : id est le nom du module, qui est un paramètre facultatif.

    factory est le dernier paramètre, qui enveloppe l'implémentation spécifique du module, qui est une fonction ou un objet. S'il s'agit d'une fonction, sa valeur de retour est l'interface de sortie ou la valeur du module.

    Quelques cas d'utilisation

    Définissez un module nommé myModule, qui dépend du module jQuery :
    define(id?: String, dependencies?: String[], factory: Function|Object);
    Copier après la connexion

    Remarque : Dans webpack, le nom du module n'a qu'une portée locale. Le nom du module dans Require.js a une portée globale et peut être référencé globalement.

    Définir un module anonyme sans valeur d'identifiant, généralement utilisé comme fonction de démarrage de l'application :

    AMD utilise également l'instruction require() pour charger les modules, mais contrairement à CommonJS, cela nécessite deux paramètres

    define('myModule', ['jquery'], function($) {
      // $ 是 jquery 模块的输出
      $('body').text('hello world');
    }); // 使用 require(['myModule'], function(myModule) {});
    Copier après la connexion
    Le premier paramètre [module] est un tableau, et les membres qu'il contient sont les modules à charger ; le deuxième paramètre de rappel est la fonction de rappel une fois le chargement réussi. Si le code précédent est réécrit sous forme AMD, il ressemblera à ceci :

    math.add() et le chargement du module mathématique ne sont pas synchronisés et le navigateur ne se fige pas. Alors évidemment, AMD est plus adapté aux environnements de navigateur

    Actuellement, il existe deux principales bibliothèques Javascript qui implémentent la spécification AMD : require.js et curl.js
    define(['jquery'], function($) {
      $('body').text('hello world');
    });
    Copier après la connexion

    Qu'est-ce que Webpack

    Webpack est un bundler de modules. Il effectuera une analyse statique basée sur les dépendances des modules, puis générera les ressources statiques correspondantes pour ces modules selon les règles spécifiées.
     require(['math'], function (math) {
        math.add(2, 3);
      });
    Copier après la connexion

    Fonctionnalités de WebpackRépartition du code

    Chargeur

  • 智能解析

  • 插件系统

  • 快速运行

  • webpack基本使用

    创建项目根目录

    初始化

    npm init 或 npm init -y
    Copier après la connexion

    全局安装

    npm install webpack -g
    Copier après la connexion

    局部安装,在项目目录下安装

    npm install webpack --save-dev
    Copier après la connexion

    --save: 将安装的包的信息保存在package中

    --dev:开发版本,只是项目构建的时候使用,项目构建完成后并不依赖的文件

    如果使用web开发工具,单独安装

    npm install webpack-dev-server --save-dev
    Copier après la connexion

    基本使用

    首先创建一个静态页面 index.html 和一个 JS 入口文件 entry.js:

    <!-- index.html -->
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <script src="bundle.js"></script>
    </body>
    </html>
    Copier après la connexion

    创建entry.js

    // entry.js : 在页面中打印出一句话
    document.write('It works.')
    Copier après la connexion

    然后编译 entry.js并打包到 bundle.js文件中

    // 使用npm命令 
    webpack entry.js bundle.js
    Copier après la connexion

    使用模块

    1.创建模块module.js,在内部导出内容

    module.exports = 'It works from module.js'
    Copier après la connexion

    2.在entry.js中使用自定义的模块

    //entry.js
    document.write('It works.')
    document.write(require('./module.js')) // 添加模块
    Copier après la connexion

    加载css模块

    1.安装css-loader

    npm install css-loader style-loader --save-dev
    Copier après la connexion

    2.创建css文件

    //style.css
    body { background: yellow; }
    Copier après la connexion

    3.修改 entry.js:

    require("!style-loader!css-loader!./style.css") // 载入 style.css
    document.write('It works.')
    document.write(require('./module.js'))
    Copier après la connexion

    创建配置文件webpack.config.js

    1.创建文件

    var webpack = require('webpack')
    module.exports = {
     entry: './entry.js',
     output: {
      path: __dirname,
      filename: 'bundle.js'
     },
     module: {
      loaders: [
        //同时简化 entry.js 中的 style.css 加载方式:require('./style.css')
       {test: /\.css$/, loader: 'style-loader!css-loader'}
      ]
     }
    }
    Copier après la connexion

    2.修改 entry.js 中的 style.css 加载方式:require('./style.css')

    3.运行webpack

    在命令行页面直接输入webpack

    插件使用

    1.插件安装

    //添加注释的插件
    npm install --save-devbannerplugin
    Copier après la connexion

    2.配置文件的书写

    var webpack = require('webpack')
    module.exports = {
      entry: './entry.js',
      output: {
        path: __dirname,
        filename: 'bundle.js'
      },
      module: {
        loaders: [
          //同时简化 entry.js 中的 style.css 加载方式:require('./style.css')
          {
            test: /\.css$/,
            loader: 'style-loader!css-loader'
          }
        ],
        plugins: [
          //添加注释的插件
          new webpack.BannerPlugin('This file is created by zhaoda')
        ]
      }
    }
    Copier après la connexion

    3.运行webpack

    // 可以在bundle.js的头部看到注释信息
    /*! This file is created by zhaoda */
    Copier après la connexion

    开发环境

    webpack

    --progress : 显示编译的进度

    --colors : 带颜色显示,美化输出

    --watch : 开启监视器,不用每次变化后都手动编译

    12.4.7.1. webpack-dev-server

    开启服务,以监听模式自动运行

    1.安装包

    npm install webpack-dev-server -g --save-dev
    Copier après la connexion

    2.启动服务

    实时监控页面并自动刷新

    webpack-dev-server --progress --colors
    Copier après la connexion

    自动编译

    1.安装插件

    npm install --save-dev html-webpack-plugin
    Copier après la connexion

    2.在配置文件中导入包

    var htmlWebpackPlugin = require('html-webpack-plugin')
    Copier après la connexion

    3.在配置文件中使用插件

    plugins: [
        //添加注释的插件
        new webpack.BannerPlugin('This file is created by zhaoda'),
        //自动编译
        new htmlWebpackPlugin({
          title: "index",
          filename: 'index.html', //在内存中生成的网页的名称
          template: './index.html' //生成网页名称的依据
        })
      ]
    Copier après la connexion

    4.运行项目

    webpack--save-dev
    Copier après la connexion

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    调用模式与this绑定

    在实战项目中怎样使用jquery layur弹出层

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    Video Face Swap

    Video Face Swap

    Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Partagez un moyen simple de packager des projets PyCharm Partagez un moyen simple de packager des projets PyCharm Dec 30, 2023 am 09:34 AM

    Partagez la méthode d'empaquetage de projet PyCharm simple et facile à comprendre. Avec la popularité de Python, de plus en plus de développeurs utilisent PyCharm comme outil principal pour le développement Python. PyCharm est un puissant environnement de développement intégré qui fournit de nombreuses fonctions pratiques pour nous aider à améliorer l'efficacité du développement. L’une des fonctions importantes est le packaging du projet. Cet article explique comment empaqueter des projets dans PyCharm d'une manière simple et facile à comprendre, et fournit des exemples de code spécifiques. Pourquoi packager des projets ? Développé en Python

    Tutoriel de démarrage VUE3 : empaquetage et création avec Webpack Tutoriel de démarrage VUE3 : empaquetage et création avec Webpack Jun 15, 2023 pm 06:17 PM

    Vue est un excellent framework JavaScript qui peut nous aider à créer rapidement des applications Web interactives et efficaces. Vue3 est la dernière version de Vue, qui introduit de nombreuses nouvelles fonctionnalités et fonctionnalités. Webpack est actuellement l'un des packagers de modules et outils de construction JavaScript les plus populaires, qui peut nous aider à gérer diverses ressources dans nos projets. Cet article explique comment utiliser Webpack pour empaqueter et créer des applications Vue3. 1. Installez Webpack

    Comment optimiser la maintenabilité du code Java : expérience et conseils Comment optimiser la maintenabilité du code Java : expérience et conseils Nov 22, 2023 pm 05:18 PM

    Comment optimiser la maintenabilité du code Java : expérience et conseils Dans le processus de développement logiciel, l'écriture de code avec une bonne maintenabilité est cruciale. La maintenabilité signifie que le code peut être facilement compris, modifié et étendu sans provoquer de problèmes inattendus ni d'efforts supplémentaires. Pour les développeurs Java, comment optimiser la maintenabilité du code est une question importante. Cet article partagera quelques expériences et suggestions pour aider les développeurs Java à améliorer la maintenabilité de leur code. Suivez les règles de dénomination standardisées. Les règles de dénomination standard peuvent rendre le code plus lisible.

    Comment résoudre l'erreur de complexité du code dans le code Python ? Comment résoudre l'erreur de complexité du code dans le code Python ? Jun 24, 2023 pm 05:43 PM

    Python est un langage de programmation simple, facile à apprendre et efficace, mais lorsque nous écrivons du code Python, nous pouvons rencontrer des problèmes de complexité excessive du code. Si ces problèmes ne sont pas résolus, cela rendra le code difficile à maintenir, sujet aux erreurs et réduira la lisibilité et l’évolutivité du code. Ainsi, dans cet article, nous verrons comment résoudre l’erreur de complexité du code dans le code Python. Comprendre la complexité du code La complexité du code est une mesure de la nature du code qui est difficile à comprendre et à maintenir. En Python, certains indicateurs peuvent être utilisés

    Comment utiliser les expressions régulières Python pour l'empaquetage et la distribution de code Comment utiliser les expressions régulières Python pour l'empaquetage et la distribution de code Jun 23, 2023 am 09:31 AM

    Alors que le langage de programmation Python devient de plus en plus populaire, de plus en plus de développeurs commencent à écrire du code en Python. Mais dans la réalité, nous devons souvent regrouper ces codes et les distribuer à d’autres pour qu’ils les utilisent. Cet article explique comment utiliser les expressions régulières Python pour l'empaquetage et la distribution de code. 1. Packaging de code Python En Python, nous pouvons utiliser des outils tels que setuptools et distutils pour empaqueter notre code. Ces outils peuvent convertir des fichiers Python, des modules

    Comment résoudre l'erreur de mauvaise maintenabilité du code Python ? Comment résoudre l'erreur de mauvaise maintenabilité du code Python ? Jun 25, 2023 am 11:58 AM

    Python, en tant que langage de programmation de haut niveau, est largement utilisé dans le développement de logiciels. Bien que Python présente de nombreux avantages, un problème auquel de nombreux programmeurs Python sont souvent confrontés est que le code est moins maintenable. La maintenabilité du code Python inclut la lisibilité, l'évolutivité et la réutilisabilité du code. Dans cet article, nous nous concentrerons sur la façon de résoudre le problème de la mauvaise maintenabilité du code Python. 1. Lisibilité du code La lisibilité du code fait référence à la lisibilité du code, qui est au cœur de la maintenabilité du code.

    Explication détaillée des fonctions VSCode : Comment cela vous aide-t-il à améliorer l'efficacité du travail ? Explication détaillée des fonctions VSCode : Comment cela vous aide-t-il à améliorer l'efficacité du travail ? Mar 25, 2024 pm 05:27 PM

    Explication détaillée des fonctions VSCode : Comment cela vous aide-t-il à améliorer l'efficacité du travail ? Avec le développement continu de l'industrie du développement de logiciels, la recherche par les développeurs de l'efficacité du travail et de la qualité du code est devenue un objectif important dans leur travail. Dans ce processus, le choix de l’éditeur de code devient une décision cruciale. Parmi les nombreux éditeurs, Visual Studio Code (VSCode en abrégé) est apprécié par la majorité des développeurs pour ses fonctions puissantes et son évolutivité flexible. Cet article présentera en détail certaines fonctions de VSCode et discutera

    Déclaration d'indépendance des applications Python : le chemin vers la liberté de PyInstaller Déclaration d'indépendance des applications Python : le chemin vers la liberté de PyInstaller Feb 20, 2024 am 09:27 AM

    PyInstaller : Indépendance des applications Python PyInstaller est un outil de packaging Python open source qui regroupe les applications Python et leurs dépendances dans un fichier exécutable indépendant. Ce processus élimine la dépendance à l'égard de l'interpréteur Python tout en permettant aux applications de s'exécuter sur diverses plates-formes, notamment Windows, MacOS et Linux. Processus de packaging Le processus de packaging de PyInstaller est relativement simple et implique les étapes suivantes : L'option pipinstallpyinstallerpyinstaller--onefile--windowedmain.py--onefile crée un seul fichier.

    See all articles