Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS 等。

一、核心概念

  入口:webpack打包的入口文件

  输出:这个就是对源代码打包之后,得到的文件,文件我们一般命名为bundle.js

  Loader:默认情况下,webpack只能打包.js结尾的文件,但是webpack提供了很多Loader,能打包项目中任何文件,比如css,vue,png文件都可以打包

  配置文件:简化我们的配置,让我们少写代码

  插件:比如压缩js、比如开发阶段实现的热重载(在代码中保存,浏览器就自动刷新),为了让webpack更加强大

二、实际演练

  前提:安装好`webpack`全局包,输入指令:npm i webpack -g

1、打包单个.js文件

步骤:

  1、在cmd切换到项目根目录

  2、使用webpack全局包打包即可

    格式:webpack 入口文件(entry.js)  输出文件(bundle.js)

    输入指令: webpack entry.js bundle.js

  3、打包得到bundle.js,建立index.html,在index.html中导入打包之后的bundle.js

  4、运行

注意点:在index.html中导入的一定是打包之后的输出文件

2、打包多个具有依赖关系的.js文件

前提:

  在entry.js中的代码中导入依赖的文件

  1、在modul的内容 var name=“张三” 并且进行输出module.exports=name;

  2、在入口文件进行导入modul的内容 const name = require('./module.js');

  3、然后进行打包得到bundle.js

步骤: 同上

注意点:

  在index.html中导入的一定是打包之后的输出文件 bundle.js,Webpack 会分析入口文件,解析包含依赖关系的各个文件。 这些文件(模块)都打包到 bundle.js 。

3、打包非.js文件 (通过Loaders实现)

  以打包.css文件为例(需要额外做的步骤)

  1、安装style-loader&css-loader:

    先输入  npm init -y   生成一个 package.json 用来装包的 输入指令:cnpm i style-loader css-loader --save-dev

  2、在入口文件中导入css的时候,按照下面这样写 在js中写:require('!style-loader!css-loader!./site.css')

  3、针对第二步,如果导入的css过多,还可以做一个简化,在入口文件,导入的时候,可以不用写前面的 在js中写:require('./site.css')

  但是,在使用webpack打包的时候,得这样写 输入指令:webpack entry.js bundle.js --module-bind "css=style-loader!css-loader"

注意点: "css=style-loader!css-loader" 使用双引号即可,不然会报错

4、配置文件(一起打包,重点学习)

作用:简化打包的操作

步骤:

   1、在项目根目录下创建一个文件名称叫 webpack.config.js的文件(默认文件名称)

   2、把我们原先在cmd中写的命令,全部写到webpack.config.js中(在这个文件中进行手动配置)

  3、最后在根目录下,执行webpack即可打包了

  a、在入口文件entry.js中导入想要的文件require('./site.css')

  b、不是js后缀的文件话在先装对应的loader文件,装之前要生成一个package.json用来装包

  c、在webpack.config.js输写下面的代码

module.exports = {
entry:'./entry.js', //项目打包的入口文件
output:{
path: __dirname,
filename: 'bundle.js' //输出文件
},
module:{ //配置loader
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader' //loader执行顺序是从后往前
}
]
}
}

  e、输入指令:webpack 即可打包 相当于webpack webpack.config.js

5、插件

作用:让我们Webpack的功能更加强大

全局包&本地包:

  (1)安装方式不一样

  全局包 npm i webpack -g 用在终端里面,执行命令

  本地包 npm i webpack --save-dev 用在项目里面的

  (2)安装的地方不一样

  全局包:是安装在个人目录下 C:\Users\你自己的用户名\AppData\Roaming\npm

  本地包:项目的根目录的node_modules中

  1、步骤同上,用之前要在项目中安装本地webpack ,输入指令npm i webpack --save-dev

  2、代码如下:

 var webpack = require('webpack')

    module.exports = {
entry:'./entry.js', //项目打包的入口文件
output:{//输出文件
path: __dirname,
filename: 'bundle.js'
},
module:{ //配置loader
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader' //loader执行顺序是从后往前
}
]
},
plugins:[//插件
new webpack.BannerPlugin('...这个文件是被我打包的...')
]
}

注意点:

   有些包既要全局安装,又要在项目中安装,不要觉得奇怪,应用的地方不一样 plugins在我们的webpack.config.js中写的时候,必须和entry、output、module同级。

Webpack打包工具学习使用的更多相关文章

  1. vue之webpack打包工具的使用

    vue之webpack打包工具的使用 一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个 ...

  2. Vue学习【第四篇】:Vue 之webpack打包工具的使用

    什么是webpack webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.css甚 ...

  3. vue 之webpack打包工具的使用

    一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.c ...

  4. webpack打包工具的初级使用方法

    这里下载的是webpack的3.8.1版本(新版更新的使用有些问题) 什么是webpack? 他是一个前端资源加载或打包工具,. 资源: img css json等. 下载的话 用 npm webpa ...

  5. # webpack 打包工具(vue)

    vue-webpack 打包工具 我的github iSAM2016 不是教程,是自我总结 目录 webpack.base.conf.js webpack.dev.conf.js webpack.pr ...

  6. Webpack实战(一):Webpack打包工具安装及参数配置

    为什么要模块化 javascript跟其他开发语言有很多的区别,其中一个就是没有模块化概念,如果一个项目中有多个js文件,我们只能通过script标签引入的方式,把一个个js文件插入到页面,这种做法会 ...

  7. webpack打包工具

    目的:平时小项目中例如一些网站需要进行打包压缩,用这个工具可以进行打包压缩,就可以上传到服务器. 使用方法: 1,引进需要打包的项目,把入口html替换掉项目中的index.html,把引进的js,c ...

  8. Webpack 打包工具

    1. webpack 概念 [文档地址](https://www.webpackjs.com/concepts/) 2. webpack 命令使用及相关工具包 1. webpack 安装和打包命令: ...

  9. webpack打包工具之ts版开发框架搭建

    本文用两个框架,一个是threejs,一个是phaser3,其实流程都是一样. nodejs.npm是基础,不再多说! 首先新建一个文件夹命名three-study,然后npm init -y 用we ...

随机推荐

  1. 向mysql中批量插入数据的性能分析

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 5 ...

  2. Android JSON

    转自:http://www.open-open.com/lib/view/open1326376799874.html JSON的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性 ...

  3. 1257 背包问题 V3——分数规划

    N个物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数),从中选出K件物品(K <= N),使得单位体积的价值最大. Input 第1 ...

  4. OPEN SUSE LINUX

    1. 把中文界面变成英文界面 yast2->system->language: 主要语言: 美式英语US 2. 使用root用户默认登录 Ubuntu使用root登录        Ubu ...

  5. SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条

    SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条 SELECT Id,[Title],[Content],[Image] FROM ( SELECT ROW_NUMBER( ...

  6. postgres 基本使用

    postgres=# help 您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面 键入: \copyright 显示发行条款 \h 显示 SQL 命令的说明 \? 显示 pgsq ...

  7. 解决iOS10的Safari下Meta设置user-scalable=no无效的方法

    苹果为了提高Safari中网站的辅助功能,屏蔽了Meta下的user-scalable=no功能.所以在iOS10下面,就算加上user-scalable=no,Safari浏览器也能支持手动缩放. ...

  8. Educational Codeforces Round 33 (Rated for Div. 2) D. Credit Card

    D. Credit Card time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  9. jQuery笔记:checkbox

    用jQuery操作checkbox时的一点小问题. 勾选checkbox的时候,$("#id").attr("checked")变为"checked& ...

  10. luogu P1577 切绳子

    题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描 ...