前端工程化回顾-vite 构建神器

1.构建vite 项目

pnpm create vite
2.常用的配置:
1.公共资源路径配置:
 base: './',  默认是/
2.路径别名配置:
 resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      'ass': path.resolve(__dirname, './src/assets'),
      'comp': path.resolve(__dirname, './src/components')
    }
  },
    import WXl from "comp/HelloWorld.vue";

    import test from "@/components/HelloWorld.vue";

    import logo from "ass/logo.png";
3.文件省略后缀配置:
 extensions: ['.js', '.vue', '.json'] //引入对应的文件时可以忽略其后缀

4.生产环境log去除:

1.terser
 build: {
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    }

  }
2.vite-plugin-remove-console
pnpm i vite-plugin-remove-console -D

import removeConsole from 'vite-plugin-remove-console';
plugins: [vue(), removeConsole()),

5.图片压缩 viteImagemin

import viteImagemin from 'vite-plugin-imagemin'

viteImagemin({
    gifsicle: {
      optimizationLevel: 7,
      interlaced: false
    },
    optipng: {
      optimizationLevel: 7
    },
    mozjpeg: {
      quality: 20
    },
    pngquant: {
      quality: [0.8, 0.9],
      speed: 4
    },
    svgo: {
      plugins: [
        {
          name: 'removeViewBox'
        },
        {
          name: 'removeEmptyAttrs',
          active: false
        }
      ]
    }
  })

见下图效果
在这里插入图片描述

6、打包优化查看工具 rollup-plugin-visualizer

import { visualizer } from 'rollup-plugin-visualizer';
plugins: [vue(), removeConsole(), visualizer({ open: true }),

在这里插入图片描述

7.cdn优化打包提交

1.上一步6可以看出elemetuiplus 占用大量包体积

1.vite-plugin-cdn-import

下面vue等引用cdn资源

import importToCDN from 'vite-plugin-cdn-import'

 importToCDN({
    modules: [
      {
        name: "vue",
        var: "Vue",
        path: "https://unpkg.com/vue@3.2.31"
      },
      {
        name: "element-plus",
        var: "ElementPlus",
        path: "https://unpkg.com/element-plus@2.1.9",
        css: "https://unpkg.com/element-plus/dist/index.css"
      }
    ]
  },


  ),

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完整配置文件如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

import removeConsole from 'vite-plugin-remove-console';

import { visualizer } from 'rollup-plugin-visualizer';

import viteImagemin from 'vite-plugin-imagemin'


import importToCDN from 'vite-plugin-cdn-import'

import viteCompression from 'vite-plugin-compression'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), removeConsole(), visualizer({ open: true }),


  importToCDN({
    modules: [
      {
        name: "vue",
        var: "Vue",
        path: "https://unpkg.com/vue@3.2.31"
      },
      {
        name: "element-plus",
        var: "ElementPlus",
        path: "https://unpkg.com/element-plus@2.1.9",
        css: "https://unpkg.com/element-plus/dist/index.css"
      }
    ]
  },


  ),
  viteCompression({
    threshold: 1024 // 对大于 1mb 的文件进行压缩
  }),
  viteImagemin({
    gifsicle: {
      optimizationLevel: 7,
      interlaced: false
    },
    optipng: {
      optimizationLevel: 7
    },
    mozjpeg: {
      quality: 20
    },
    pngquant: {
      quality: [0.8, 0.9],
      speed: 4
    },
    svgo: {
      plugins: [
        {
          name: 'removeViewBox'
        },
        {
          name: 'removeEmptyAttrs',
          active: false
        }
      ]
    }
  })

  ],
  base: './',
  server: {
    host: '0.0.0.0',
    port: 8888,
    proxy: {

    }


  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      'ass': path.resolve(__dirname, './src/assets'),
      'comp': path.resolve(__dirname, './src/components')
    }
  },
  extensions: ['.js', '.vue', '.json'] // 引入对应的文件时可以忽略其后缀
  // build: {
  //   minify: 'terser',
  //   terserOptions: {
  //     compress: {
  //       drop_console: true,
  //       drop_debugger: true
  //     }
  //   }

  // }


})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单机游戏数据自动保存方案

引言 单机游戏数据的自动保存方案 大家好,2023年还有最后的3天! 有小伙伴私信我,说: 总感觉一股脑的全盘定时保存不科学,也写过保存变化的玩家数据,但是改完数据就得手动标记一下字段变化,感觉不够智能&…

Amos各版本安装指南

Amos下载链接 https://pan.baidu.com/s/1uyblN8Q-knNKkqQVlNnXTw?pwd0531 1.鼠标右击【Amos28】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 Amos28】。 2.打开解压后的文件夹,鼠标右击【Amos28】选择【以管理员身份运行…

BUUCTF--ciscn_2019_s_91

先看保护: 发现保护全没开,紧接着看看程序执行流程: 经过测试发现了段错误,这肯定就是栈溢出了。因此我们在IDA中看看具体逻辑: 程序主要就这个功能,我们还在程序中发现一个函数: 一段汇编&…

DataLoader与Dataset

一、人民币二分类 二、DataLoader 与 Dataset DataLoader torch.utils.data.DataLoader 功能:构建可迭代的数据装载器 (只标注了较为重要的) • dataset: Dataset类,决定数据从哪读取及如何读取 • batchsize : 批大小 • num_…

广告公司项目管理工具推荐:高效管理订单与项目的利器

由于广告公司每年都需要处理数千个制作订单,包括促销广告预告片和海报等,迫切需要一款能够高效管理和生产广告流程的软件。 在实施采购项目管理工具之前,广告公司的流程相当繁复,员工们需要使用约10到15个不同的Excel表格&#xf…

vue-element-admin请求接口时报错:431 Request Header Fields Too Large

vue-element-admin请求接口时报错:431 Request Header Fields Too Large 1、使用vue-element-admin框架开发运行后报错431,在网上也找了一些解决方案,有说是生成的Token太大导致的报错,也说有可能是NGINX后台设置的提交大小限制。…

QT的信号与槽

QT的信号与槽 文章目录 QT的信号与槽前言一、QT 打印"hello QT"的dome二、信号和槽机制?二、信号与槽的用法1、QT5的方式1. 无参的信号与槽的dome2.带参的信号与槽dome 2、QT4的方式3、C11的语法 Lambda表达式1、函数对象参数2、操作符重载函数参数3、可修…

为什么JAVA_HOME修改后Java版本不变

今天的实验需要对java project进行降版本后重构。于是去Oracle官网下载了jdk1.7。然后将系统环境变量JAVA_HOME改成了安装后的jdk1.7路径。即 C:\Program Files\Java\jdk1.7.0_80 系统变量Path中直接引用了%JAVA_HOME%\bin。 但是当我查看版本,却出现了javac改了…

stable diffusion 基础教程-提示词之光的用法

基图 prompt: masterpiece,best quality,1girl,solo,looking at viewer,brown hair,hair between eyes,bangs,very long hair,red eyes,blush,bare shoulders,(white sundress),full body,leaning forward,medium breasts,unbuttoned clothes,Negative prompt: EasyNegativ…

GraalVM Native学习及使用

概述 在开发Spring Boot 应用或者其他JAVA程序的过程中,启动慢、内存占用大是比较头疼的问题,往往需要更多的资源去部署,成本大幅提高。为了优化上述问题,常常使用优化程序、使用更小消耗的JVM、使用容器等措施。 现在有一个叫做…

工作流入门这篇就够了!

总概 定义:工作流是在计算机支持下业务流程的自动或半自动化,其通过对流程进行描述以及按一定规则执行以完成相应工作。 应用:随着计算机技术的发展以及工业生产、办公自动化等领域的需求不断提升,面向事务审批、材料提交、业务…

在Cadence中单独添加或删除器件与修改网络的方法

首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件,点击logic-part,选择需要添加或删除的器件,这里的器件必须是PCB中已经有的器件,Refdes中输入添加或删除的器件标号,点击Add添加。 添加完成后就会显示在R1…

学习笔记240102 --- 表单无法输入,是否data中没有提前声明导致的

前端框架 &#xff1a;vue2.x 第三方ui组件&#xff1a;ElementUI 操作系统&#xff1a;windows 浏览器&#xff1a;chrome 谷歌 问题描述 表单使用中&#xff0c;没有在data中提前声明参数&#xff0c;当数据回显时&#xff0c;表单无法输入 <el-form :model"queryPa…

【力扣100】39.组合总和

添加链接描述 class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def backtrack(path,target,res,index):if target0:res.append(path[:])returnif target<0:return for i in range(index,len(candidates)):if target&g…

3个.NET开源简单易用的任务调度框架

前言 今天分享3个.NET开源、简单、易用的任务调度框架&#xff0c;帮助大家在做定时任务调度框架技术选型的时候有一个参考。 Quartz.Net Quartz.NET是一个功能齐全的开源作业调度系统&#xff0c;可用于从最小的应用程序到大规模企业系统。 Quartz.NetUI Quartz.NetUI是一…

算法导论复习——CHP25 多源最短路

问题描述 给定一个带权重的有向图G(V,E)&#xff0c;其权重函数为ω:E→R。 在图中&#xff0c;对所有的结点对 u,v∈V&#xff0c;找出从结点u到结点v的最短路径。 该问题的解以表格&#xff08;二维数组&#xff09;的形式给出&#xff1a;第u行第v列给出从结点u到结…

计算机毕业设计 基于SpringBoot的工作量统计系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

MySQL中的事务到底是怎么一回事儿

简单来说&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。在MySQL中&#xff0c;事务支持是在引擎层实现的&#xff0c;但并不是所有的引擎都支持事务&#xff0c;如MyISAM引擎就不支持事务&#xff0c;这也是MyISAM被InnoDB取代的…

多任务并行处理相关面试题

我自己面试时被问过两次多任务并行相关的问题&#xff1a; 假设现在有10个任务&#xff0c;要求同时处理&#xff0c;并且必须所有任务全部完成才返回结果 这个面试题的难点是&#xff1a; 既然要同时处理&#xff0c;那么肯定要用多线程。怎么设计多线程同时处理任务呢&…

leetcode递归算法题总结

递归本质是找重复的子问题 本章目录 1.汉诺塔2.合并两个有序链表3.反转链表4.两两交换链表中的节点5.Pow(x,n) 1.汉诺塔 汉诺塔 //面试写法 class Solution { public:void hanota(vector<int>& a, vector<int>& b, vector<int>& c) {dfs(a,b…