0

0

Webpack新手入门应该怎么做?

零下一度

零下一度

发布时间:2017-06-26 15:24:25

|

1552人浏览过

|

来源于php中文网

原创

Webpack入门教程(学习笔记)

1、简介

此教程涉及不深入,并除去了很多复杂的东西,记录也坚持以最简单为主,让初学者大概对webpack有一个简单的系统认识,更好的去进一步深入学习webpack

 

Webpack是一个Javscript的打包程序,webpack会自动分析每个模块之间的依赖,然后将这些依赖统一打包成一个或多个文件。

 

webpack最强悍的地方是可以通过官方、第三方的插件以及加载器(loader)来实现对各种文件的解析、编译。

 

Webpack最重要的四个核心概念:入口(entry)、输出(output)、加载器(loader)、插件(plugin),下面我以做笔记的方式尽量说明几个概念的意思,如果想深入或者笔记中有不太明白的地方,可以到官方网站的文档中去查看。

 

2、入口(entry)

webpack的入口就相当于一个网页的index文件,有了入口文件,这样webpack才知道从何下手,webpack会根据这个入口文件去分析入口文件所依赖的所有文件,然后将这些所有的依赖文件打包成一个或者多个文件。

 

webpack提供了单个入口语法、对象语法。单个入口语法也是最简单的一种,只有一个入口文件,即一个进一个出。比如下面的这一种。

1 {2   entry: './index.js'3 }

对象语法主要是针对多个页面的应用程序,告诉webpack有三个入口文件,当打包完成的时候也是三个文件,这三个文件相互独立,每个文件只包含自己所依赖的文件。比如下面这样:

1  {2   entry: {3    hello1: './hello1.js',4    hello2: './hello2.js'5   }6  }

 

Voicenotes
Voicenotes

Voicenotes是一款简单直观的多功能AI语音笔记工具

下载

 

3、输出(output)

webpack提供了output属性,来控制webpack如何把编译好的文件写入到硬盘中,输入和输出是对应的,有输入就有输出。但是必须注意一点,可以存在多个输入,但是只能存在一个输出,那怎么来输出多个独立的编译好的文件呢?webpack中当然有应对的机制。

 

webpack要求output属性为对象,并且必须包含两个属性:filenamepath。顾名思义filename即输出文件的文件名,而path则为输出文件的绝对路径(注意,path必须为决定路径)

 

单个入口output属性写法:

1 {2     entry: './index.js',3     output: {4       path: path.resolve(__dirname, 'app'), //path为nodejs自身的库。__dirname为nodejs在运行过程中的一个环境变量,里面是当前文件夹的完整目录名。resolve方法是把相对路径的app目录解析为一个决定路径。5 6      filename: 'bundle.js'7  }8 }

 

webpack内置了多个变量来应对多个入口文件,如[name][hash][id][chunkhash],通过变量来保证每个文件的唯一性来达到生成多个文件,在生成过程中webpack会把这几个变量替换为相应的字符串用于保证文件的唯一性。

 

多个入口output属性写法:

1 {2     entry: './index.js',3     output: {4         path: path.resolve(__dirname, 'app'),5         filename: [name]-[hash]-bundle.js6      }7 }

 

 

4、加载器(loader)

loader可以对不同类型的文件进行编译转换,比如jsxtypescript直接拿在浏览器上运行是不能运行的,那么我们在编写程序的时候需要借助jsx以及typescript等高效的库来提高我们编写程序的效率,但是我们又需要能正常使用,如果每种文件类型我们都通过一种转换工具,那么就显的很麻烦,所以laoder就是来处理这样的工作。

 

首先在使用loader的时候我们需要安装相应的插件,比如es2015,那我们安装babel-loader,如果是css,那我们安装css-loader,通过下面的module属性里面的rules数组来对需要转换的文件设置loader

 

 1 { 2     entry: './index.js', 3     output: { 4         path: path.resolve(__dirname, 'app'), 5         filename: [name]-[hash]-bundle.js 6     }, 7     module: { 8         rules : [ 9             {test: /\.js$/, use: 'babel-loader'}10          ]11      }12 }

 

上面的rules是一个数组,每个元素是一个对象,对象里面包含了两个属性testusetest的值是一个正则表达式,它的作用是将当前loader用于什么文件,这里正则表达式就是用来匹配你需要转换的文件类型,use是当前匹配到的文件用什么加载器来转换、编译。

 

有三种方式来使用loader加载器

1webpack配置文件

2require语句中使用

3、通过命令行使用

 

第一种上面我们已经说了,下面简单的介绍一下第二种和第三种,第二种使用方法是我们在require或者import文件的时候可以直接使用,比如下面的代码:

 

1 require('babel-loader!./hello.js')

或者

1 Import('babel-loader!./hello.js')

 

第三种方式是直接通过webpack提供的命令行工具—module-bind使用,比如下面的代码:

1 webpack —module-bind 'js=babel-loader'

 

5、插件(plugin)

插件用于解决loader无法解决的事情,比如给每个js文件进行添加著作标记、压缩文件等功能,每个插件都可能有参数选项,每个插件在使用的时候也必须使用new操作符来建立一个插件的实例。插件通过plugins属性来设置,plugins是一个数组,每个元素代表一个插件的实例。因为插件有官方的还有第三方的,所以不会一一去说怎么使用,只是给大家简单演示一下,大家需要用到哪个插件再去查这个插件的api

 

 1 const HtmlWebpackPlugin = require('html-webpack-plugin'); 2 //首先要使用插件,必须先引入插件 3   4 { 5   entry: './index.js', 6   output: { 7    path: path.resolve(__dirname, 'app'), 8    filename: [name]-[hash]-bundle.js 9    },10   module: {11     rules : [12        {test: /\.js$/, use: 'babel-loader'}13     ]14    },15    plugins: [16     new HtmlWebpackPlugin({telmplate : './index.html'})  //通过plugins来使用你需要使用插件。17    ]18 }

6、总结

通过上面的学习,你可以了解到webpack的四个核心,入口、输出、加载器、插件,入口就是你要编译的是哪个文件,指定了过后webpack会自行寻找依赖的文件打包编译。输出就是编译转换好了过后把文件写入到硬盘的哪里。加载器就是对不同类型的文件转换,从而让浏览器能直接运行。插件做的是loader无法解决的事情。

 

 

其实webpack的配置并没有想象中的那么复杂,webpack的配置文件就是一个js文件,只要对webpack有一个系统的认识后,你就知道我该从哪里下手,该从哪里入手了。

 

 

 

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

178

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

35

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

79

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

2

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

4

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

24

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

72

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webpack4.x---十天技能课堂
Webpack4.x---十天技能课堂

共20课时 | 1.4万人学习

两小时学会 Webpack
两小时学会 Webpack

共14课时 | 1.7万人学习

Node.js-前端工程化必学
Node.js-前端工程化必学

共19课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号