Table des matières
Démarrer
输出(Output))
应用
HtmlWebpackPlugin
Maison interface Web js tutoriel Output, le concept de base du webpack

Output, le concept de base du webpack

Aug 09, 2022 pm 06:32 PM
webpack output

Après avoir rassemblé tous les éléments, vous devez également indiquer à Webpack où empaqueter l'application. L'attribut de sortie de webpack décrit comment gérer le code groupé. L'article suivant vous donnera une compréhension approfondie de la sortie (Output) dans le concept de base de webpack. J'espère qu'il vous sera utile !

Output, le concept de base du webpack

Sortie : la configuration de l'option de sortie peut contrôler la manière dont Webpack écrit les fichiers compilés sur le disque dur. Notez que même s'il peut y avoir plusieurs points d'entrée, une seule une configuration de sortie est spécifiée.

Démarrer


Nous initialisons d'abord un projet avec npm init, installons webpack et webpack-cli localement, puis créons dans le répertoire racine des dossiers index.html, webpack.config.js et src, créez un autre main.js à l'intérieur du code du dossier>Comme fichier d'entrée
npm init初始化一个项目,本地安装webpackwebpack-cli,然后在根目录创建index.htmlwebpack.config.jssrc文件夹,在文件夹内再创建一个main.js作为入口文件

准备工作完成后如图所示:

Output, le concept de base du webpack

main.js

function Component(){
    var div=document.createElement('div')
    div.innerHTML="来一起学习出口配置吧~"
    return div
}
document.body.appendChild(Component())
Copier après la connexion

index.html

    <script></script>
Copier après la connexion

packag.json

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "build":"webpack" //加上
},
Copier après la connexion

接下来就是配置部分:webpack.config.js

输出(Output))


配置 output 选项可以控制 webpack 如何向硬盘写入编译文件。

注意,即使可以存在多个入口起点,但只指定一个输出配置

下面是输出配置的几个概念:

1、path

path指定资源输出的位置,要求值必须为绝对路径,如:

const path=require('path')
module.exports={
    entry:'./src/main.js',
    output:{
        filename:'bundle.js',
        //将资源输出位置设置为该项目的dist目录
        path: path.resolve(__dirname, 'dist')
    },
}
Copier après la connexion

在Webpack 4之后,output.path已经默认为dist目录。除非我们需要更改它,否则不必单独配置,所以如果是webpack4以上,你可以写成:

module.exports={
    entry:'./src/main.js',
    output:{
        filename:'bundle.js',
    },
}
Copier après la connexion
Copier après la connexion

2、filename

filename的作用是控制输出资源的文件名,其形式为字符串。在这里我把它命名为bundle.js,意为我希望资源输出在一个叫bundle.js的文件中:

module.exports={
    entry:'./src/main.js',
    output:{
        filename:'bundle.js',
    },
}
Copier après la connexion
Copier après la connexion

打包后如图,会自动生成一个dist文件夹,里面有个bundle.js文件

Output, le concept de base du webpack

filename可以不仅仅是bundle的名字,还可以是一个相对路径

即便路径中的目录不存在也没关系,Webpack会在输出资源时创建该目录,比如:

  module.exports = {
    output: {
      filename: './js/bundle.js',
    },
  };
Copier après la connexion

打包后如图:

Output, le concept de base du webpack

在多入口的场景中,我们需要对产生的每个bundle指定不同的名字,Webpack支持使用一种类似模板语言的形式动态地生成文件名

在此之前,我们再去src中创建一个新的入口文件

vender.js:

function Component(){
    var div=document.createElement('div')
    div.innerHTML="我是第二个入口文件"
    return div
}
document.body.appendChild(Component())
Copier après la connexion

webpack.config.js:

module.exports = {
    entry:{
        main:'./src/main.js',
        vender:'./src/vender.js'
    },
    output: {
      filename: '[name].js',
    },
 };
Copier après la connexion

打包后如图:

Output, le concept de base du webpack

filename中的[name]会被替换为chunk name即main和vender。因此最后会生成vendor.jsmain.js

此时如果你希望看到内容,你还需在index.html中改下内容,将路径对应上最后打包出来的bundle

    <script></script>
    <script></script>
Copier après la connexion

[问题]这时候就会有个需求了,如何让index.html自动帮我们将生成的bundle添加到html中呢?这里可以用到插件 HtmlWebpackPlugin,详细看下方

3、其他

除了[name]可以指代chunk name以外,还有其他几种模板变量可以用于filename的配置中:

  • [hash]:指代Webpack此次打包所有资源生成的hash
  • [chunkhash]:指代当前chunk内容的hash
  • [id]:指代当前chunk的id
  • [query]:指代filename配置项中的query

它们可以:控制客户端缓存

[hash][chunkhash]都与chunk内容直接相关,如果在filename中使用,当chunk的内容改变时,可以同时引起资源文件名的更改,从而使用户在下一次请求资源文件时会立即下载新的版本而不会使用本地缓存。

[query]

Une fois le travail de préparation terminé, il se présente comme indiqué sur la figure :

Output, le concept de base du webpackmain.js

🎜
import Img from './img.jpg';
function component() {
    //...
    var img = new Image();
    myyebo.src = Img //请求url
	//...
}
Copier après la connexion
Copier après la connexion
🎜🎜index.html🎜🎜
        {
          //...
          query: {
            name: '[name].[ext]',
            outputPath: 'static/img/',
            publicPath: './dist/static/img/'
          }
        }
Copier après la connexion
Copier après la connexion
🎜 🎜packag.json 🎜🎜
//假设当前html地址为:https://www.example.com/app/index.html
//异步加载的资源名为 1.chunk.js
pubilicPath:"" 		//-->https://www.example.com/app/1.chunk.js
pubilicPath:"./js" 	//-->https://www.example.com/app/js/1.chunk.js
pubilicPath:"../assets/"  	//-->https://www.example.com/assets/1.chunk.js
Copier après la connexion
Copier après la connexion
🎜L'étape suivante est la partie configuration : webpack.config.js🎜🎜🎜Output)🎜🎜🎜🎜L'option de configuration output peut contrôler la façon dont le webpack écrit compilé fichiers sur le disque dur.
🎜🎜Notez que même s'il peut y avoir plusieurs points de départ entrée, une seule configuration sortie est spécifiée🎜🎜Voici plusieurs concepts de configuration de sortie :🎜 🎜🎜 🎜1. path🎜🎜🎜🎜🎜path spécifie l'emplacement de sortie de la ressource. La valeur requise doit être un chemin absolu🎜, tel que : 🎜
//假设当前html地址为:https://www.example.com/app/index.html
//异步加载的资源名为 1.chunk.js
pubilicPath:"/" 	//-->https://www.example.com/1.chunk.js
pubilicPath:"/js/" 	//-->https://www.example.com/js/1.chunk.js
Copier après la connexion
Copier après la connexion
🎜🎜Après Webpack 4, output.path est défini par défaut sur le répertoire dist🎜. . À moins que nous n'ayons besoin de le modifier, il n'est pas nécessaire de le configurer séparément, donc s'il s'agit de webpack4 ou supérieur, vous pouvez écrire : 🎜
//假设当前html地址为:https://www.example.com/app/index.html
//异步加载的资源名为 1.chunk.js
pubilicPath:"http://cdn.com/" 	//-->http://cdn.com/1.chunk.js
pubilicPath:"https://cdn.com/"	//-->https://cdn.com/1.chunk.js
pubilicPath:"//cdn.com/assets"	//-->//cdn.com/assets/1.chunk.js
Copier après la connexion
Copier après la connexion
🎜🎜🎜2, filename🎜🎜🎜🎜La fonction du nom de fichier est de 🎜contrôler le fichier nom de la ressource de sortie🎜, qui se présente sous la forme d'une chaîne de caractères. Ici, je l'ai nommé bundle.js, ce qui signifie que je veux que les ressources soient sorties dans un fichier appelé bundle.js : 🎜
module.exports={
    entry:'./src/main.js',
    output:{
        filename:'bundle.js',
    },
}
//webpack4以后dist会默认生成,于是这里省略了path
Copier après la connexion
Copier après la connexion
🎜Comme le montre la figure après l'emballage, un dist sera dossier généré automatiquement, il y a un fichier bundle.js 🎜🎜Output, le concept de base du webpack🎜🎜🎜le nom de fichier peut non seulement être le nom du bundle, mais aussi un chemin relatif🎜🎜🎜Peu importe même si le répertoire dans le chemin n'existe pas, Webpack Ce répertoire sera créé lors de la sortie des ressources, par exemple : 🎜
module.exports={
    entry: {
      main: './src/main.js',
      vender: './src/vender.js'
    },
    output: {
      filename: '[name].js',
      path: __dirname + '/dist/assets' //指定打包后的bundle放在/dist/assets目录下
    }
  }
// 打包后生成:./dist/assets/main.js, ./dist/assets/vender.js
Copier après la connexion
Copier après la connexion
🎜Après packaging, il ressemble à ceci : 🎜🎜Output, le concept de base du webpack🎜🎜🎜Dans un scénario à entrées multiples🎜, nous devons spécifier un nom différent pour chaque bundle généré. 🎜Webpack prend en charge l'utilisation d'un langage de modèle similaire. Générez dynamiquement des noms de fichiers sous la forme🎜🎜🎜Avant cela, nous créons un nouveau fichier d'entrée dans src🎜🎜vender.js : 🎜
npm install --save-dev html-webpack-plugin
Copier après la connexion
Copier après la connexion
🎜webpack. config.js : 🎜
const HtmlWebpackPlugin=require('html-webpack-plugin') //加载模块
module.exports = {
    entry:{
        main:'./src/main.js',
        vender:'./src/vender.js'
    },
    //添加插件
    plugins:[
        new HtmlWebpackPlugin({
            title:'output management'
        })
    ],
    output: {
      filename: '[name].js',
    },
 };
Copier après la connexion
Copier après la connexion
🎜Packaging Comme indiqué ci-dessous : 🎜🎜image. png🎜🎜[name] dans le nom de fichier sera remplacé par le nom du morceau, à savoir principal et fournisseur. Par conséquent, vendor.js et main.js seront générés à la fin. Si vous souhaitez voir le contenu à ce moment-là, vous devez toujours ajouter index. .html Modifiez le contenu au milieu et faites correspondre le chemin d'accès au dernier bundle emballé🎜rrreee
🎜[Question] Il sera nécessaire à ce moment-là, comment laisser index.html code> nous aide automatiquement à générer le fichier Qu'en est-il de l'ajout d'un bundle au HTML ? Le plug-in HtmlWebpackPlugin peut être utilisé ici, voir ci-dessous pour plus de détails🎜
🎜🎜🎜3 Autres🎜🎜🎜🎜En plus de [name] qui peut faire référence au nom du morceau, ici. existe plusieurs autres variables de modèle. Peuvent être utilisées dans la configuration du nom de fichier : 🎜
  • [hash] : fait référence au hachage généré par Webpack pour empaqueter toutes les ressources cette fois
  • [chunkhash] : fait référence au hachage du contenu du chunk actuel
  • li>
  • [id] : fait référence à l'identifiant du chunk actuel
  • [query] : fait référence à la requête dans le nom du fichier élément de configuration
🎜Ils peuvent :🎜Contrôler le cache du client 🎜🎜🎜[hash] et [chunkhash] sont directement liés au contenu du chunk . S'il est utilisé dans le nom de fichier, lorsque le contenu du bloc change, le fichier de ressources peut être modifié en même temps, de sorte que la prochaine fois que l'utilisateur demandera le fichier de ressources, la nouvelle version sera téléchargée immédiatement sans utiliser la version locale. cache. 🎜🎜[query] peut également avoir un effet similaire, mais cela n'a rien à voir avec le contenu du fragment et doit être spécifié manuellement par le développeur. 🎜🎜🎜🎜4, chemin public🎜🎜🎜

publicPath是一个非常重要的配置项,用来指定资源的请求位置

以加载图片为例

import Img from './img.jpg';
function component() {
    //...
    var img = new Image();
    myyebo.src = Img //请求url
	//...
}
Copier après la connexion
Copier après la connexion
        {
          //...
          query: {
            name: '[name].[ext]',
            outputPath: 'static/img/',
            publicPath: './dist/static/img/'
          }
        }
Copier après la connexion
Copier après la connexion

由上面的例子所示,原本图片请求的地址是./img.jpg,而在配置上加上publicPath后,实际路径就变成了了./dist/static/img/img.jpg,这样就能从打包后的资源中获取图片了

publicPath有3种形式:

  • HTML相关

    我们可以将publicPath指定为HTML的相对路径,在请求这些资源时会以当前页面HTML所在路径加上相对路径,构成实际请求的URL

    //假设当前html地址为:https://www.example.com/app/index.html
    //异步加载的资源名为 1.chunk.js
    pubilicPath:"" 		//-->https://www.example.com/app/1.chunk.js
    pubilicPath:"./js" 	//-->https://www.example.com/app/js/1.chunk.js
    pubilicPath:"../assets/"  	//-->https://www.example.com/assets/1.chunk.js
    Copier après la connexion
    Copier après la connexion
  • Host相关

    若publicPath的值以“/”开始,则代表此时publicPath是以当前页面的host name为基础路径的

    //假设当前html地址为:https://www.example.com/app/index.html
    //异步加载的资源名为 1.chunk.js
    pubilicPath:"/" 	//-->https://www.example.com/1.chunk.js
    pubilicPath:"/js/" 	//-->https://www.example.com/js/1.chunk.js
    Copier après la connexion
    Copier après la connexion
  • CDN相关

    上面两个都是相对路径,我们也可以使用绝对路径的形式配置publicPath

    这种情况一般发生于静态资源放在CDN上面时,由于其域名与当前页面域名不一致,需要以绝对路径的形式进行指定

    当publicPath以协议头或相对协议的形式开始时,代表当前路径是CDN相关

    //假设当前html地址为:https://www.example.com/app/index.html
    //异步加载的资源名为 1.chunk.js
    pubilicPath:"http://cdn.com/" 	//-->http://cdn.com/1.chunk.js
    pubilicPath:"https://cdn.com/"	//-->https://cdn.com/1.chunk.js
    pubilicPath:"//cdn.com/assets"	//-->//cdn.com/assets/1.chunk.js
    Copier après la connexion
    Copier après la connexion

应用


1、单个入口

在 webpack 中配置 output 属性的最低要求是将它的值设置为一个对象,包括以下两点:

  • filename 用于输出文件的文件名。
  • 目标输出目录 path 的绝对路径
module.exports={
    entry:'./src/main.js',
    output:{
        filename:'bundle.js',
    },
}
//webpack4以后dist会默认生成,于是这里省略了path
Copier après la connexion
Copier après la connexion

2、多个入口

如果配置创建了多个单独的 "chunk",则应该使用占位符来确保每个文件具有唯一的名称

这里用到了上面所讲的filename的[name]

另外,如果想将这些资源放进指定的文件夹,可以加上path配置

module.exports={
    entry: {
      main: './src/main.js',
      vender: './src/vender.js'
    },
    output: {
      filename: '[name].js',
      path: __dirname + '/dist/assets' //指定打包后的bundle放在/dist/assets目录下
    }
  }
// 打包后生成:./dist/assets/main.js, ./dist/assets/vender.js
Copier après la connexion
Copier après la connexion

HtmlWebpackPlugin


本章上方遗留的问题可以通过使用插件HtmlWebpackPlugin解决

安装插件

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

配置插件

const HtmlWebpackPlugin=require('html-webpack-plugin') //加载模块
module.exports = {
    entry:{
        main:'./src/main.js',
        vender:'./src/vender.js'
    },
    //添加插件
    plugins:[
        new HtmlWebpackPlugin({
            title:'output management'
        })
    ],
    output: {
      filename: '[name].js',
    },
 };
Copier après la connexion
Copier après la connexion

打包

打包完成后你会发现dist中出现了一个新的index.html,上面自动帮我们添加所生成的资源,打开后会发现浏览器会展示出内容

Output, le concept de base du webpack

这意味着,以后初始化一个项目就不必写index.html

源码可从这里获取:

https://sanhuamao1.coding.net/public/webpack-test/webpack-test/git/files

更多编程相关知识,请访问:编程视频!!

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)

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

Quelle est la différence entre vite et webpack Quelle est la différence entre vite et webpack Jan 11, 2023 pm 02:55 PM

Différences : 1. La vitesse de démarrage du serveur webpack est plus lente que celle de Vite ; car Vite n'a pas besoin d'être empaqueté au démarrage, il n'est pas nécessaire d'analyser les dépendances du module et de compiler, donc la vitesse de démarrage est très rapide. 2. La mise à jour à chaud de Vite est plus rapide que le webpack ; en termes de HRM de Vite, lorsque le contenu d'un certain module change, laissez simplement le navigateur demander à nouveau le module. 3. Vite utilise esbuild pour pré-construire les dépendances, tandis que webpack est basé sur le nœud. 4. L'écologie de Vite n'est pas aussi bonne que celle du webpack, et les chargeurs et plug-ins ne sont pas assez riches.

Comment utiliser PHP et Webpack pour le développement modulaire Comment utiliser PHP et Webpack pour le développement modulaire May 11, 2023 pm 03:52 PM

Avec le développement continu de la technologie de développement Web, la séparation front-end et back-end et le développement modulaire sont devenus une tendance répandue. PHP est un langage back-end couramment utilisé. Lors du développement modulaire, nous devons utiliser certains outils pour gérer et empaqueter les modules. Webpack est un outil d'empaquetage modulaire très facile à utiliser. Cet article explique comment utiliser PHP et Webpack pour le développement modulaire. 1. Qu'est-ce que le développement modulaire ? Le développement modulaire fait référence à la décomposition d'un programme en différents modules indépendants. Chaque module a sa propre fonction.

Comment Webpack convertit-il le module es6 en es5 ? Comment Webpack convertit-il le module es6 en es5 ? Oct 18, 2022 pm 03:48 PM

Méthode de configuration : 1. Utilisez la méthode d'importation pour placer le code ES6 dans le fichier de code js emballé ; 2. Utilisez l'outil npm pour installer l'outil babel-loader, la syntaxe est "npm install -D babel-loader @babel/core @babel/preset- env"; 3. Créez le fichier de configuration ".babelrc" de l'outil babel et définissez les règles de transcodage ; 4. Configurez les règles de packaging dans le fichier webpack.config.js.

Utilisez Spring Boot et Webpack pour créer des projets frontaux et des systèmes de plug-ins Utilisez Spring Boot et Webpack pour créer des projets frontaux et des systèmes de plug-ins Jun 22, 2023 am 09:13 AM

Alors que la complexité des applications Web modernes continue d’augmenter, la création d’excellents systèmes d’ingénierie frontale et de plug-ins devient de plus en plus importante. Avec la popularité de Spring Boot et Webpack, ils sont devenus une combinaison parfaite pour créer des projets frontaux et des systèmes de plug-ins. SpringBoot est un framework Java qui crée des applications Java avec des exigences de configuration minimales. Il fournit de nombreuses fonctionnalités utiles, telles que la configuration automatique, afin que les développeurs puissent créer et déployer des applications Web plus rapidement et plus facilement. W

Quels fichiers le package Vue Webpack peut-il contenir ? Quels fichiers le package Vue Webpack peut-il contenir ? Dec 20, 2022 pm 07:44 PM

En vue, webpack peut regrouper des fichiers js, css, images, json et autres dans des formats appropriés pour une utilisation par le navigateur. Dans webpack, js, css, images, json et d'autres types de fichiers peuvent être utilisés comme modules. Diverses ressources de module dans webpack peuvent être regroupées et fusionnées en un ou plusieurs packages, et pendant le processus de packaging, les ressources peuvent être traitées, comme la compression d'images, la conversion de scss en css, la conversion de la syntaxe ES6 en ES5, etc., qui peuvent être reconnu par le type de fichier HTML.

Qu'est-ce que Webpack ? Explication détaillée de son fonctionnement ? Qu'est-ce que Webpack ? Explication détaillée de son fonctionnement ? Oct 13, 2022 pm 07:36 PM

Webpack est un outil de packaging de modules. Il crée des modules pour différentes dépendances et les regroupe tous dans des fichiers de sortie gérables. Ceci est particulièrement utile pour les applications d'une seule page (le standard de facto pour les applications Web aujourd'hui).

Paramètres de sortie frontale Paramètres de sortie frontale Feb 19, 2024 am 09:30 AM

La configuration de la sortie frontale nécessite des exemples de code spécifiques. Dans le développement front-end, la configuration de la sortie est une configuration très importante. Il est utilisé pour définir le chemin du fichier, le nom du fichier et les chemins de ressources associés générés après le packaging du projet. Cet article présentera le rôle de la configuration de la sortie frontale, les options de configuration courantes et donnera des exemples de code spécifiques. Le rôle de la configuration de sortie : l'élément de configuration de sortie est utilisé pour spécifier le chemin du fichier et le nom du fichier générés après le packaging du projet. Il détermine le résultat final du projet. Emballé dans un webpack, etc.

See all articles