webpack

简介: webpack

Webpack

作用域问题:

立即执行函数 : var result = (function(){})()

如何实现代码的拆分 :

// 第一个文件夹
//写入方法
module.exports = {}  //暴露..
// 第二个文件夹
require()//引入第一个文件夹的自定义模块

如何让浏览器支持模块:

//方法模块
define([依赖的模块],function() {
  //暴露的接口
})
// 要引入的文件   main.js
require([引入上面的方法模块],function(参数是上面方法模块的方法名) {
})
//在HTML文件中,引入第三方文件require.js data-main属性提供了一个入口,写入第二个文件的地址]()

==============================================

//安装(本地 webpack)
npm install webpack webpack-cli
function helloword() {
}
export default helloworld       //模块导出
import helloword form "./url"   //模块导入
//pwd  绝对路径
//最后在终端上 npx webpack    会出现一个main.js 文件

webpack --stats detailed 查看打包详情

自定义模块

通过配置文件自定义模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFcs254i-1647736768399)(C:\Users\Lenovo\Desktop\typora\img\config.png)]

//通过配置文件自定义模块
//1. 创建 webpack.config.js 文件
//2. 引入 path 模块
const path = require('path')
//3. 
module.exports = {
    //配置入口
    entry: './src/index.js' ,
    output: {
    //指定输出文件的文件名
        filename : 'bundle.js' ,
    //指定文件的输出路径
        path: path.resolve(__dirname, './dist')
    } ,
    mode: 'none'
}
//4. html文件里  引入bundle.js文件
//5. 终端:
//       npx webpack       dist文件都是通过 config文件配置而成的

自动引入资源

如何使用 HtmlWebpackPlugin

实现自动生成 HTML 入口文件和引入功能

//1. 安装 
npm install html-webpack-plugin
//2. 自定义一个模块
//在  config 文件里添加如下代码 
 const HtmlWebpackPlugin = require('html-webpack-plugin')
 plugins: [
        //第一个插件
        new HtmlWebpackPlugin({
            //模板
            Template: './index.html',
            //输出的文件的文件名
            filename: 'app.html',
            //标签的位置
            inject: 'body'
        })
    ]
//3. npx webpack
//4. dist 文件里会出现一个app.html
//清理 dist
//output 中添加
clean: true

如何使用 webpack-dev-server

//创建文件夹
//2. config 文件
mode: 'development'
//3. 使用 source-map 
//4. 终端 npx webpack --watch  实现自动编译
//5. 安装 webpack-dev-server 插件  实现自动更新无需是手动刷新 
devServer: {
    static: './dist'
}
6. npx webpack-dev-server  点Loopback后的网址

资源模块

Resouce 资源

发送一个单独的文件,并导出 URL

//在config文件中
module: {
        //规则
        rules: [
            {
                // 加载的文件类型
                test: /\.png$/, // $ 表示以png作为扩展名的文件
                //资源类型
                type: 'asset/resource',
                //自定义图片的名称与存放路径
                generator: {
                     //    文件夹  根据文件内容生成哈希字符串   扩展名 
                    filename: 'images/[contenthash][ext]'
                }
            }
        ]
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZDzR4ai-1647736768401)(C:\Users\Lenovo\Desktop\typora\img\resource.png)]

inline 资源

source 资源

用于导出资源的源代码

通用资源类型

在导出一个 data URL 和发送一个单独的文件之间自动选择

默认情况下,当文件大小小于8k时,只会生成一个链接

loader

loader

style-loader加载css

less

less-loader引入css预处理工具

mini-css-extract-plugin -D抽离 压缩 C

SS

csv-loader,xml-loader加载数据

data.xml 会转化为一个对象

data.csv 会转换为一个数组

babel-loader

npm install babel-loader @babel/core @babel/preset-env -D

@babel/runtime

@babel/plugin-transform-runtime

代码分离

多入口

防止重复

动态导入

懒加载

缓存

配置输出文件的文件名

改变filename值

缓存第三方库

将js 文件放到一个文件夹中

公共路径

开发环境

npx webpack --env production

npx webpack --env production --env goal=local env.goal

terser-webpack-plugin 压缩插件

npm脚本配置

"scripts": {
    "start": "webpack serve -c ./config/webpack.config.dev.js",
    "build": "webpack -c ./config/webpack.config.prod.js"
  }

合并配置文件

npm install webpack-merge -D

公共路径 环境变量 拆分环境变量 npm脚本 提取公共配置 合并配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXrGXbs6-1647736768401)(C:\Users\Lenovo\Desktop\typora\img\source-map.png)]

npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D

npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D

devServer

没学好

模块热替换与热加载

module.hot在config文件的devserver 中 设置的值为 true
if(module.hot) {
    //当 ./input.js 发生变化时,accept() 函数执行
    module.hot.accept('./input.js', () => {
    })

Eslint

安装插件,帮助查找问题

npx eslint ./src

//手工关闭覆盖层
        client: {
            overlay: false,
        }
   //检查错误的配置
            {
                test: /\.js$/,
                use: ['babel-loader', 'exlint-loader'],
            }

2.1.5

相关文章
如何快速找出文件夹里的全部带有中文&纯中文的文件
该内容是一篇关于使用工具批量复制文件的教程。首先提到了需要使用的工具,并提供了两个下载来源:百度网盘(提取码:qwu2)和蓝奏云(提取码:2r1z)。接着,详细介绍了操作步骤:1) 打开工具并切换到批量复制文件功能;2) 通过搜索添加文件;3) 设定查找范围和过滤条件,包括包含全部子文件夹和按命名过滤纯中文文件;4) 确认设置后执行搜索;5) 搜索完成后,可以复制或剪切找到的文件。此外,还提到可以直接将D盘拖入工具进行过滤的快捷方法。
|
Linux Shell
简单删除用户(不包括主目录和相关文件
在Linux中删除用户`username`而不删主目录,需避免使用`-r`选项,命令如下(240字符内摘要) ```markdown ```bash sudo userdel username ``` 此命令仅移除用户账户和配置,不删除 `/home/username` 目录。执行前确保有`sudo`权限且确认删除需求,用户信息及配置删除后不可逆。 ```
227 5
|
9月前
|
算法 测试技术 vr&ar
Unity Vufoia+AR模型抖动的问题
**图像识别与跟踪精度问题**:Vuforia 依赖特征点检测,环境光线不稳定、目标纹理不丰富或遮挡会导致特征点匹配误差,引起AR模型抖动。跟踪丢失和重定位延迟也会导致模型不稳定。 **设备硬件与性能问题**:移动设备摄像头易受手持抖动影响,低性能设备无法及时处理图像数据,导致跟踪结果更新延迟。 **模型与坐标系问题**:AR模型重心设置不合理或坐标系转换误差,会使模型在虚拟空间中不稳定。 **算法与参数设置问题**:跟踪算法局限性和参数设置不合理(如灵敏度过高或平滑度过低)都会影响跟踪稳定性。 。
|
5月前
|
开发者 容器
二、探索HarmonyOS Next应用的入口:深度解析Index页面
Index.ets是HarmonyOS Next开发者手册应用的入口页面,它展示了应用的主要导航结构和用户界面设计。本文将深入分析这个文件的代码结构、UI组件使用以及路由实现,帮助开发者理解HarmonyOS应用的基本构建模式。
134 0
|
8月前
|
物联网 测试技术 API
时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证
TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。 InfluxDB OSS 3.0 的数据写入接口与 InfluxDB 1.8 并不兼容,用户无法顺利迁移。
676 7
|
SQL Shell 数据库
MSSQL绕过微软杀毒提权案例
MSSQL绕过微软杀毒提权案例
519 0
|
数据处理 Swift
Swift 中的运算符和表达式是构建程序逻辑的基础,包括算术、关系、逻辑、位运算符及赋值运算符,用于数值计算、条件判断、位操作、赋值与更新等
Swift 中的运算符和表达式是构建程序逻辑的基础,包括算术、关系、逻辑、位运算符及赋值运算符,用于数值计算、条件判断、位操作、赋值与更新等。掌握这些工具是编写高效代码的关键。
218 1
jetty内嵌web页面服务入门
jetty内嵌web页面服务入门
199 1
深入理解PHP中的命名空间
【5月更文挑战第27天】在PHP中,命名空间是一种将代码封装到不同空间的方式,以避免命名冲突。本文将深入探讨PHP中的命名空间,包括其基本概念、使用方法和注意事项,帮助读者更好地理解和应用命名空间。
|
网络安全 数据库 数据安全/隐私保护
数据库被盗
数据库被盗

热门文章

最新文章