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知识库 -> 重学webpack5——webpack初探 -> 正文阅读

[JavaScript知识库]重学webpack5——webpack初探

目录

一、什么是webpack

?二、五大核心概念

入口 - Entry

出口 - Output

Loader

插件 - Plugins

模式 - Mode

解释几个 webpack 中的术语

三、webpack初体验

结论

资源?


一、什么是webpack

  • webpack 是前端的一个资源构建工具,一个静态模块打包器
  • 在 webpack 看来,前端的所有资源文件(js/json/css/less/scss/img...)都是一个个模块
  • webpack 会根据资源的依赖关系生成一个依赖关系图,再打包成对应的静态资源bundle

?二、五大核心概念

入口 - Entry

入口(Entry)是 webpack 分析构建内部依赖图的起点模块(模块就是一个文件)。

出口 - Output

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。

Loader

  • loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript);
  • loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块。模块转换器。本质就是一个函数,在该函数中对接收到的内容进行转换,返回转换后的结果。因为 Webpack 只认识 JavaScript,所以 Loader 就成了翻译官,对其他类型的资源进行转译的预处理工作。

loader的使用:

  • 需要先下载;
  • 无需requrie
// webpack.config.js:
const { resolve } = require('path');
const config = {
  output: {
    filename: 'my-first-webpack.bundle.js',
    path: resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      // 不同类型的文件必须配置不同的规则来处理
      {
        test: /\.css$/, // 匹配什么样的文件
        // use数组中loader的执行顺序:从下到上,从右到左(后进先出)
        use: [
          'style-loader', 
          'css-loader' 
        ]
      }
    ]
  }
};
module.exports = config;
复制代码

插件 - Plugins

可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量等

plugin的使用:

  • 需要先下载;
  • 还需requrie
// webpack.config.js:
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
const config = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};
module.exports = config;
复制代码

模式 - Mode

  • 模式(Mode)指示 webpack 使用相应模式的配置;
  • mode: 'development' | 'production';
  • 生产环境和开发环境将ES6模块化编译成浏览其能识别的模块化;
  • 生产环境比开发环境多一个压缩js代码;
选项描述特点
development会将DefinePluginprocess.env.NODE_ENV的值设置为development。启用NamedChunksPluginNamedModulesPlugin能让代码本地调试运行的环境
production会将DefinePluginprocess.env.NODE_ENV的值设置为production。启用FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 TerserPlugin能让代码优化上线运行的环境

解释几个 webpack 中的术语

  • module:指在模块化编程中我们把应用程序分割成的独立功能的代码模块
  • chunk:指模块间按照引用关系组合成的代码块,一个?chunk?中可以包含多个?module
  • chunk group:指通过配置入口点(entry point)区分的块组,一个?chunk group?中可包含一到多个 chunk
  • bundling:webpack 打包的过程
  • asset/bundle:打包产物

三、webpack初体验

  1. ?初始化 package.json ? ? ? ??输入指令: npm init
  2. 下载并安装 webpack? ? ? ? ? 输入指令: npm install webpack webpack-cli ?-g? /? -D

目录结构

webpack初体验
|———build  //输出文件夹
├── src    
│   └── index.js
│   └── test.json
复制代码

?

代码

// 1. src/index.js
function add(x, y) {
  return x + y;
}
add(1, 2)
console.log(add(1, 2))

??????3. 打包

webpack --entry ./src/index.js -o ./build --mode=development
  1. webpack会以 ./src/index.js 为入口文件开始打包
  2. 打包后输出到./bulid/main.js
  3. 整体打包环境是?开发环境

也可以用自动打包 打包到 ./dist/main.js
默认打包src下的index到dist文件夹下的main.js

npx webpack --mode=development

?

可以直接用node运行

?生产环境

webpack --entry ./src/index.js -o ./build --mode=production

?同样webpack可以打包json资源,可以自行测试

// 1. src/index.js
import data from './test.json';
console.log(data);
function add(x, y) {
  return x + y;
}
add(1, 2)
console.log(add(1, 2))

// 2. src/test.json
{
  "testJson": "test json"
}

结论

  1. webpack 本身能处理 js/json 资源,不能处理 css/img 等其他资源

  2. 生产环境和开发环境将 ES6 模块化编译成浏览器能识别的模块化,但是不能处理 ES6 的基本语法转化为 ES5(需要借助 loader)

  3. 生产环境比开发环境多一个压缩 js 代码

资源?

该博客是根据尚硅谷新版Webpack5实战教程(从入门到精通)_哔哩哔哩_bilibili学习后总结的笔记,有疑问的小伙伴可以去学习一下

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:46:47  更:2022-04-23 10:47:36 
 
开发: 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年11日历 -2024/11/24 1:02:49-

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