webpack: 四个核心概念

2024-08-20 16:58
文章标签 概念 核心 webpack 四个

本文主要是介绍webpack: 四个核心概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

webpack的三种方式:
命令行工具
配置文件
node中使用

Webpack四个核心概念:
Entry: 告诉webpack入口文件在哪
Output: 告诉webpack把编译好的文件放在哪里
Loaders: 告诉webpack在添加到依赖图之前如何转换,比如es6转es5,sass转css
Plugins: 在编译的过程中添加你想要的任何操作,loader做不了的事情


基础配置文件:

这个文件应该放在webpack的根目录下

        module.exports = {                   // 暴露对象
    entry: "",                       // 字符串或者对象
    output: "",                      // 初始文件
    module: {                        // Loaders 置开发模式还是生产模式
        rules: [{test:/\.js$/,            // 正则个则表达式
            use: ["babel-loader"]    // 做什么
        }]},plugins: [                       // Plugin 插件
        new]
}

可以把这个对象写成一个函数,这样可以使用env传参

        module.exports = (env) => {console.log(env)return {mode: env.mode}
}

使用es6写法

        $ npm install html-webpack-plugin

下载第三方库

        const htmlWebpackPlugin = require("html-webpack-plugin"); // 导入html-webpack-plugin
// 导入html-webpack-plugin
const webpack = require("webpack");
// webpack内置插件
module.exports = ({mode}) => {        // 对象解构赋值
 return {mode,                         // es6写法 属性明和值一直写一个即可
        entry: "./src/index1.js",     // 入口文件 需要手动创建该文件(可以上多个文件,使用对象)
        output: {                     // 出口打包的文件
            path: __dirname + "/build",  // 要使用绝对路径,可以使用node变量__dirname (默认dist/目录)
            filename: "bundle.js"        // 更改文件,可以生成文件(默认main.js)
        },plugins: [                       // 插件上的项上是构造函数 
            new htmlWebpackPlugin({      // 自动生成html文件,并把build.js文件引入
                template: "./index.html" // 引入自己写的html文件(模版)
            }),new webpack.ProgressPlugin() // 可以显示进度 可以在包很大的地方使用
        ]}
}

网络插件

        $ npm install webpack-dev-server

下载完该插件后.bin/目录下会有一个webpack-dev-server的文件夹,在webpackage.json里写一个这个命令的脚本

v2-0e86ba64cef953fa70ecbcdfda4e14d2_b.jpg

使用npm run dev运行后进入测试连接,这个页面可以随文件的改动自动刷新,但是这写代码上直接放在内存中的,不会打包。可以自动添加按钮、div等等。

v2-ac9934742459b64d59f4e37b4c7d58a0_b.jpg

等运行结束,我们再使用npm run prod生成真实的打包文件

开发模式和生产模式配置文件分离

在根目录下新建文件夹build_utile(可自定义),在该文件下分别创建webpack.development.js(开发模式配置)和webpack.production.js(生产模式配置)文件。

webpack.development.js

        module.exports = {output: {filename: "bundle.js"}
}

webpack.production.js

哈希值: 防止用户因缓存不更新新内容,哈希值由内容决定,内容改动,哈希文件名就改变,用户没有,再次请求

        module.exports = {output: {// filename: "main.js"filename: "[chunkhash].js" // 哈希}
}

下载merge模块

        $ npm install webpack-merge --save-dev

引入merge模块: 可以把两个对象融合

        const htmlWebpackPlugin = require("html-webpack-plugin");
const webpack = require("webpack");
const webpackMerge = require("webpack-merge")                // 引入merge
const configMode = mode => {                                 // 回调函数return require(`./build_utile/webpack.${mode}.js`)       // 接收模式
}
module.exports = ({mode}) => {return webpackMerge({                                  // return Merge 返回一个函数mode,entry: "./src/index1.js",plugins: [new htmlWebpackPlugin({template: "./index.html"}),new webpack.ProgressPlugin()]},configMode(mode))                                     // 使用回调函数
}

这篇关于webpack: 四个核心概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090644

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J