webpack轻松入门教程

webpack之傻瓜式教程及前端自动化入门

接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快速入手的、接地气的、傻瓜式的教程,自己手把手教又太浪费时间。想了一想,决定自己写一篇webpack的傻瓜式教程,旨在教会尚未了解webpack的人迅速入手懂得基本原理,而不是懵逼一昧用着老员工搭好的环境天天敲着“webpack -p -w”却不知这到底是干嘛的。

 

对于webpack的概念、用途、好处等等一律省略,想了解的上网搜索即可,这里直接演示如何新建一个webpack的实例。

 

1、安装好nodejs,安装过程网上找。

 

2、在D盘、E盘或任意一个磁盘中新建文件夹,命名为webpack_demo:

 

3、在webpack_demo文件下按住Shift键后点击鼠标右键,再左键点击“在此处打开命令行窗口”:

在打开的命令行窗口中键入:

npm init

name表示项目名,version表示版本等等,不一一赘述了,看字段很容易明白,一一填完或直接一路按回车键,最后出现“is this ok?”时,敲击回车键后webpack_demo的文件夹下便生成了package.json文件。

 

4、在命令行中分别执行以下命令,安装对应的插件(--save-dev作用是安装的插件的同时,将插件名写入package.json的devDependencies列表中):

复制代码
npm install webpack --save-devnpm install jquery --save-devnpm install style-loader css-loader --save-devnpm install extract-text-webpack-plugin –-save-dev
复制代码

安装完成后package.json的代码如下(name、version、description等都是在npm init步骤中手动添加而成):

复制代码
{"name": "webpackdemo","version": "1.0.0","description": "a webpack demo","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "liqiyuan","license": "ISC","devDependencies": {"css-loader": "^0.26.1","extract-text-webpack-plugin": "^1.0.1","jquery": "^3.1.1","style-loader": "^0.13.1","webpack": "^1.14.0"}
}
复制代码

 

5、此时查看webpack_demo文件夹,会发现多出了一个文件夹:

双击打开,文件夹下的内容如下:

说明所需要的插件都已安装成功。

 

6、在webpack_demo文件下新建文件webpack.config.js:

编辑代码如下:

复制代码
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {entry: './js/main.js',output: {path: './dist',filename: 'bundle.js'},plugins: [new ExtractTextPlugin('./style.css')],module: {//加载器配置loaders: [{ test: /\.css$/, loader:ExtractTextPlugin.extract("style-loader","css-loader")}// { // test: /\.(png|jpg)$/,// loader: 'url-loader?limit=8192'// }]}
};
复制代码

以上代码的意思是:

引入extract-text-webpack-plugin这个插件(用于支持打包css文件,默认只支持打包js文件),读取当前目录下js文件夹中的main.js(入口文件)内容,把对应的js和css文件打包,打包后的文件放入当前目录的dist文件夹下,打包后的css文件命名为style.css,打包后的js文件名为bundle.js。

 

7、webpack_demo下新建js文件夹,里面新建main.js,代码编辑如下:

复制代码
require('./index/index.js');
require('./index/index2.js');require('../css/index/index1.css');
require('../css/index/index2.css');
require('../css/common/public.css');
复制代码

以上代码意思为:引入当前目录index文件夹下的index.js,index2.js,引入上一层目录css文件夹下index文件下的index1.css,index2.css和common文件夹下的public.css。

 

8、新建上一步中对应路径的css、js、index、common文件夹,里面分别新建对应的css或js文件,每个css、js文件里写入不同的代码。

 

9、窗口命令行中执行代码:

webpack

出现如下提示索命打包成功:

此时打开webpack_demo文件夹,发现多了dist文件夹,打开,里面文件如下:

 

10、新建一个index.html文件,只引入bundle.js和style.css:

复制代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>webpack教程</title><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable = no"/><link rel="stylesheet" type="text/css" href="./dist/style.css">
</head>
<body><div>webpack</div><script src="./dist/bundle.js"></script>
</body>
</html>
复制代码

双击用浏览器打开这个html,会发现入口文件main.js里面引入的所有js和css文件都已经执行了。

 

---------------------------------------------- 我是分割线---------------------------------------------- 

 

上边是webpack的基本用法,可见它的基本作用是把一堆js和css压缩成一个js和css,但其实它的用法远不仅如此,这里再说两个常见的用法:

1、自动加css3前缀。

我们在写一些css3的样式时,为了良好的兼容性,往往会把css3代码写成如下这个样子:

.test{display: flex;display: -webkit-box;display: -ms-flexbox;
}

如果每个css3的代码都要手动写一堆前缀,那不仅要奔溃还容易出错,这种事情还是交给工具来干,会效率和靠谱的多。

2、ES6转码。

ES6将会是以后的趋势了,但兼容性很差,转码后兼容性就大大提高了。

 

下面通过另一个小demo,把这一串东西给跑起来。

demo示例文件结构如下:

文件目录结构就不画图了,文字说明:

  app:开发文件(编译前的文件)

    css:手动编写的css文件集

      css-entry.js:css入口文件,即说明需要打包哪些css文件

      index.css:css示例文件1

      index2.css:css示例文件2

    js:手动编写的js文件集

      index.js:js示例文件1

      index.js:js示例文件2

  dist:生产文件(编译后的文件)

    css:编译后生成的css文件集

      bundle.css:编译后生成的css文件,可直接引入使用

      css.js:编译后生成的另一种css文件的用法,可先不管

    js:编译后生成的jss文件集

      bundle.js:编译后生成的js文件,可直接引入使用

  node_modules:webpack自动安装的各依赖包,不用管

  package,json:配置文件,主要告诉电脑需要安装哪些依赖包

  postcss.config.js:css3自动添加前缀的配置文件

  webpack.config.js:webpack的配置文件

 

这个是什么意思呢,就是我们把自己写好的代码分别放进app的css和js文件夹里,打包以后,webpack会自动的将代码进行添加css3前缀、打包压缩、ES6转码等全部搞定后,将处理好的代码文件生成在dist的css和js里,我们在html里直接引用处理好以后的代码就行。

 

demo实战:

1、按上边的目录结构一一将文件新建好,node_modules除外。

2、编写package.json,写明需要安装哪些依赖包,这些依赖包分别是干嘛的不一一说明了,想了解详细的可以直接复制依赖包名称去百度上搜。

{"name": "webpack","version": "1.0.0","description": "webpack, es6, css autoprefixer","author": "liqiyuan","license": "ISC","devDependencies": {"autoprefixer": "^7.1.1","babel-core": "^6.24.1","babel-loader": "^7.0.0","babel-polyfill": "^6.23.0","babel-preset-env": "^1.6.1","css-loader": "^0.28.1","extract-text-webpack-plugin": "^2.1.0","postcss-loader": "^2.0.5","style-loader": "^0.17.0","webpack": "^2.5.1"}
}

3、编写webpack.config.js

// ES6转码和打包打包
// module.exports = {
//     entry: [
//         'babel-polyfill',		// 添加了这个东西,才能完美的将ES6转码
//         './app/js/index.js',		// 进行转码的js文件1
//         './app/js/index2.js',	// 进行转码的js文件2
//     ],
//     output: {
//         path: __dirname + '/dist/js',	// 编译后的js文件输出目录
//         filename: 'bundle.js'			// 编译后的js文件名
//     },
//     module: {
//         loaders: [
//             {
//                 test: /\.jsx?$/,
//                 loader: 'babel-loader',     // 'babel-loader'也可写成'babel'
//                 query: {
//                     presets: ['env']
//                 }
//             }
//         ]
//     }
// };// CSS自动添加前缀并打包
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const extractCSS = new ExtractTextPlugin({filename: './bundle.css',		// 编译后生成的css文件名disable: false,allChunks: true
});
module.exports = {entry: {app: ['./app/css/css-entry.js'],	// 需要进行打包处理的css入口文件},output: {path: __dirname + '/dist/css',		// 编译后生成的css文件输出目录filename: 'css.js'},module: {rules: [{test: /\.css$/,use: extractCSS.extract({fallback: "style-loader",use: ['css-loader', 'postcss-loader']})}]},plugins: [extractCSS]
}

  

4、根目录下打开命令行窗口,输入“cnpm install”,即可按照package.json的配置内容自动安装所需插件(使用cnpm之前要先把淘宝镜像安装一下:npm install -g cnpm --registry=https://registry.npm.taobao.org),不然就用“npm install”。安装完成后,根目录下会生成一个文件夹node_modules,这就是安装好的依赖包。

5、编辑postcss.config.js,这是css3自动添加前缀所需要的配置文件

module.exports = {plugins: [require('autoprefixer')({browsers:['last 5 versions']})]
}

6、编辑app/css下面的css文件

index.css(css示例文件1)

index2.css(css示例文件2)

css-entry.js(css入口文件,即说明需要打包哪些css文件)

require('./index.css');
require('./index2.css');

7、命令行中输入“webpack”。

8、神奇的情况发生,根目录下会生成dist文件夹,dist下有css文件夹,css下有bundle.css,打开bundle.css:

发现木有,本来index.css和index2.css里的css3代码是没有加任何前缀的,打包以后css3前缀都已经给加好了。

9、打包js文件和es6转码:编辑app/js目录下的index.js和index2.js,写上es6代码。再打开配置文件webpack.config.js,将 "ES6转码和打包" 部分代码放开,将 "CSS自动添加前缀并打包" 部分代码注释掉,命令行里敲击 "webpack",打包完成后可以看见dist/js目录下会生成一个bundle.js的文件,里面正是被打包和转码好的js代码,可完美被IE9及以上的浏览器支持。

 

附上此例子的giuhub地址:https://github.com/Leeqly/webpack-es6-autoprefixer

可前往下载,然后直接cnpm install安装好依赖包后就可以使用了。

 

顺便提一下webpack几个常用命令

webpack:普通打包

webpack -p:压缩打包

webpack -p -w:监听所有需要打包的代码,只要有代码被改动并保存后,就会自动进行打包

转载于:https://www.cnblogs.com/xiaohuizhang/p/8624444.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

首个单设备模拟神经元出现 可有效解决传统计算机所面临的问题

来源&#xff1a;IEEE电气电子工程师Photo: Research Group of R. Stanley Williams对于工程师们来说&#xff0c;无法实现人类大脑效率和超强计算性能的其中一个原因在于&#xff0c;一直以来我们缺少一种可以独立发挥神经元作用的电子设备。要做到这一一点&#xff0c;需要我…

电子科大沙河校区有计算机专业,电子科大沙河校区学费

依据电子科大沙河校区最新收费标准&#xff0c;电子科大沙河校区的学费每人每年需要4400元-60000元不等。其中中外合作办学项目每人每年需要60000元&#xff1b;理科专业每人每年需要4900元&#xff1b;文科专业每人每年需要4400元&#xff1b;软件工程专业每人每年需要9800元。…

SMB服务简介

1、Samba简介 Samba是种自由软件&#xff0c;用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3)&#xff0c;不仅可存取及分享SMB的资料夹及打印机&#xff0c;本身还可以整合入Wi…

学云计算能干什么_陌陌主播等级计算?陌陌主播升级明细表?

有很多主播对陌陌直播规则都不太清楚&#xff0c;比如就有人问&#xff0c;陌陌主播等级计算&#xff1f;陌陌主播升级明细表&#xff1f;今天跟大家简单的说一下&#xff0c;一起来看看吧。加入海星公会&#xff0c;扶持奖励全都有&#xff0c;主播可获得热门推荐&#xff0c;…

建造自己的「天空之城」,密歇根大学博士后的这项研究可以虚空造物、偷天换日...

来源&#xff1a;机器之心 哈尔的移动城堡&#xff1f;天空之城&#xff1f;这幅图是否让你想起了这两部电影中的场景……上&#xff1a;《天空之城》剧照&#xff1b;下&#xff1a;《哈尔的移动城堡》剧照。是电影场景变为现实了吗&#xff1f;真的有人建造了一座空中楼阁&am…

个人计算机有控制器和运算器吗,cpu是由控制器和运算器组成的对还是错

对的。CPU即中央处理器&#xff0c;是计算机中负责读取指令&#xff0c;对指令译码并执行指令的核心部件。中央处理器主要包括两个部分&#xff0c;即控制器、运算器&#xff0c;其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。一、控制器是整个计算机系统的指…

又一壮举!GPT-3首次完成剧本创作,AI解决创造性问题的能力正迅速提升

来源&#xff1a;中国智慧城市导刊文章原载于 学术头条自今年 6 月份发布以来&#xff0c;OpenAI 的文本生成人工智能工具 GPT-3 获得了极大的关注。它被用来在论坛上发表评论、写诗、甚至在《卫报》中发表文章。当 GPT-3 没有经过专门培训就学会自动完成某项任务时&#xff0c…

Hinton构思下一代神经网络:属于无监督对比学习

本文由机器之心报道Geoffrey Hinton 是谷歌副总裁、工程研究员&#xff0c;也是 Vector Institute 的首席科学顾问、多伦多大学 Emeritus 荣誉教授。2018 年&#xff0c;他与 Yoshua Bengio、Yann LeCun 因对深度学习领域做出的巨大贡献而共同获得图灵奖。自 20 世纪 80 年代开…

windows 获取命令执行后的结果_法院判决以后,老赖欠钱不还,递交强制执行申请多久后有结果?...

网友提问&#xff1a;老赖欠钱不还&#xff0c;已向法院递交了强制执行申请一个月了&#xff0c;老赖仍逍遥法外&#xff0c;该怎么办&#xff1f;这个阶段你称之为老赖&#xff0c;也无不可。但还不是法律上所认可的老赖&#xff0c;法律上的老赖也只是个俗称&#xff0c;学名…

研究揭示动物社交欲望的神经机制

来源&#xff1a;中国科学院生物物理研究所10月22日&#xff0c;中国科学院生物物理研究所朱岩课题组在Nature Communications上发表题为Social attraction in Drosophila is regulated by the mushroom body and serotonergic system的研究论文&#xff0c;研究以果蝇为模型&a…

bat复制文件到指定目录同名_scp复制文件时排除指定文件

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章。如需学习视频&#xff0c;请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解如何在scp复制文件时排除指定文件。举例&#xff1a;我需要将所有*.c文件从名为hostA的电脑复制到hostB&#xff0c…

传感器的“脖子”卡在哪儿?

来源&#xff1a;人民政协报昨天胜利闭幕的十九届五中全会研究关于制定“十四五”规划和2035年远景目标的建议。其中加强自主创新、对卡脖子关键技术攻关是重中之重&#xff0c;并将传感器作为“卡脖子”技术攻克目标之一。与此同时美国近期也公布了《关键与新兴技术国家战略》…

服务器大线程有什么作用,全面剖析超线程技术优点与缺点

欢迎各位阅读本篇文章&#xff0c;超线程技术就是利用特殊的硬件指令&#xff0c;把两个逻辑内核模拟成两个物理芯片&#xff0c;让单个处理器都能使用线程级并行计算&#xff0c;进而兼容多线程操作系统和软件&#xff0c;减少了CPU的闲置时间&#xff0c;提高的CPU的运行效率…

遍历矩阵每一行穷举_[LeetCode] 566. 重塑矩阵

题目链接&#xff1a; https://leetcode-cn.com/problems/reshape-the-matrix难度&#xff1a;简单通过率&#xff1a;61.6%题目描述:在MATLAB中&#xff0c;有一个非常有用的函数 reshape&#xff0c;它可以将一个矩阵重塑为另一个大小不同的新矩阵&#xff0c;但保留其原始数…

git push时报错fatal: Could not read from remote repository.

后来发现&#xff0c;出现这个问题是因为仓库地址不对 使用如下命令先查看一下&#xff1a; $ git remote -v 发现跟github的地址不一致 然后在终端输入&#xff1a;git remote set-url origin XXX 然后重新push就可以了 转载于:https://www.cnblogs.com/sjhsszl/p/git.html

Hinton新作!越大的自监督模型,半监督学习需要的标签越少

来源&#xff1a;AI科技评论编译&#xff1a;青暮本文介绍了Hinton团队发表在NeurIPS 2020上的一项研究工作&#xff0c;一作是Ting Chen&#xff0c;研究人员首次在ImageNet上尝试了半监督学习的典型范式&#xff0c;并取得了优越的结果。此外&#xff0c;他们还发现&#xff…

dataframe第二列 r语言_123.R简介和统计绘图

123R简介和统计绘图本节作者&#xff1a;刘永鑫 中国科学院遗传与发育生物学研究所&#xff1b;陈同 中国中医科学院版本1.0.2&#xff0c;更新日期&#xff1a;2020年8月31日本项目永久地址&#xff1a;https://github.com/YongxinLiu/MicrobiomeStatPlot &#xff0c;本节目录…

脑机接口中的后门攻击

本文来自伍冬睿科学网博客链接地址&#xff1a;http://wap.sciencenet.cn/blog-3418535-1256333.html?mobile1机器学习在脑机接口中的成功应用&#xff0c;使脑机接口得到了快速的发展。然而&#xff0c;对抗攻击的发现让我们不得不重新思考机器学习模型的安全性。这些潜在的危…

联想高性能服务器,Lenovo|EMC推出高性能4x4TB服务器级NAS

作为联想PC战略的延伸和全球企业级战略的重要组成部分&#xff0c;联想与EMC建立起全球范围内的战略合作&#xff0c;并于2013年4月2日在深圳全新推出面向企业市场的联合品牌存储新产品家族。可以说联想与EMC合作是在企业级业务领域的又一重要战略布局。在4月2日的发布会上&…

调用图片文件夹中的任意图片随机显示_他来了,他来了,Mathpix拜拜了~~~文字、表格、公式图片识别神器V0.1测试版...

&#xff08;图0&#xff09;img2txt V0.8 【正式版】第1步&#xff1a;win10自带截图快捷键&#xff1a;WinShiftS&#xff0c;也可以用QQ等截图工具&#xff1b;第2步&#xff1a;打开软件&#xff0c;完成初始配置&#xff08;后续调用无需再配置&#xff09;&#xff0c;按…