3 webpack自动化构建工具

1、自动化构建工具 -> 构建打包,使开发者更专注于“开发” -> 常用webpack、Gulp、Fis3(百度);

构建工具选择:团队技术栈、项目需求、生态圈是否完善,社区是否活跃等;

(1).基于任务运行的工具:Grunt(目前很少用到)、Gulp;

(2).基于模块化打包的工具:Browserify、Webpack、rollup.js;

(3).整合型工具:Yeoman、FIS、jdf、Athena等;//其使用了多种技术栈实现的脚手架工具,优点是即开即用,缺点是约束了技术选项,学习成本较高;

- - - >>> webpack与gulp的异同:webpack更适合大型项目的构建,gulp适合小型项目(大型也OK)

(1).它们都通过插件扩展,完整好用不失灵活,社区活跃,良好的开发体验;

(2).webpack -> module bundle;//模块打包器 -> 聚焦点:所有的文件都是模块;

(3).gulp -> runner Task;//任务运行器 -> 聚焦点:工作流程、流操作;

 - - - >>>自动化构建工具:代码压缩、模块合并、自动刷新等

2、Webpack -> 其支持CommonJs,AMD以及ES6模块化规范;->ES6区别于其它规范,其采用的是import引入模块,其它require引入模块; ->webpack中使用规范建议:若使用import,便都使用import,若使用require(),便都使用require();不要混合使用;

 - - - >> Vue,React框架底层使用的自动化构建工具是webpack;

其进行打包处理 -> 必然需要模块化处理代码

(1).webpack聚焦点 ->入口entry、出口output、转换器loader、插件plugins

使用流程:安装node(其自带npm) -> npm install webpack webpack-cli -g;//全局安装 -> npm init;//初始化项目,生成package.json; -> npm install webpack webpack-cli --save-dev;//局部安装 ->执行webpack->报错和警告->配置入口文件->shell语句+配置文件 ->执行webpack命令,其便会根据配置文件进行打包处理 ->每次更改页面内容,其都需要执行webpack命令 -> 可执行webpack --watch;//开启监听,页面内容更改,其会自动打包,但页面依旧需要手动刷新 -> npm install webpack-dev-server安装服务器,页面在localhost://xxxx打开,页面内容更改,其会自动刷新 ->后期聚集点主要是配置文件中的loader、plugins;// 拿到新文件后:npm install;webpack;打包;webpack-dev-server;开启服务器

- - - >>> 过程详解

[1].安装最新webpack4 -> node版本6以上才OK;( window+R -> cmd -> node-v 查看版本);

[2].webpack-cli:接口处理;webpack4对其进行了拆分,所以webpack webpack-cli 都要安装-> webpack4以下版本直接 npm install webpack -g即可;(webpack-cli已经打包在webpack内部)

[3].npm init -> 生成package.json文件 -> 关于"项目介绍";

[4].npm install webpack webpack-cli --save-dev;//局部安装  -> 局部安装的原因:避免传输过程中对方与你的webpack版本有差异,生成的package.json文件有相关的webpack版本信息,建议全局、局部都进行安装,--save表示环境变量为“生产者环境”,其需要的依赖较少;  -dev表示环境变量为"开发者环境",该环境下还需要开发时的“测试”依赖,--save-dev表示的就是开发者环境,底层应该是生产者环境+-dev表示的便是“开发者环境”, 其也可以写在前面 npm install --save-dev webpack webpack-cli; 省略写法 -> npm install webpack webpack-cli -D; 同理 npm install -g webpack webpack-cli;也可将-g提前;

- - - >>> 安装后生成package-lock.json, node_modules,同时package.json文件会出现“webpack版本信息”,package-lock.json文件中是关于“依赖模块/插件的URL地址”,node_modules中关于“项目即webpack依赖的模块”;若你进行文件传输给其他开发人员时,由于node_modules包内容较大,传输过程很慢,你可以采取不传输此包,其他开发人员接收到文件后只需要执行npm install,系统便会自动下载“相关依赖的模块”;(根据用到的工具下载相关的依赖模块)

[5].局部安装完成后,执行webpack报错原因:webpack4默认入口文件.src/index.js,若是没有便会报错,webpack4版本前其是根据配置文件执行,没有默认的入口文件,所以也不会报错;警告的原因:缺环境变量 -> webpack4中最好提前设置环境变量,"development";//开发环境,"production";//生产环境;执行webpack -mode=development;//警告消失,后续可直接在配置文件中设置;

[6].shell语句 -> 命令行中执行的语句,例如npm install webpack webpack-cli -g, npm init等;配置文件 -> webpack根据配置文件进行打包;

[7].安装服务器:npm install webpack-dev-server -D;安装(若是有问题,npm install wbpack-dev-server-g 全局再安装一次),执行webpack-dev-server;//(无空格) 开启服务器 -> localhost:8080; ->页面内容更改,其会实时更新; - - - >>> webpack-dev-server -hot;//模块热替换,其只更新数据变化的部分,而不是把整个页面都进行更新,提升性能;

[8].loader解释器:webpack只识别js文件,其它(css,html,js[es6])都需要loader解释器进行转换,或者使用插件转换;npm安装相应loader解释器 -> 配置文件进行相关配置 -> 执行webpack

[9].plugin插件:npm安装相应的插件 -> 配置文件中引入该插件 -> 相关配置 ->执行webpack即可使用,相比于loader解释器(其根据模块之间的依赖关系),插件使用更加独立;

常用插件:npm install html-webpack-plugin -D;//html页面相关;npm install uglifyjs-webpack-plugin -D;//压缩代码插件;npm install mini-css-extract-plugin -D;//转换css插件

补充:

[1].学习webpack之前下载nodejs以及git:nodejs中包含npm包管理工具,git的下载就是执行shell命令更加便捷,下载git后,你可直接打开项目目录,鼠标右键选择"Git Bash Here"便可执行shell命令,当然你也可以选择使用window+R开启命令行执行shell命令,但是此种方式需要进入到项目目录下才OK,这就是git使用更加便捷的原因了;git环境等同于linux环境,webpack以及后续所学gulp中都会存在些linux命令,此命令在git环境中的命令行才能设置成功,window操作系统中的命令行不能成功设置,-> 这两点就是git和系统命令行的区别了,“经验型小坑~”

[2].npm是包管理工具,使用其下载速度会较慢,你可以选择使用cnpm(国内淘宝镜像),其做了层代理,执行速度较快,但是webpack使用过程中,若使用npm,则一直使用npm,若使用cnpm,便一直使用cnpm,两者不要混合使用,容易出现"莫名bug";后续可了解Yarn包管理工具(依赖管理器),其更加轻量;[3].工程化中 “模块”就是“包”;[4].npm install webpack --save-dev;可简写为npm i webpack -D;//-D可前置  npm i -D webpack;


- - - - - - >>> 项目介绍

(2).项目名称:避免使用"webpack"或与webpack有紧密联系的词,例如loader,plugin等;

[1].package.json文件 -> 例如 "^8.0.4";//表示最大版本为8版本(大版本为8,聚焦点为8的前缀,并非8.0.4的前缀),区间:最低版本是8.0.4,最高版本为8.9.9,但是不能到达9版本;

[2].webpack.config.js配置文件:其是默认名,可取其它名字而且配置文件可写多个,执行的时候shell语句 -> webpack --config=配置文件名,webpack便会根据相应配置文件操作;

入口、出口、环境变量、配置服务器、配置loader、配置plugin:

配置loader:

配置plugins插件:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,089评论 0 21
  • 目录第1章 webpack简介 11.1 webpack是什么? 11.2 官网地址 21.3 为什么使用 web...
    lemonzoey阅读 1,731评论 0 1
  • webpack 介绍 webpack 是什么 为什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert阅读 6,460评论 2 71
  • 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过...
    阳阳阳一堆阳阅读 3,278评论 0 5
  • 读完《邓文迪:女人明白要趁早》,领悟到了每个人的生命中,都藏着自己的格局与选择! 邓文迪,是争议比较大的一个华裔女...
    宁静坊阅读 631评论 1 2