当前位置: 首页 > news >正文

Webpack 复习小结

nodejs学习参考
node常用命令:
node xxx.js
执行js文件
npm init -y
初始化package.json
npm i 软件包名
下载软件包到本地
npm i 软件包名 -g
下载软件包到全局
npm uni 软件包名
删除软件包

系统优化CDN使用

CDN for free

需求:开发模式使用本地第三方库,生产模式下使用CDN加载引用
步骤:
1.在index.html文件中引入第三方CDN地址,并用模板语法判断
index.html

...
<% if(htmlWebpackPlugin.options.useCDN){ %>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.min.js"></script>
<% } %>
...

webpack.config.js

plugins: [new HtmlWebpackPlugin({template: './public/index.html', // html模板文件filename: './index.html', // html输出文件名useCDN: process.env.NODE_ENV === 'production',favicon: './public/favorite.png'}),
],

2.配置webpack.config.js中externals外部扩展选项(防止某些import的包被打包)

/*生产模式下,排除掉 使用CDN引入加载的资源*/
if (process.env.NODE_ENV === 'production') {config.externals = {//key : import from 语句后面的字符串//value: 留在原地的全局变量(最好和CDN在全局暴露的变量一致)'axios': 'axios'}
}

多页面打包

未成功加载

开发环境调错

问题:代码被压缩和混淆,无法正确定位源代码位置(行数和列数)
source map :可以准确追踪error和warning在原始代码中的位置
设置:webpack.config.js配置devtool选项

/*开发模式下使用devtool = inline-source-map,便于查找错误*/
if (process.env.NODE_ENV === 'development')config.devtool = 'inline-source-map'

inline-source-map选项:把源码的位置信息一起打包在js文件内
注意:source-map仅适用于开发环境,不要在生产环境使用(防止被轻易查看源码位置)

打包模式

打包模式:告知webpack使用响应的内置优化
开发模式:development 调试代码;实施加载;模块热替换等;适用于本地开发
生产模式:production 压缩代码;资源优化;更轻量;适用于打包上线

设置方式1:
package.json

"build": "webpack --mode=production",
"dev": "webpack serve --open --mode=development"

设置方式2:
webpack.config.js

const config = {
//mode: 'development',
mode: 'production',
}

命令行设置的优先级高于配置文件中的,推荐使用命令行设置

应用

需求:在开发模式下用style-loader内嵌,加载更快,再生产模式下提取css代码
借助cross-env(跨平台通用)包命令,设置参数区分环境
步骤:

  1. 下载 cross-env软件包到当前项目
    npm i cross-env --save-dev
  2. 配置自定义命令,传入参数名和值(会绑定到process.env对象下)
"build": "cross-env NODE_ENV=production webpack --mode=production",
"dev": "cross-env NODE_ENV=development webpack serve --open --mode=development"
  1. webpack.config.js区分不同环境使用不同配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
/*css 分别打包*/
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
/*css 代码压缩插件*/
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const webpack = require('webpack')const config = {// mode: 'development',entry: {index: './src/main.js',// print: './src/print.js',},// devtool: 'inline-source-map',devServer: {/*默认以 public/index.html ,可以将dist目录启动为服务*/// static: './dist',//启动服务后自动弹出页面// open: true},module: {rules: [{test: /\.css$/i,// use: [MiniCssExtractPlugin.loader, "css-loader"],/*开发模式下, 内嵌css样式,让热替换更快生产模式下提取css代码,让浏览器缓存 并行下载js和css文件*/use: [process.env.NODE_ENV === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader, "css-loader"],},{test: /\.less$/i,use: [// compiles Less to CSSprocess.env.NODE_ENV === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,'css-loader','less-loader',],},],},plugins: [new HtmlWebpackPlugin({template: './public/index.html', // html模板文件filename: './index.html', // html输出文件名useCDN: process.env.NODE_ENV === 'production',favicon: './public/favorite.png'}),new MiniCssExtractPlugin({}),//允许在 编译时 将前端代码中的变量替换为其他值或表达式new webpack.DefinePlugin({// 定义...'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),}),],output: {filename: '[name].bundle.js',path: path.resolve(__dirname, 'dist'),clean: true,},optimization: {runtimeChunk: 'single',minimizer: [// 在 webpack@5 中,你可以使用 `...` 语法来扩展现有的 minimizer(即 `terser-webpack-plugin`),将下一行取消注释`...`,new CssMinimizerPlugin(),],},/*配置别名变量*/resolve: {alias: {'@': path.join(__dirname, 'src')}}
}/*开发模式下使用devtool = inline-source-map,便于查找错误*/
if (process.env.NODE_ENV === 'development')config.devtool = 'inline-source-map'/*生产模式下,排除掉 使用CDN引入加载的资源*/
if (process.env.NODE_ENV === 'production') {config.externals = {//key : import from 语句后面的字符串//value: 留在原地的全局变量(最好和CDN在全局暴露的变量一致)'axios': 'axios'}
}
module.exports = config

相关文章:

Webpack 复习小结

nodejs学习参考 node常用命令&#xff1a; node xxx.js 执行js文件 npm init -y 初始化package.json npm i 软件包名 下载软件包到本地 npm i 软件包名 -g 下载软件包到全局 npm uni 软件包名 删除软件包 系统优化CDN使用 CDN for free 需求&#xff1a;开发模式使用本地第三…...

Laravel chunk和chunkById的坑

在编写定时任务脚本的时候&#xff0c;经常会用到chunk和chunkById的API。 一、前言 数据库引擎为innodb。 表结构简述&#xff0c;只列出了本文用到的字段。 字段类型注释idint(11)IDtypeint(11)类型mark_timeint(10)标注时间&#xff08;时间戳&#xff09; 索引&#x…...

从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)

泛型及set集合扩展 1.泛型1.1泛型概述 2.Set集合2.1Set集合概述和特点【应用】2.2Set集合的使用【应用】 3.TreeSet集合3.1TreeSet集合概述和特点【应用】3.2TreeSet集合基本使用【应用】3.3自然排序Comparable的使用【应用】3.4比较器排序Comparator的使用【应用】3.5两种比较…...

JVM----GC(垃圾回收)详解

一、Automatic Garbage Collection&#xff08;垃圾回收&#xff09;简介 Automatic Garbage Collection &#xff08;自动垃圾回收&#xff09;是JVM的一个特性&#xff0c;JVM会启动相关的线程&#xff0c;该线程会轮训检查heap memeory&#xff0c;并确定哪些是未被引用的(…...

数据库的三个范式

数据库的三个范式是关系数据库设计中的一组规范&#xff0c;用于确保数据的有效性和一致性。这三个范式分别是&#xff1a; 第一范式&#xff08;1NF&#xff09;&#xff1a;要求数据库表中的每一列都是不可分割的原子值。换句话说&#xff0c;每个表中的每个字段不能包含多个…...

谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行

环境&#xff1a; Win10 专业版 谷歌浏览器 版本 116.0.5845.141&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; L盾加密终端 问题描述&#xff1a; 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行&#xff0c;要全部结束谷歌浏览器进程&…...

Java EE 突击 15 - Spring Boot 统一功能处理

Spring Boot 统一功能处理 一 . 统一功能的处理1.1 初级阶段 : 不断重复1.2 中级阶段 : 集成方法1.3 高级阶段 : Spring AOP1.4 超高级阶段 : Spring 拦截器准备工作实现拦截器自定义拦截器将自定义拦截器加入到系统配置 拦截器实现原理扩展 : 统一访问前缀添加 二 . 统一异常的…...

JasperReport定义变量后打印PDF变量为null以及整个pdf文件为空白

问题1: JasperReport打印出来的整个pdf文件为空白文件&#xff1b; 问题2&#xff1a;JasperReport定义变量后打印PDF变量为null&#xff1b; 问题1原因是因为缺少数据源JRDataSource JasperFillManager.fillReport(jasperReport, params,new JREmptyDataSource());如果你打印…...

Python 及 Pycharm 的安装 2023.8

Python 及 PyCharm 的安装 仅适用于 Windows 系统&#xff01; 视频教程&#xff1a;【Python及Pycharm的安装 2023.8】 https://www.bilibili.com/video/BV1A34y1T7Gu 文章目录 Python 及 PyCharm 的安装安装 Python安装 PyCharmHi, PyCharmPyCharm 汉化 安装 Python 进入 …...

java中的线程中断

java中的线程中断 1、线程中断 即 线程的取消/关闭的机制2、线程对中断interrupt()的反应2.1、RUNNABLE&#xff1a;线程在运行或具备运行条件只是在等待操作系统调度2.2、WAITING/TIMED_WAITING&#xff1a;线程在等待某个条件或超时2.3、BLOCKED&#xff1a;线程在等待锁&…...

【跟小嘉学 Rust 编程】二十三、Cargo 使用指南

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

R Removing package报错(as ‘lib’ is unspecified)

remove.packages(ggpubr) Removing package from ‘/Library/Frameworks/R.framework/Versions/4.0/Resources/library’ (as ‘lib’ is unspecified) 解决办法&#xff1a; > .libPaths() [1] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library&qu…...

金融信创,软件规划需关注自主安全及生态建设

软件信创化&#xff0c;就是信息技术软件应用创新发展的意思&#xff08;简称为“信创”&#xff09;。 相信在中国&#xff0c;企业对于“信创化”这个概念并不陌生。「国强则民强」&#xff0c;今年来中国经济的快速发展&#xff0c;受到了各大欧美强国的“卡脖子”操作的影…...

无重叠区间【贪心算法】

无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 class Solution {public int eraseOverlapIntervals(int[][] intervals) {//先排序&#xff0c;按照左边界升序,注…...

nlp系列(7)实体识别(Bert)pytorch

模型介绍 本项目是使用Bert模型来进行文本的实体识别。 Bert模型介绍可以查看这篇文章&#xff1a;nlp系列&#xff08;2&#xff09;文本分类&#xff08;Bert&#xff09;pytorch_bert文本分类_牧子川的博客-CSDN博客 模型结构 Bert模型的模型结构&#xff1a; 数据介绍 …...

Uniapp学习之从零开始写一个简单的小程序demo(新建页面,通过导航切换页面,发送请求)

先把官网文档摆在这&#xff0c;后面会用到的 [uniapp官网文档]: https://uniapp.dcloud.net.cn/vernacular.html# 一、开发工具准备 1-1 安装HBuilder 按照官方推荐&#xff0c;先装一个HBuilder 下载地址&#xff1a; https://www.dcloud.io/hbuilderx.html1-2 安装微信开…...

uniapp微信小程序隐私保护引导新规

1.components中新建组件PrivacyPop.vue <template><view class"privacy" v-if"showPrivacy"><view class"content"><view class"title">隐私保护指引</view><view class"des">在使用当…...

超图嵌入论文阅读2:超图神经网络

超图嵌入论文阅读2&#xff1a;超图神经网络 原文&#xff1a;Hypergraph Neural Networks ——AAAI2019&#xff08;CCF-A&#xff09; 源码&#xff1a;https://github.com/iMoonLab/HGNN 500star 概述 贡献&#xff1a;用于数据表示学习的超图神经网络 (HGNN) 框架&#xf…...

安全运营中心(SOC)技术框架

2018年曾经画过一个安全运营体系框架&#xff0c;基本思路是在基础单点技术防护体系基础上&#xff0c;围绕着动态防御、深度分析、实时检测&#xff0c;建立安全运营大数据分析平台&#xff0c;可以算作是解决方案产品的思路。 依据这个体系框架&#xff0c;当时写了《基于主动…...

并行和并发的区别

从操作系统的角度来看&#xff0c;线程是CPU分配的最小单位。 并行就是同一时刻&#xff0c;两个线程都在执行。这就要求有两个CPU去分别执行两个线程。并发就是同一时刻&#xff0c;只有一个执行&#xff0c;但是一个时间段内&#xff0c;两个线程都执行了。并发的实现依赖于…...

GPT转换工具:轻松将MBR转换为GPT磁盘

为什么需要将MBR转换为GPT&#xff1f; 众所周知&#xff0c;Windows 11已经发布很长时间了。在此期间&#xff0c;许多老用户已经从Windows 10升级到Windows 11。但有些用户仍在运行Windows 10。对于那些想要升级到Win 11的用户来说&#xff0c;他们可能不确定Win 11应该使…...

大模型参数高效微调技术原理综述(二)-BitFit、Prefix Tuning、Prompt Tuning

随着&#xff0c;ChatGPT 迅速爆火&#xff0c;引发了大模型的时代变革。然而对于普通大众来说&#xff0c;进行大模型的预训练或者全量微调遥不可及。由此&#xff0c;催生了各种参数高效微调技术&#xff0c;让科研人员或者普通开发者有机会尝试微调大模型。 因此&#xff0c…...

将conda环境打包成docker步骤

1. 第一步&#xff0c;将conda环境的配置导出到environment.yml 要获取一个Conda环境的配置文件 environment.yml&#xff0c;你可以使用以下命令从已存在的环境中导出&#xff1a; conda env export --name your_env_name > environment.yml请将 your_env_name 替换为你要…...

C# 获取Json对象中指定属性的值

在C#中获取JSON对象中指定属性的值&#xff0c;可以使用Newtonsoft.JSON库的JObject类 using Newtonsoft.Json.Linq; using System; public class Program { public static void Main(string[] args) { string json "{ Name: John, age: 30, City: New York }"; …...

【LeetCode】202. 快乐数 - hash表 / 快慢指针

目录 2023-9-5 09:56:152023-9-6 19:40:51 202. 快乐数 2023-9-5 09:56:15 关键是怎么去判断循环&#xff1a; hash表&#xff1a; 每次生成链中的下一个数字时&#xff0c;我们都会检查它是否已经在哈希集合中。 如果它不在哈希集合中&#xff0c;我们应该添加它。如果它在…...

什么是多态性?如何在面向对象编程中实现多态性?

1、什么是多态性&#xff1f;如何在面向对象编程中实现多态性&#xff1f; 多态性&#xff08;Polymorphism&#xff09;是指在同一个方法调用中&#xff0c;由于参数类型不同&#xff0c;而产生不同的行为。在面向对象编程中&#xff0c;多态性是一种重要的特性&#xff0c;它…...

【目标检测】理论篇(3)YOLOv5实现

Yolov5网络构架实现 import torch import torch.nn as nnclass SiLU(nn.Module):staticmethoddef forward(x):return x * torch.sigmoid(x)def autopad(k, pNone):if p is None:p k // 2 if isinstance(k, int) else [x // 2 for x in k] return pclass Focus(nn.Module):def …...

IDEA爪哇操作数据库

少小离家老大回,乡音无改鬓毛衰 ⒈.IDEA2018设置使用主题颜色 IDEA2018主题颜色分为三种&#xff1a;idea原始颜色&#xff0c;高亮色&#xff0c;黑色 设置方法&#xff1a;Settings–Appearance&Behavior–Appearance ⒉.mysql中&#xff0c;没有my.ini&#xff0c;只有…...

一文速学-让神经网络不再神秘,一天速学神经网络基础(七)-基于误差的反向传播

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;…...

C++ 异常处理——学习记录007

1. 概念 程序中的错误分为编译时错误和运行时错误。编译时出现的错误包括关键字拼写出错、语句分号缺少、括号不匹配等&#xff0c;编译时的错误容易解决。运行时出现的错误包括无法打开文件、数组越界和无法实现指定的操作。运行时出现的错误称为异常&#xff0c;对异常的处理…...