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

[vue3] 使用 vite 创建vue3项目的详细流程

一、vite介绍

Vite(法语意为 “快速的”,发音 /vit/,发音同 “veet”) 是一种新型前端构建工具,能够显著提升前端开发体验(热更新、打包构建速度更快)。

二、使用vite构建项目

【学习指南】学习新技能最好的办法是——看官方文档:vite官网

1.运行创建项目命令

# 使用 npm
npm create vite@latest

2、填写项目名称 

62524c15c2e0491292b02553cd5f7e2c.png

3、选择前端框架

c7e30a0629434be1a097aa18a2784e88.png

4、选择语法类型

ceb2780b647d47a095a8df6b73662bd2.png

5、按提示运行代码

081c8be476324f7dbb371407468aaddd.png

 运行代码,即可运行项目如下图:

  cd vite-projectnpm installnpm run dev

5dfffec9b812424da68e857bd5eaf73f.png

三、vite 和 webpack 对比

1、Webpack:会先打包,然后启动开发服务器,请求服务器时直接给予打包结果。

将所有的模块提前编译、打包进 bundle 中,不管这个模块是否被用到,随着项目越来越大,打包启动的速度自然越来越慢。

使用 webpack 打包模式如下图:

39298a7a4d9e49798897d278dee16630.png

2、Vite:直接启动开发服务器,请求哪个模块再对该模块进行实时编译。

瞬间开启一个服务,并不会先编译所有文件,当浏览器用到某个文件时,Vite 服务会收到请求然后编译后响应到客户端。

使用 Vite 打包模式如下图:

4c7294755eb74506b4d4bc37c30270d2.png

3、vite 优点:

  • vite 服务器启动速度比 webpack 快;                                                                                由于vite启动的时候不需要打包,也就无需分析模块依赖、编译,所以启动速度非常快。当浏览器请求需要的模块时,再对模块进行编译,这种按需动态编译的模式,极大缩短了编译时间,当项目越大,文件越多时,vite的开发时优势越明显;
  • vite热更新比webpack快;                                                                                              vite在HRM方面,当某个模块内容改变时,让浏览器去重新请求该模块即可,而不是像webpack重新将该模块的所有依赖重新编译;
  • vite使用esbuild(Go 编写) 预构建依赖,而webpack基于nodejs, 比node快 10-100 倍;

4、vite 缺点:

  • 生态不及webpack,加载器、插件不够丰富;
  • 打包到生产环境时,vite使用传统的rollup进行打包,生产环境esbuild构建对于css和代码分割不够友好。所以,vite的优势是体现在开发阶段;
  • 没被大规模重度使用,会隐藏一些问题;
  • 项目的开发浏览器要支持esmodule,而且不能识别commonjs语法;

 

相关文章:

  • k8s官方镜像代理加速
  • fork使用git可视化管理工具
  • Uber Go 语言编码规范
  • PyQt pdf格式保存
  • idea报错:Error:java: 不允许在使用 -release 时从系统模块 java.xml 导出程序包?
  • 《opencv实用探索·九》中值滤波简单理解
  • Golang实践录:sqlite的使用
  • kettle作业发送@163邮件
  • 在安全环境中使用虚拟化进行隔离——Armv8.4上的安全世界软件架构
  • Nacos多数据源插件
  • Windows 基于 VMware 虚拟机安装银河麒麟高级服务器操作系统
  • 添加新公司代码的配置步骤-Part2
  • 禁奥义·SQL秘籍
  • Java架构师系统架构设计服务拆分应用
  • 汽车软件大时代,如何提升软件工程创新力?
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 0x05 Python数据分析,Anaconda八斩刀
  • angular2开源库收集
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Java的Interrupt与线程中断
  • java中的hashCode
  • js算法-归并排序(merge_sort)
  • Nodejs和JavaWeb协助开发
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Solarized Scheme
  • 编写高质量JavaScript代码之并发
  • 巧用 TypeScript (一)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 栈实现走出迷宫(C++)
  • 阿里云API、SDK和CLI应用实践方案
  • ​queue --- 一个同步的队列类​
  • #vue3 实现前端下载excel文件模板功能
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (2)nginx 安装、启停
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (三)uboot源码分析
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)面试需要掌握的技巧
  • ./和../以及/和~之间的区别
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET NPOI导出Excel详解
  • .NET 命令行参数包含应用程序路径吗?
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net实现客户区延伸至至非客户区
  • ::前边啥也没有
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell