vite和webpacke的常规配置

文章目录

    • 1、vite和webpacke的区分
    • 2、vite的常规配置
      • 介绍
      • 主要部分介绍
      • vite基本配置示例
    • 3、webpacke的常规配置
      • 介绍
      • 主要部分介绍
      • Webpack 基本配置示例

1、vite和webpacke的区分

  • 相同点: 都是构建工具,用于资源打包 ; 都有应用到摇树原理 tree shaking。

Tree-shaking 是指在打包过程中通过静态分析,识别并删除未使用的代码,以减小最终输出文件的大小。

  • 不同点
不同点vitewebpacke
插件生态相对较少非常丰富
配置复杂度在设计上更注重开箱即用,大部分场景下用户无需自己写配置文件配置相对复杂,对新手不够友好
开发模式采用了基于ES Module的开发服务器,只有在需要时才会编译对应的模块,大幅度提升了开发环境的响应速度。在开发模式下依然会对所有模块进行打包操作,虽然提供了热更新,但大型项目中依然可能会出现启动和编译缓慢的问题;
打包效率利用了浏览器对ES Module的原生支持,只打包和缓存实际改动的模块,从而极大提高了打包效率会把所有的模块打包成一个bundle,这会导致初次加载速度较慢
热更新机制热更新是增量更新,只更新修改的文件,所以即使在大型应用中也能保持极快的编译速度热更新是全量更新,即使修改一个小文件,也会重新编译整个应用,这在大型应用中可能会导致编译速度变慢
应用场景凭借其轻量和速度,更适合于中小型项目和快速原型开发其丰富的功能和扩展性,适合于大型、复杂的项目

2、vite的常规配置

介绍

vite官网

vite是一个由Vue.js开发的构建工具,它利用了ES Module Imports,在开发环境下可以实现按需编译,加快了开发速度。而在生产环境下,它使用Rollup进行打包,提供更好的tree-shaking、代码压缩和性能优化。
vite主要解决了现有工具(如webpack、rollup)在大型项目开发过程中存在的启动慢、热更新慢等问题。vite致力于为现代前端工作流提供一个更快、更轻的解决方案。

Vite的特点包括:

  • 快速的启动时间。通过区分依赖和源码两类模块,改进了开发服务器启动时间。
  • 轻量快速的热重载。无论应用程序的大小如何,都始终很快的模块热重载(HMR)。
  • 即时更新。具有HMR功能的框架可以利用Vite提供的原生ESM的HMR API提供即时、准确的更新,而无需重新加载页面或清除应用程序状态。
  • 按需编译返回。Vite在开发模式下不需要打包,只需要编译浏览器发出的HTTP请求对应的文件即可,因此热更新速度很快。
    在这里插入图片描述

主要部分介绍

  • root: 指定项目的根目录,默认为当前工作目录。在这个例子中,我们设置为 ./,表示当前目录。
  • build: 配置构建选项,其中 outDir 指定了构建的目标目录,即打包输出的目录。
  • base: 指定项目的基础公共路径,默认为 /,用于在构建时生成链接。例如,如果设置为 /my-app/,那么构建时生成的链接会以 /my-app/ 开头。
  • publicDir: 指定静态资源目录,默认为 public,用于存放不需要经过 Vite 处理的静态资源文件。
  • plugins: 配置插件,可以在这里添加 Vite 插件,例如 Vue 插件等。
  • resolve: 配置解析选项,例如设置别名等,使得在项目中可以使用别名来引用模块。
  • server: 配置开发服务器,可以设置端口号、是否自动打开浏览器等选项。
  • optimizeDeps: 配置优化选项,例如按需加载依赖项等。

vite基本配置示例

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'; // 导入 Vue 插件
export default defineConfig({// 项目根目录,默认为当前工作目录root: './',// 指定构建的目标目录,默认为 "dist"build: {outDir: 'dist',},// 项目的基础公共路径,默认为 "/"base: '/',// 指定静态资源目录,默认为 "public"publicDir: 'public',// 配置插件,可以在这里添加 Vite 插件plugins: [vue(), // 添加 Vue 插件],// 配置解析选项,例如别名等resolve: {alias: {'@': '/src', // 设置 @ 别名指向 src 目录},},// 配置开发服务器server: {port: 3000, // 指定开发服务器端口,默认为 3000open: true, // 启动开发服务器时自动打开浏览器proxy: { // 代理'/api': { target: 'http://11.11.11.11:9900/',changeOrigin: true, rewrite: path => path.replace(/^\/api/, '')},}},// 配置优化选项,例如按需加载依赖项等optimizeDeps: {// 可以配置优化依赖项的行为},
});

3、webpacke的常规配置

介绍

webpacke官网

webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。
在这里插入图片描述

主要部分介绍

  • entry(入口): 指定入口文件为 src/main.js。
  • output(输出): 输出指示webpack打包后的资源bundles输出到哪里,以及如何命名。
  • resolve( 配置模块): 配置模块解析的相关选项,例如文件扩展名和别名。
  • module.rules(模块解析): 配置处理不同类型模块的规则,例如处理 Vue 单文件组件、使用 Babel 转译 JavaScript、处理样式文件等。
  • plugins(插件): 配置使用的插件,例如生成 HTML 文件、处理 Vue 单文件组件等。
  • devServer(开发服务器): 配置开发服务器的相关选项,例如内容的来源、压缩、端口等。
  • devtool: 配置生成 source map 的方式,方便调试。

Webpack 基本配置示例

// vue.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { VueLoaderPlugin } = require('vue-loader');module.exports = {// 入口文件entry: './src/main.js', output: { // 输出路径 __dirname是nodejs的变量,代表当前文件webpack.js目录的绝对路径path: path.resolve(__dirname, 'dist'), // 输出文件名filename: 'bundle.js', publicPath: '/',},resolve: {// 用于指定在引入模块时可以省略的文件扩展名,可以让你在引入文件时不需要写明文件的扩展名extensions: ['.js', '.vue'],// 用于创建模块路径的别名,可以简化模块引入的路径,可以让你使用 @ 来代替 src 目录的绝对路径。alias: {'@': path.resolve(__dirname, 'src'),},},module: {rules: [{test: /\.vue$/,loader: 'vue-loader',},{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader',},},{// test:使用正则匹配文件// 这个规则表示当 Webpack 遇到以 .css 结尾的文件时,会先使用 css-loader 处理,然后再使用 style-loader 将样式注入到页面中。test: /\.css$/,use: ['style-loader', 'css-loader'],},{test: /\.(png|jpe?g|gif)$/i,use: [{loader: 'file-loader',options: {name: '[name].[ext]',outputPath: 'images',},},],},],},plugins: [// html-webpack-plugin插件会打包html文件// 功能:会默认创建一个空的html,自动引入打包后输出的所有资源(js/css)new HtmlWebpackPlugin({template: './public/index.html',filename: 'index.html',favicon: './public/favicon.ico',}),// VueLoaderPlugin这个插件是 Vue Loader 的一个插件,用于解析和转换 Vue 单文件组件。new VueLoaderPlugin(), ],devServer: {// 指定服务器的根目录,告诉服务器从哪里提供内容contentBase: path.join(__dirname, 'dist'), compress: true,//  指定开发服务器的端口号,默认为 8080。port: 9000,open: true,// 设置代理,用于解决跨域请求问题。可以将某些 URL 下的请求代理到另外一个服务器。proxy: {'/api': {target: 'http://11.11.11.11:9900/',changeOrigin: true,ws: true,pathRewrite: {'': '',},},},},devtool: 'eval-source-map',// 模式 用于指定当前构建的模式。它有三个可选值:development、production 和 none。mode: 'development'
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录 核心总结符号定义第一套,快速简单讲清采样方法继续分析,待定系数法求解图示理解关于参数sigma 本文是观看以下视频的笔记,强烈推荐观看最后的图示理解: https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from333.788 论…

路由重分布的概念与配置

路由重分布的概念 l 路由重分布是指连接不同路由域(自治系统)的边界路由器,它在路由协议之间交换和通告路由信息 从一种协议(含静态/直连路由)到另一种协议 同一种协议的多个实例 路由重分布的背景 网络出口位置…

时间序列预测:基于PyTorch框架的循环神经网络(RNN)实现销量预测

之前随手一写,没想到做预测的同学还挺多,但是之前那个效果并不好,于是在之前的基础上重新修改完善,到了现在这一步才感觉预测算是初步能应用。 上文地址:LSTM模型预测时间序列:根据历史销量数据预测商品未…

AI预测福彩3D第9套算法实战化测试第4弹2024年4月26日第4次测试

今天继续进行新算法的测试,今天是第4次测试。好了,废话不多说了,直接上图上结果。 2024年4月26日福彩3D预测结果 6码定位方案如下: 百位:4、5、7、8、3、9 十位:6、9、5、4、1、2 个位:7、8、5、…

光明的未来:光分路器在现代通信中的角色

光分路器又叫分光器,是一种集成波导光功率分配器件,作用是实现光信号的分路。例如,一个1x4光分路器可以将一路输入光信号等比分成四路输出光信号,并在四个不同的通道内进行传输。如今,光分路器广泛应用在无源光网络&am…

从 RAG 1.0到RAG 2.0,这次做对了什么?

RAG是目前最流行的补充生成式人工智能模型的方式,最近 RAG 的开创者提出了新的上下文语言模型 (CLM) ,他们称之为“ RAG 2.0 ”。 今天让我们一块来从RAG目前的原理和缺点出发,看看他们所提出的RAG2.0是否能够为行业带来新的希望。 LLM的时间…

提交链码-编辑前后端,调用链码功能

一 . 链码介绍 1.什么链码? • 链码是一段用 Go、Node.js 或者 Java 实现了规定接口的程序。链码在安全的Docker容器中运行, 与背书节点的进程隔离。通过应用程序提交的交易,链码初始化和管理账本状态。• 链码通常处理网络成员协商达成的业…

若依文件下载

后端自带工具controller package com.ruoyi.web.controller.common;import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.Logger…

docker常用基本命令

把jar包和 dockerfile文件放到同一目录下#构建Docker镜像 注意后面的 . 不能省略 docker build -t your-image-name .#运行并创建一个容器 docker run -d -p 8080:8080 --name container_name your-image-name# 停止容器 767fce4cb990 容器ID (容器名也可以) docker stop 767f…

HarmonyOS开发案例:【rating组件】

介绍 将引导开发者使用rating组件实现星级打分功能。 相关概念 [rating组件]:评分条,可根据用户判断进行打分。 环境搭建 软件要求 [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。OpenHarmony SDK版本:API vers…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能! 请访问 https://runes.scrypt.io/ 或点击阅读原文体验! 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约,但是用原生Script编…

宁盾LDAP统一用户认证与单点登录:构建高效安全的企业身份认证

在信息化时代,企业面临着众多的应用系统和数据资源,如何有效地管理和保护这些资源,确保信息安全和高效利用,成为了企业信息化建设的核心问题。LDAP统一用户认证和单点登录(SSO)作为一种高效、安全的身份验证…

Quarto Dashboards 教程 2:Dashboard Layout

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容: 1.quarto 教程 1:Hello, Quarto 2.qu…

srpingMVC基本使用

文章目录 1. springMVC基本功能(1) maven坐标导入(2) 编写表现层(3) springMVC配置类编写(4) 部署tomcat访问 2. 各种请求方法get请求post请求put请求delete请求请求参数提取 3. 请求参数接收(1) param参数接受封装到对象中 (2) 路劲参数接收集合接受时间类型接收json参数接收m…

1.C++入门(上)

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字,C语言有32个关键字,存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量,函数和类的名称都存在于全…

java 词法分析练习

import parser.Parser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arrays.asList("int","String…

鸿蒙APP开发页面组件之间的属性关系

我们将对于多页面以及更多有趣的功能展开叙述&#xff0c;这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式&#xff08;UiAbility&#xff09;&#xff0c;样式的书写、状态管理以及动画等方面进行探讨 页面之间…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①&#xff1a;计算协方差矩阵2.6 特…

4.8 Python dict字典

Python dict字典详解 Python字典&#xff08;dict&#xff09;是一种无序的、可变的序列&#xff0c;它的元素以“键值对&#xff08;key-value&#xff09;”的形式存储。相对地&#xff0c;列表&#xff08;list&#xff09;和元组&#xff08;tuple&#xff09;都是有序的序…