webpack(入门实例)

(一)欢迎了解webpack;

(本文的内容大部分来自webpack的官方文档,写的目的是自己入门时候遇到的困惑,并找寻答案,如果你也有同样的困惑不妨看看,有不妥的地方给予建议和指导,我会非常感谢.)

你将了解:如何安装webpack,怎样用webpack,怎样用一些常见的loader,如何使用开发服务器

(二)安装webpack;

1、安装node环境:下载安装合适的版本 (本人是Mac操作系统)
node.js介绍:node.js是一个建立在chrome的v8 javascript引擎上运行的javascript。node.js使用事件驱动的,非阻塞I / O模型,使其轻量级和有效。node.js的npm包生态系统是世界上最大的生态系统的开源库。

2、安装webpack:npm install webpack -g   (通过终端全局安装webpack,-g代表全局安装,全局安装才能在终端中调用它的命令)

(三)开始具体的编辑

1、建立一个本地文件夹(例如jq)
在该文档中创建如下文件entry.js 并在其中写入
document.write("It works.");

用vsCode编辑器创建的例子,终端可以在编辑器中调出来

在添加index.html

最后在你的终端中运行 webpack ./entry.js bundle.js
webpack 会把你的文件编译到新创的bundle.js文件中
如果操作成功终端中会有如下展示

Mac操作系统下 vsCode编辑器

在浏览器中打开index.html可以看见

添加一个content.js的文件写入:

module.exports=“it works from content.js”
更新entry.js
删除document.write("it works")
添加document.write(require("./content.js"))
在终端重新编译:webpack ./entry.js bundle.js

刷新浏览器会看见

webpack 将分析你的入口文件和其它文件之间的依赖关系,这些文件也会包含在bundle.js文件中。webpack将会给每一个模块一个唯一的id并且通过id存储的所有模块在bundle.js文件中。只有的入口module是在启动时被执行的。一个小的运行时提供了require方法并且在required时执行的依赖关系。

(四)loader

我们想添加一个css文件到我们项目中。
webpack只能处理原生的JavaScript,所以我们需要css-loader处理CSS文件。在CSS文件中我们还需要style-loader应用样式。
1、安装xx-loader
npm install css-loader style-loader
 (这里不需要加-g,在本地安装就可以,-g属于全局安装)这会在我们项目的根目录下创建出一个node_modules文件,其中就包含了相关的loaders
2、使用loader
创建style.css文件

修改entry.js文件如下:

!style!css!./style.css(从右到左解析,1、找到style.css文件;2、对其进行css-loader编译;3、最后进行style-loader编译)具体的loader配置

在终端重新编译:webpack ./entry.js bundle.js
查看页面

在为模块请求加载loader时,该模型将通过这一loader。这些loader会通过特定的方式改变文件的内容。当这些变更完成后,输出的结果就是一个JavaScript模型

(五)webpack 自己绑定loader

我们还有一种方式可以实现对css文件的loader转换
1、修改entry.js文件,如下

在终端重新编译:webpack ./entry.js bundle.js --module-bind 'css=style!css'(某些环境中可能需要双引号"css=style!css")
刷新页面可以看到同样的效果,其实就是将require("!style!css!./style.css")的命令,变种方式写,直接由webpack自己绑定调用;

(六)写webpack的配置文件
将要执行的命令统一写入配置文件里,进行统一管理和调用
添加webpack.config.js文件在项目根目录下:

在终端中运行:webpack

(七) 开启监听模式
我们不想在每次编辑完代码后都手动编译,所以我们可以执行如下代码
webpack --watch

监听一直没有结束,除非你手动结束

webpack 能将不变的模块进行缓存并与改变的模块一起重新编译输出。
当运用监听模式时,webpack会对所有文件安装监听,文件监听器在编译过程中被使用。如果察觉到改变,监听模式就再一次执行编译。当启用缓存,webpack会存储每个模块并且如果这些模块没有改变就会复用。

(八)开发服务
开发一个本地服务是非常有必要的,而且热更新时也需要安装
首先安装一个webpack插件:npm install webpack-dev-server -g(全局安装)
安装后执行:webpack-dev-server  
可以看到如下效果

在浏览器中打开http://localhost:8080/webpack-dev-server/或者http://本地IP地址:8080/webpack-dev-server/(端口号默认是8080可以修改,webpack有相应的文档配置)
开发服务器使用webpack的监听模式。它还可以防止webpack排放产生的文件到磁盘。相反,它保持和发布服务结果文件来自存储器。

(九)webpack打包到xxx路径下,的xxx文件包

这里我们的路径是dist,文件包叫bundle.js
在终端中运行:webpack --entry ./entry.js --output-path dist --output-file bundle.js

下面的输出结果:

快速定位 Webpack 速度慢的原因:

在终端中运行:
webpack --entry ./entry.js --output-path dist --output-file bundle.js\
--colors\
--profile\
--display-modules


这三个参数的含义分别是:

--colors输出结果带彩色,比如:会用红色显示耗时较长的步骤

--profile输出性能数据,可以看到每一步的耗时

--display-modules默认情况下node_modules下的模块会被隐藏,加上这个参数可以显示这些被隐藏的模块


webpack官网


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

推荐阅读更多精彩内容