当前位置:首页 > 生活百科

webpack入门教程(webpack入门知识详细介绍)

栏目:生活百科日期:2025-04-10浏览:0

前言

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。

这是官网对webpack的解释。提到模块,模块顾名思义是独立的JS文件。与之相近的词模块化,通俗地讲就是我们平时组织和管理代码方法的一种实现。

战前准备

我们先来测试一下webpack的打包。

1.初始化

创建项目目录

mkdir webpackmini 

2.安装webpack依赖

yarn add webpack -D 

or

npm install webpack -D 

3.安装webpack-cli依赖 这里,稍微注意一下,我们可以下载这个版本的,最新版的安装之后好像不可用。

yarn add webpack-cli@3.3.12 -D 

or

npm install webpack@3.3.12 -D 

创建入口文件

1.创建项目主目录

mkdir src 

2.创建入口文件

touch main.js 

3.编辑入口文件

我们这里使用最简单的一行代码。

console.log('maomin1'); 

创建编辑webpack 配置文件

在项目根目录下键入命令:

touch webpack.config.js 

并编辑。

const path = require('path');  module.exports = {  mode:'development',  entry:'./src/main.js',  output:{    path:path.resolve(__dirname,'dist'),    filename:'bundle.min.js'  }} 

运行测试打包

我们这里使用 npx webpack 命令进行打包。打包成功!

我们来到打包好的bundle.min.js文件,会看到以下代码:

/*  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)* or disable the default devtool with "devtool: false".* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ /******/ (() => { // webpackBootstrap  /******/  var __webpack_modules__ = ({    /***/ "./src/main.js":    /*!*********************!*    !*** ./src/main.js ***!    *********************/    /***/ (() => {      eval("console.log('maomin1');nn//# sourceURL=webpack://webpackmini/./src/main.js?");      /***/ })    /******/  });  /************************************************************************/  /******/  /******/  // startup  /******/  // Load entry module and return exports  /******/  // This entry module can't be inlined because the eval devtool is used.   /******/  var __webpack_exports__ = {};  /******/  __webpack_modules__["./src/main.js"]();  /******/  /******/ })() ; 

我们将注释删掉后,会精简不少!

(() => {  var __webpack_modules__ = ({    "./src/main.js":    (() => {eval("console.log('maomin1');nn//# sourceURL=webpack://webpackmini/./src/main.js?");})  });   var __webpack_exports__ = {};  __webpack_modules__["./src/main.js"]();})(); 

准备实战

开始实战实现一个基础版的webpack。

1.首先我们在项目根目录下创建一个文件夹。

mkdir maominpack 

2.然后,在maominpack文件夹下创建一个bin文件夹

mkdir bin 

3.最后在bin文件夹下创建一个maominpack.js文件

编辑如下:

#!/usr/bin/env nodeconst fs = require('fs'); const ejs = require('ejs');const config = require('../../webpack.config.js');const entry = config.entry;const output = `${config.output.path}/${config.output.filename}`;const content = fs.readFileSync(entry,'utf8');let template = ` (() => {    var __webpack_modules__ = ({    "&<%-entry%>":    (() => {    eval("&<%-content%>");    })                    });      var __webpack_exports__ = {};     __webpack_modules__["&<%-entry%>"]();     })()     ;     `let package = ejs.render(template,{  entry,  content}); fs.writeFileSync(output,package); 

首先,我们在头部指定环境为node环境,并且引入fs模块。然后,我们引入了ejs依赖,如果不是很了解ejs的,可以去官网浏览下。这里就简单的介绍一下。

“E” 代表什么?可以表示 “可嵌入(Embedded)”,也可以是“高效(Effective)”、“优雅(Elegant)”或者是“简单(Easy)”。EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。EJS 没有如何组织内容的教条;也没有再造一套迭代和控制流语法;有的只是普通的 JavaScript 代码而已。

我们看到在将带有绑定值的字符串赋值给template变量,我们这里使用的ejs.render(),第一个参数是需要处理的字符串,第二个参数使我们需要修改的值,是一个对象。

4.在package.json文件下编辑如下:

{     "name": "maominpack",   "version": "1.0.0",    "bin":{     "maominpack":"bin/maominpack.js"   },       "main": "index.js",   "license": "MIT" } 

5.为其命令创建快捷方式

npm link  

6.为其配置在其他目录也可使用此命令

npm config ls 

7.验证打包

我们将src/main.js修改一下。

console.log('maomin2'); 

然后,键入命令:

maominpack 

最后,检查一下bundle.min.js:

(() => {  var __webpack_modules__ = ({     "./src/main.js":    (() => {      eval("console.log('maomin2');");    })  });   var __webpack_exports__ = {};   __webpack_modules__["./src/main.js"]();})() ; 

发现,我们打包成功了。这里我们只是实现了最基础的字符串替换打包功能,webpack还有很多值得玩的特性。

“webpack入门教程(webpack入门知识详细介绍)” 的相关文章

农村养老保险网上怎么缴费(微信居民社保缴纳步骤)

随着互联网技术的发展和普及,现在很多手续都可以在线上进行,包括缴纳城乡居民养老保险,但是由于部分农民朋友不熟悉网上缴费流程,可能会因此出现养老保险漏缴的情况。最...

4k激光电视品牌排行榜(3款激光电视跻身top10及报价 )

在彩电行业,相比于零售量而言,零售额才能更准确体现产品水平与市场地位。中怡康第51周(12月16-22日)数据监测显示,海信电视本周零售额为24.2%,在所有品...

产品经理与项目经理区别在哪(深入分析两者本质区别)

作为互联网从业人员,有不少PM都自己的角色都存在疑惑吧,我到底是产品经理,还是项目经理呢?特别是对于一些小的创业公司而言,恐怕大多数人都是身兼多职,自己都搞不明...

大学生创业大赛策划书怎么写, 创新创业大赛作品范例欣

第五届中国“互联网”大学生创新创业大赛闭幕式。(图片由浙江大学提供)“我从来没有想到过放弃,做实验是一件很有意思的事情。”中山大学附属中学的高三学生叶可塑说。不...

互联网创业项目怎么做,2020年互联网创业项目排行榜

第一个:知乎带货你是否天天去知乎看文章,找乐子。其中会不会碰到一些这样的带货广告。就是上边这个卡片,点击就可以购买了。这是知乎的带货橱窗,你也可以搞。先让大家看...

mp3连接电脑不显示设备只充电(vip歌曲转换成mp3格式推

在电脑当中,如果想要听歌或者看电影,那么必须有音频设备支持才可以。但最近有用户表示,电脑重装系统后提示“没有音频设备”,这是怎么回事呢?接下来小编就为大家分享...

exmail企业邮箱注册入口(免费版企业邮箱注册)

腾讯免费企业邮箱详解解读:人数无上限1G邮箱容量2G个人中转站2G企业网盘限制对外发信上限500封/天,支持POPIMAP可以使用FOXMAIL等第三方邮件管理...

固定ip地址怎么设置(电脑固定IP地址设置教程)

有很多深度技术用户都是办公室人员,因为公司网络中有很多电脑,经常有同事的电脑会出现ip地址冲突的问题,每次都要重启路由器或者修改ip来处理,不单单很麻烦而且导致...

去泰国玩一周大概要多少钱,老司机教你一个泰国旅游省钱

去泰国旅游需要带多少钱?去泰国旅游大家一般会花一周到半个月的时间,主要花费在机票、酒店、餐饮、购物和观光体验上。 去泰国旅游机票花费机票有淡旺季这大家都知道,节...

养殖鸽子大棚造价多少钱(养殖鸽子成本)

肉鸽养殖对鸽舍的要求不高,闲置的民房、旧仓库、楼顶、房屋等稍加改造均可作为饲养场所,有条件的还可以建设专门的鸽舍,建筑材料的不同鸽舍分为彩钢瓦式、大棚式等,大棚...