IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 手把手教你打包代码----webpack -> 正文阅读

[JavaScript知识库]手把手教你打包代码----webpack

webpack基本概念

webpack本质是, node的一个第三方模块包, 用于打包代码;

现代 javascript 应用程序的 静态模块打包器 (module bundler)

webpack能做什么

功能:
? ?1.压缩,合并,打包?
? ?2.?语法转换

  • ?? ??? ?高版本===>低版本(降级兼容)
  • ?? ??? ?less/sass -> css

? ?3. 监听代码变化,自动打包和更新
? ?4. 提取vue中的html/.css/js文件

作用:

1.减少文件数量;

2.缩减代码体积;

3.提高浏览器打开的速度;

新建webpack的步骤:

1.初始化--package.json
?? ??? ?

yarn init


?2.下载webpack等模块包
?? ?

?? ?yarn add webpack webpack-cli -D


?? ?3.在package.json自定义命令,为打包做准备
?

 ??? ?scripts: {
?? ?"build": "webpack"
}


?? ?4.新建目录src,在src文件夹下建立index.js文件---该文件为,默认入口 ?./src/index.js


?? ?5.新建业务文件,并定义执行函数(js代码)---src/add/add.js
?? ?6.在src/index.js中导入业务文件
?? ?7.运行打包代码
?? ???

 ?yarn build
#或者 npm run build


?? ??? ??? ?打包后会自动生成dist文件夹? ----默认出口: ./dist/main.js
?? ?8.打开默认生成的dist和main.js文件,查看其中代码

webpack 更新打包

以后代码变更, 如何重新打包呢?

别担心,只需要输入打包指令重新打包就好啦~

yarn build

webpack的配置

webpack-入口和出口

默认入口: ./src/index.js

entry: "./src/main.js",

默认出口: ./dist/main.js

output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "bundle.js" // 出口文件名
    }

修改package.json, 自定义打包命令 - 让webpack使用配置文件

"scripts": {
    "build": "webpack"
},

webpack默认只能处理js类型文件,无法识别html文件---因此,我们需要借助工具来解决引入HTML

插件的使用----自动生成html文件

目标: html-webpack-plugin插件, 让webpack打包后生成html文件并自动引入打包后的js

1.下载插件

yarn add html-webpack-plugin  -D

2.webpack.config.js配置

// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...省略其他代码
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html' // 以此为基准生成打包后html文件
        })
    ]
}

加载器的使用

css加载器

安装

yarn add style-loader css-loader -D

webpack.config.js 配置

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...其他代码
    module: { // 加载器
        rules: [ // loader的规则
          {
            test: /\.css$/, // 匹配所有的css文件
            // use数组里从右向左运行
            // 先用 css-loader 让webpack能够识别 css 文件的内容并打包
            // 再用 style-loader 将样式, 把css插入到dom中
            use: [ "style-loader", "css-loader"]
          }
        ]
    }
}

把css文件引入到 main.js

import "./css/index.css"

less加载器

目标: less-loader让webpack处理less文件, less模块翻译less代码

下载包

yarn add less less-loader -D

webpack.config.js配置

 rules: [ // loader的规则
    // ...省略其他
    {
    	test: /\.less$/,
    	// 使用less-loader, 让webpack处理less文件, 内置还会用less翻译less代码成css内容
        use: [ "style-loader", "css-loader", 'less-loader']
    }
  ]

把less引入到main.js中

import "./less/index.less"

图片文件 加载器

目标: 用asset module方式(webpack5版本新增)

下载包

yarn add url-loader file-loader -D

webpack.config.js 配置

{
    test: /\.(png|jpg|gif|jpeg)$/i,
    type: 'asset'
}

在src/main.js - 把图片插入到创建的img标签上

// 引入图片-使用
import imgUrl from './assets/1.gif'
const theImg = document.createElement("img")
theImg.src = imgUrl
document.body.appendChild(theImg)

总结: url-loader 把文件转base64 打包进js中, 会有30%的增大, file-loader 把文件直接复制输出

字体文件加载器

配置

{ // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
    test: /\.(eot|svg|ttf|woff|woff2)$/,
    type: 'asset/resource',
    generator: { //生成文件名定义规则(自定义文件名)
    	filename: 'font/[name].[hash:6][ext]'
    }
}

在main.js引入iconfont.css

// 引入字体图标文件
import './assets/fonts/iconfont.css'

总结: url-loader和file-loader 可以打包静态资源文件

js语法转换

安装包

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

配置规则

rules: [
    {
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
            loader: 'babel-loader',
            options: {
                presets: ['@babel/preset-env'] // 预设:转码规则(用bable开发环境本来预设的)
            }
        }
    }
  ]

总结: babel-loader 可以让webpack 对高版本js语法做降级处理后打包

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:18:34  更:2021-10-18 17:20:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 4:17:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码