webpack使用之基础篇

news/2025/3/21 14:26:05

说到自动化构建,你想到了什么?基于AMD的requirejs?还是基于commoJS的browserify?他们都在各自的领域或者说时代发挥了很重要的作用。
但是时代的变迁,webpack成了现在的佼佼者,我们不知道什么时候wepback也会被取代,但是现在我们必须要掌握。
我不担心我学完webpack新东西来了就没用了,相反的我很期待也很高兴有新的东西来取代webpack,因为如果能取代,必然是更好的东西。如果是更好的,那又为什么要拒绝呢?活在当下,认真学习。

一、基本简介

webpack和requirejs browserify一样,都是一款打包工具,那为什么要选这个?我们进行一个对比

1. requirejs

很老的产物了,它兴起的时候web模块化的标准都还没有完善。那个时候出了一款基于AMD的打包工具,
不得不说对前端的发展起到了至关重要的作用,如果它可以功成身退了。

2. browserify

是一个和webpack差不多同时代的产物,但是它只支持基于commonJS,对于AMD来说只能兴叹了。
并且它只支持打包js,如果你对这两个缺点不那么在意,那么就是它了。

3. webpack

支持AMD和commonJS,以模块化为起点,我们不仅可以用它打包js,也可以打包css,
包括图片。webpack把任何一个文件都看成一个模块,因此你准备好要迎接模块化的挑战了吗?

二、环境搭建

1. IDE推荐

IDEAwebstromsublimeatom 都是很不错的编辑工具,idea大而全,webstromidea的简化版、sublime轻量但不失稳重、atom新兴但不失典雅,东西不分上下,重在自己喜欢。找一个自己顺手的就好,顺便一提,我现在主要使用IDEA、辅助atom。因为我是一个java党啊,少不了IDEAatom的界面是我最喜欢的。

2. 开始建项目写配置

a.新建项目 mkdir webpack-study && cd webpack-study
b.初始化环境 npm init -y
c.安装工具(如果你没安装taobao源,把cnpm换成npm) npm install --save-dev webpack webpack-dev-server
说明:webpack是核心文件、wepback-dev-server是类http-server的web启动工具,建议安装一下这个server
d.新建配置文件 (名字一定不能换) touch webpack.config.js

  1. 配置webpack

module. exports ={entry:'./index.js',output:{path:__dirname+'/dist',filename:'bundle.js'}
}

说明:
模块化module.export
入口文件:entry 有几个页面就有几个entry 如果是单页面(spa),一个entry就够了
输出 output,path是输出路径,__dirname是nodejs的全局变量,表示当前目录, filename,打包后的文件名

三、 写一个小测试

1. 新建入口文件并写入文件

vim index.js
document.write('Hello world');

2. 新建一个css

touch style.css

  body{background-color:pink;}

3.新建一个html

touch index.html
写下以下内容

  <!doctype html><html lang="en"><head><meta charset="UTF-8"><title>hello webpack</title><script src="dist/bundle.js"></script></head><body></body></html>

说明:
模块化module.export
入口文件:entry 有几个页面就有几个entry 如果是单页面(spa),一个entry就够了
输出 output,path是输出路径,__dirname是nodejs的全局变量,表示当前目录, filename,打包后的文件名

三、 写一个小测试

1. 新建入口文件并写入文件

vim index.js document.write('Hello world');

2. 新建一个css

touch style.css

  body{background-color:pink;}

3.新建一个html

touch index.html
写下以下内容

  <!doctype html><html lang="en"><head><meta charset="UTF-8"><title>hello webpack</title><script src="dist/bundle.js"></script></head><body></body></html>

4.webpack的重头戏

那就是loaders,wepback的一大特色就是可以将一些浏览器不能原生支持的文件通过loaders编译成浏览器可以支持的文件
a.安装loaders
npm install style-loader css-loader
b.打开webpack.config.js
添加模块

  module:{loaders:[{test:/\.css$/,loaders:['style-loader','css-loader']}]}

说明:
模块下定义大的loaders去loader需要的东西,它是一个数组,意味着它可以定义多个
一个对象就是一个loader,test用正则匹配文件后缀
loaders指定采用哪个loader,注意它是从右往左执行,所以这里先执行css-loader
css-loader处理css的一些url,包括相对的绝对的之类的东西
style-loader 是将css文件采用js动态写入html页面
c.使用css
打开index.js (因为我们这里没有用babel,所以就用es5来写)
require('./style.css');

四、查看效果

我们现在可以使用webpack-dev-server这个东西了
如果你己经全局安装了(cnpm install -g webpack-dev-server),直接命令webpack-dev-server就可以开起来了,当然你也可以在package.json文件里面添加script,文件如下

{
"name": "webpack-study",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start":"webpack-dev-server --progress",
"build":"webpack --progress",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"css-loader": "^0.23.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.0",
"webpack-dev-server": "^1.14.1"}
}

这里我们就可以使用npm run build来编译,使用npm run start来开启服务器

➜  webpack-study git:(master) ✗ npm run build> webpack-study@1.0.0 build /Users/xiaomo/workspace/webpack-study
> webpack --progress
Hash: 11ffef2911f2436a3948
Version: webpack 1.13.0
Time: 64msAsset     Size  Chunks             Chunk Names
bundle.js  1.42 kB       0  [emitted]  main[0] ./index.js 30 bytes {0} [built]➜  webpack-study git:(master) ✗ npm run start> webpack-study@1.0.0 start /Users/xiaomo/workspace/webpack-study> webpack-dev-server --progcesshttp://localhost:8080/webpack-dev-server/webpack result is served from /content is served from /Users/xiaomo/workspace/webpack-studyHash: 11ffef2911f2436a3948Version: webpack 1.13.0Time: 80msAsset     Size  Chunks             Chunk Namesbundle.js  1.42 kB       0  [emitted]  mainchunk    {0} bundle.js (main) 30 bytes [rendered][0] ./index.js 30 bytes {0} [built]webpack: bundle is now VALID.

b.然后访问 http://locahost:8080 就可以看到效果了

五、动态效果展示和总结

1. 总共有5个文件

webpack.config.ksindex.jsindex.htmlstyle.csspackage.json,编译好要使用的只有index.htmldist/bundle.js两个文件

2. gif动画

会展示一下5个文件的内容

3. 演示一下效果

webpack的简单使用
如果觉得图小可以点击下面链接查看大图
webpack的简单使用


https://dhexx.cn/news/show-3664264.html

相关文章

福建师大计算机在线考核,福师网院21年春季 计算机应用基础在线考核试卷

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼不会咨询&#xff1a;aopeng5858福师网院计算机应用基础在线考核试卷1.(3.0分)操作系统的主要功能是_____。A、管理系统所有的软﹑硬件资源B、进行数据统计C、把源程序转换为目标程序D、实现软﹑硬件转换2.(3.0分)Word 2010中&…

谷歌坐标转百度坐标

http://blog.sina.com.cn/s/blog_7fa6b06f0101jagh.html 转载于:https://www.cnblogs.com/sgdkg/p/3532531.html

风影版OllyDBG 1.10 2016-12-09修改版

此版本在残影大哥的帮助下进行修改&#xff0c;主要修改范围Patch几处错误代码增加快捷方式菜单修改标题避免检测修改载入文件后标题避免检测附加两个外部DLL完善功能下载地址 http://pan.baidu.com/s/1dEVoO6X转载于:https://blog.51cto.com/gxayfy/1881142

各种台式计算机计量单位相同吗,计算机常见计量单位解析

计算机常见计量单位解析在我们购买和日常使用计算机的过程中&#xff0c;不可避免地会遇到一些硬件计量单位&#xff0c;也许这些单位你都可以朗朗上口&#xff0c;可是&#xff0c;它们究竟有什么含义&#xff1f;相关联的单位之间的换算关系是怎样的&#xff1f;对硬件的性能…

微信开放之模板消息

微信开放之模板消息 正如许多推送一样&#xff0c;微信也友好的给广大开发者提供了“模板消息”&#xff0c;比推送更好的是&#xff0c;它能借助海量用户的微信平台直接通过服务号以短消息形式传达给用户&#xff0c;大大提高了运营的可能性。比如我们现在可以完全抛开银行卡的…

提醒 TickTick v2.8.5.4 最新版

2019独角兽企业重金招聘Python工程师标准>>> 名称&#xff1a;提醒 TickTick v2.8.5.4 安卓最新版 版本&#xff1a;v2.8.5.4 大小&#xff1a;8.42 MB 软件语言&#xff1a;中文简体 软件授权&#xff1a;免费版 系统要求&#xff1a;Android 名称&#xff1a;提醒…

ytalk项目计划文档

引言 &#xff1a;眼看着 今年6月份就要毕业了&#xff0c;自己的毕业设计项目连后台的数据库设计都没有完成&#xff0c;自个心里那个捉急啊&#xff0c;为了规范一下自己的毕业设计项目安排&#xff0c;也克制克制自己爱拖拉的习惯&#xff0c;把自个的项目的计划写了下来&am…

Centos6.5更新e1000网卡驱动

导读在工作过程中经常遇到linux的操作系统网络不正常的情况&#xff0c;以前没有注意到&#xff0c;今天查看系统日志发现原来是网络驱动的问题。索性直接更新系统&#xff0c;更新网卡问题&#xff1a;linux系统经常出现断网的情况&#xff0c;重启之后系统恢复正常在断网时候…

薛逸凡计算机生物学,北京大学有一专业,11年只培养出11位学子,惹得无数人不敢报名...

原标题&#xff1a;北京大学有一专业&#xff0c;11年只培养出11位学子&#xff0c;惹得无数人不敢报名三更灯火五更鸡&#xff0c;正是男儿读书时。黑发不知勤学早&#xff0c;白首方悔读书迟。——《劝学》历史的教训告诉我们落后就要挨打&#xff0c;知识是推动一个社会发展…

6款开源中间件

Middleware tends to be the unsung hero of technical infrastructure. Middleware doesn’t prompt great debates, like Windows vs. Apple vs. Linux OS debates of years past, and there are no TV ads for middleware. Yet middleware – the software that sits betwee…