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

相关文章

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

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控