webpack简介

1.webpack是什么

简介:webpack其实就是一个JavaScript应用程序的静态模块打包器。

2.webpack有什么作用

模块化打包:webpack会将项目的资源文件当成一个一个模块,模块之间会有依赖关系,webpack将会对这些有依赖关系的文件进行处理,让浏览器能够识别,最后将应用程序需要的每个模块打包成一个或者多个bundle。

Webpack环境配置和简单打包

1.安装node

node官网地址: https://nodejs.org/zh-cn/

2.创建package.json文件

命令:npm init

3.安装webpack

本地安装:(推荐)

npm install --save-dev webpack webpack-cli

yarn add --dev webpack webpack-cli

全局安装:

npm install --global webpack webpack-cli

4.打包

默认entry入口 src/main.js

默认output出口 dist/main.js

打包模式:

webpack --mode development

webpack --mode production

Package.json文件下添加scripts:

设置好后在命令行程序中运行npm run dev或者npm run build来进行打包。

配置webpack.config.js

1.新建一个webpack.config.js
2.配置入口entry(所需打包的文件路径)

3.配置出口output

(1)path指文件打包后的存放路径

(2)path.resolve()方法将路径或路径片段的序列处理成绝对路径

(3)__dirname 表示当前文件所在的目录的绝对路径

(4)filename是打包后文件的名称

4.命令行程序运行npm run dev或者npm run build

入口entry和出口output进阶用法

1.入口entry

(1)单入口

例如: entry:‘./src/index.js’

(2)多入口

2.出口

(1)单出口

(2)多出口

[name] 原文件的名字

配置webopack-dev-server

1.了解webpack-dev-server

webpack-dev-server是webpack官方提供的一个小型express服务器。使用它可以为webpack打包生成的资源文件提供web服务。

webpack主要提供两个功能:

(1)为静态文件提供服务。把webpack打包生成的资源文件,部署到本地服务器。

(2)自动刷新和热替换(HMR)。

2.安装webpack-dev-server

yarn add --dev webpack-dev-server

3.配置webpack.config.js文件

4.配置package.json
  1. "scripts": {

      "start": "webpack-dev-server --mode development"

    }
5.在build文件夹下新建index.html文件,在html中引入bundle.js

6.在命令行程序运行npm run start

自动弹出页面,控制台有输出信息

加载css所需loader及其使用方法

1.了解loader

loader让wepack能够去处理那些非javascript文件(webpack 自身只理解 JavaScript)。loader可以将所有类型的文件转换为webpack能够处理的有效模块,然后你就可以利用webpack的打包能力,对它们进行处理。

2.安装loader

安装style-loader和css-loader

yarn add --dev style-loader css-loader

3.配置loader

在webpack.config.js文件里配置module中的rules

在 webpack 的配置中 loader 有两个目标:

  1. test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。

  2. use 属性,表示进行转换时,应该使用哪个 loader。

代码:

4.创建css文件并运行命令

创建index.css文件并import进index.js文件中

5.编译less

(1)处理效果

(2)安装loader

yarn add less-loader less --dev

(3)配置loader

6.编译sass

(1)处理效果

(2)安装loader

yarn add sass-loader node-sass --dev

(3)配置loader

7.使用postcss处理浏览器前缀

(1)处理效果

(2)安装loader

安装postcss-loader和autoprefixer

yarn add --dev postcss-loader autoprefixer

(3)配置loader

需要和autoprefixer一起用

或者在package.json里加上下图设置:

文件处理

1.图片处理

(1)安装loader

下载安装file-loader: yarn add --dev file-loader

(2)配置config文件

(3)选项配置

配置options:

name:为你的文件配置自定义文件名模板(默认值[hash].[ext])

context:配置自定义文件的上下文,默认为 webpack.config.js

publicPath:为你的文件配置自定义 public 发布目录

outputPath:为你的文件配置自定义 output 输出目录

2.字体文件处理

(1)下载字体文件

以bootstrap字体文件为例子,Boostrap字体文件下载地址:https://v3.bootcss.com/getting-started/

(2)在index.js中引入bootstrap.css,在html中使用bootstrap字体图标

(3)配置config文件

3.第三方js库处理

以jquery库为例子

(1)本地导入

编写配置文件:

webpack.ProvidePlugin参数是键值对形式,键就是我们项目中使用的变量名,值就是键所指向的库。webpack.ProvidePlugin会先从npm安装的包中查找是否有符合的库。如果webpack配置了resolve.alias选项(理解成“别名”),那么webpack.ProvidePlugin就会顺着设置的路径一直找下去。

使用webpack.ProvidePlugin前需要引入webpack

(2)npm安装模块

安装jquery库:yarn add --dev jquery

直接在js里import引入: import $ from 'jquery'

编译ES6

(1) 了解babel

目前,ES6(ES2015)这样的语法已经得到很大规模的应用,它具有更加简洁、功能更加强大的特点,实际项目中很可能会使用采用了ES6语法的模块,但浏览器对于ES6语法的支持并不完善。为了实现兼容,就需要使用转换工具对ES6语法转换为ES5语法,babel就是最常用的一个工具。

babel转化语法所需依赖项:

babel-loader: 负责es6语法转化

babel-core: babel核心包

babel-preset-env: 告诉babel使用哪种转码规则进行文件处理

(2) 安装依赖

yarn add --dev babel-loader @babel/core @babel/preset-env

(3) 配置config文件

exclude表示不在指定目录查找相关文件

(4) 根目录新建 .babelrc 文件配置转换规则

(5) 另一种规则配置

使用html-webpack-plugin生成html

1.了解html-webpack-plugin

HtmlWebpackPlugin会自动为你生成一个HTML文件,根据指定的index.html模板生成对应的 html 文件。

根据src下的index.html自动在打包后的目录下生成html文件,相关引用关系和文件路径都会按照正确的配置被添加进生成的html里。

2.生成依赖

yarn add html-webpack-plugin --dev

3.配置config文件

提起分离css

1.处理效果

将所有的入口 chunk(entry chunks)中引用的 css,移动到独立分离的 CSS 文件

2.mini-css-extract-plugin插件

(1)安装(下载)

yarn add --dev mini-css-extract-plugin

(2)配置config文件

引入插件:

rules设置:

Plugins设置:

webpack-小滴课堂学习笔记的更多相关文章

  1. FPGA-VHDL课堂学习笔记*01

    FPGA-VHDL课堂学习笔记 记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843 03月05日  理论课 ...

  2. [原创] linux课堂-学习笔记-目录及概况

    本学习笔记基于:网易云课堂-linux课堂 课时1Centos 6.4安装讲解46:14 课时2Centos 6.4桌面环境介绍与网络连接04:30 课时3 Linux目录结构介绍及内核与shell分 ...

  3. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  4. 2022-07-10 第五小组 pan小堂 css学习笔记

    css学习笔记 什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作. ...

  5. 微信小程序视频学习笔记

    [清华大学]学做小程序 https://www.bilibili.com/video/av21987398 2.2创建项目和文件结构 小程序包含一个描述整体程序的app和多个描述各自页面的page 配 ...

  6. 第1-5章 慕课网微信小程序开发学习笔记

    第1章 前言:不同的时代,不同的Web --微信小程序商城构建全栈应用 http://note.youdao.com/noteshare?id=a0e9b058853dbccf886c1a890594 ...

  7. 大步小步法(BSGS) 学习笔记

    \(\\\) BSGS 用于求解关于 \(x\) 的方程: \[ a^x\equiv b\pmod p\ ,\ (p,a)=1 \] 一般求解的是模意义下的指数,也就是最小非负整数解. \(\\\) ...

  8. 小甲鱼Python学习笔记

    一 isdigit()True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字False: 汉字数字Error: 无 isdecimal()True: Unicode数字, ...

  9. JQuery课堂学习笔记

    第1课 JQuery技术简介 <%@ page language="java" import="java.util.*" pageEncoding=&qu ...

  10. Ajax技术实战操练课堂学习笔记

    ajax是什么 ? ajax(asynchronouse javascript and xml) 异步的javascript 和 xml 是7种技术的综合,它包含了七个技术( javascript x ...

随机推荐

  1. 第二章 若依JFlow流程模型设计

    若依-JFlow框架如何拉取.配置并运行请查看这篇文章:<第一章 若依-JFlow的配置与启动> 上一节我们讲解了如何拉取若依-JFlow框架代码并配置运行,这一部分我们就以公司员工请假的 ...

  2. 如何使用sharding-sphere完成读写分离和分库分表?

    一.sharding-sphere配置读写分离 1.先搭建好一个MySQL的主从集群,可以参考[MySQL主从集群搭建] 2.在项目中导入相关依赖(记得刷新Maven) <!--读写分离--&g ...

  3. 【2020】装了VirtualBox后VMware Workstation无法使用SSH连接Centos的解决方法

    装了个VirtualBox,然后发现无法使用Xshell远程Vmware中的centos了,一开始感觉是虚拟网卡冲突了,发现把VirtualBox的虚拟网卡禁用就可以使用,但是好麻烦啊??每次我特么要 ...

  4. keycloak~对接login-status-iframe页面判断用户状态变更

    上次我们说了,keycloak的login-status-iframe页面的作用,并解决了跨域情况下,iframe与主页面数据传递的方法,这一次,我们主要分析login-status-iframe.h ...

  5. DBeaver连接国产数据库OceanBase,以及Python连接,解决ModuleNotFoundError: No module named '_jpype'

    DBeaver连接OceanBase 参考:https://www.modb.pro/db/365929 用户名的格式为: 数据库用户名@租户名#集群名 Python连接OceanBase 参考:ht ...

  6. PersistenceException、ReflectionException、IllegalArgumentException、wrapException持久性异常 反射异常 非法参数异常 包装异常

    PersistenceException.ReflectionException.IllegalArgumentException.wrapException wrapException 持久性异常 ...

  7. C语言使用dlfcn动态载入.so动态库

    转载:https://mp.weixin.qq.com/s?__biz=Mzk0NDYzNTI1Ng==&mid=2247483722&idx=1&sn=09a9458b012 ...

  8. kubernetes安装(一)

    参考: https://www.cnblogs.com/liuyangQAQ/p/17299871.html 部署组件包 名称 安装包 kubeadm集群组件 kubelet-1.20.9 kubea ...

  9. SpringBoot整合JavaFx(十三)

    SpringBoot整合JavaFx(十三) 在Java中,基本上万物可springboot- 整合了spring全家桶,你可以很方便整合它的生态框架. JavaFx也能整合springboot,下面 ...

  10. RocketMQ 的基本使用

    RocketMQwiki是一个分布式消息和流数据平台,具有低延迟.高性能.高可靠性.万亿级容量和灵活的可扩展性.RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日 ...