Code前端首页关于Code前端联系我们

首先得搞懂,官方CLI和Vite创建项目,本质上都是什么?

terry 53分钟前 阅读数 11 #Vue

用Vue3开发项目,选官方CLI还是Vite创建?还有哪些好用的小众/个性化脚手架?选工具前先理清工具的核心身份很重要——别只听别人说“Vite快”就盲目冲,也别觉得官方CLI是“老古董”就直接弃用。 先说很多人熟悉的Vue CLI,它其实是Vue官方在Webpack生态最成熟的那几年(大概2018-2020年)推出的全功能、零配置开箱补全的Vue项目构建工具链,名字里的CLI就是“命令行界面”的意思,它的底层逻辑是Webpack的多环境配置封装:你只需要在命令行里敲个vue create选几个预设,它就能自动给你搭好dev环境、prod环境的打包规则,加上热更新、ESLint、TypeScript支持这些常用插件,甚至还能通过可视化面板(vue ui)调整配置,完全不用你手动写一堆复杂的webpack.config.js,对了,早期Vue CLI还能同时支持Vue2和Vue3,不过现在最新版本(Vue CLI 5.x)虽然还能选Vue2,但官方已经明确说主要维护方向是Vue CLI Vite Plugin迁移或者直接转用Vite了——哦对,这里不是说Vue CLI 5不能用,只是迭代会慢很多。 然后是现在大火的Vite创建,注意哦,很多人会混淆“Vite”和“@vitejs/plugin-vue”——单独的Vite其实是一个通用的前端构建工具,底层依赖ESBuild做开发时的依赖预构建和部分生产环境的代码压缩、转译,底层还结合了浏览器原生的ESM(ES模块)加载能力;而@vitejs/plugin-vue是专门给Vue3(后来也支持Vue2了,但还是Vue3体验最好)做适配的插件,能解析.vue单文件组件、处理template语法这些Vue专属的东西,所以我们平时说的“用Vite创建Vue3项目”,其实是“用Vite作为构建工具,加上@vitejs/plugin-vue等相关插件,生成Vue3开发环境”。

新手或者第一次搭项目的团队,选官方CLI还是Vite?分场景说最实在

很多新手或者对工具链不熟悉的团队,都会问这个“非黑即白”的问题,但其实根本没有绝对的答案,得看你的团队情况、项目类型、甚至是上线时间要求。

团队完全是前端新手,或者之前只用过原生HTML/CSS/JS写小页面

别犹豫,先从官方CLI的可视化面板(vue ui)入手! 新手最怕什么?敲命令敲错、插件选项看不懂、配置文件改坏了整个项目跑不起来,Vue CLI的可视化面板完美解决了这些问题:你打开终端敲vue ui,浏览器就会弹出一个界面友好的Vue项目管理器,你可以像操作电商网站一样,创建项目、选预设(有Default Vue3/Babel/ESLint这种纯新手友好的,也有Default Vue3/Babel/TypeScript这种带点门槛但主流的,甚至可以自己保存常用的配置当自定义预设)、管理已安装的插件(比如一键加Pinia状态管理、Vue Router路由、Tailwind CSS这些,不用再去看npm install的文档怕漏了依赖或者版本不兼容)、调整项目配置(比如改端口、改打包输出目录、改ESLint规则这些,都是滑块、下拉框、输入框,不用写一行代码)、甚至可以一键运行dev环境、打包prod环境、查看项目依赖的安全漏洞——整个流程就像搭积木,对新手的友好度拉满。 等你用可视化面板玩熟了,知道了各个插件和配置是干什么的,再去看看生成出来的vue.config.js、babel.config.js、.eslintrc.js这些文件,慢慢学习Webpack的配置逻辑,最后再转用Vite,这样基础会更扎实,遇到问题也更容易排查。

项目是To B的大型企业级项目,或者团队之前一直用Webpack,配置了很多深度定制的插件

这种情况建议先选Vue CLI 5.x,或者等项目上线后再考虑用Vite CLI Plugin做渐进式迁移,别一开始就直接切Vite。 为什么这么说?To B的大型企业级项目一般有几个特点:依赖库多(可能有几十个甚至上百个npm包)、有很多深度定制的Webpack插件(比如自定义的代码分割插件、静态资源处理插件、国际化插件、甚至是和公司内部CI/CD系统绑定的插件)、对浏览器兼容性要求高(比如要兼容IE11——哦对,现在Vite虽然也可以通过引入@vitejs/plugin-legacy兼容老浏览器,但体验和Webpack比还是差点,而且要额外配置很多东西)、上线周期可能比较长但更求稳(毕竟To B项目出问题影响的是客户,修复流程也会更复杂),而Vue CLI 5.x的底层已经升级到了Webpack 5,打包速度和之前的Webpack 4比提升了很多(大概30%-50%,具体看项目大小),而且Webpack生态已经发展了快10年了,几乎所有你能想到的需求都有对应的成熟插件,遇到问题在网上搜一下就能找到解决方案,对深度定制的支持也更好。 那什么时候可以考虑切Vite?可以等项目上线稳定后,先找一个小模块(比如某个不常用的管理后台页面、或者某个测试用的Demo页面)做渐进式迁移——用Vite CLI Plugin把Vue CLI的项目和Vite的项目连起来,开发时用Vite,打包时用Webpack,这样既能体验到Vite的开发速度,又能保证生产环境的稳定性和兼容性,等团队熟悉了Vite的配置逻辑,再慢慢把整个项目切过去。

项目是To C的小型/中型项目(比如个人博客、小程序H5端、创业公司的MVP产品),或者团队已经熟悉ES模块、TypeScript这些前沿技术

直接冲Vite!不用考虑太多! To C的小型/中型项目一般有几个特点:依赖库少(一般就是Vue3、Pinia、Vue Router、Axios这些常用的)、对开发速度要求高(创业公司要赶MVP产品上线,个人博客要快速迭代)、对浏览器兼容性要求相对低(现在国内主流浏览器Chrome、Edge、Safari、Firefox都已经完全支持原生ESM了,只有极少数用户还在用IE11,如果必须兼容的话可以在后期加上@vitejs/plugin-legacy,或者给IE11用户做个降级提示),而Vite的核心优势就是开发速度快到离谱——Webpack的开发流程是“先把所有依赖和代码打包成一个或几个bundle,然后再启动dev服务器”,项目越大,打包时间越长,甚至可能要等几分钟;而Vite的开发流程是“先启动dev服务器,然后用ESBuild做依赖预构建(预构建只会做一次,除非你更新了依赖),然后浏览器请求哪个模块就给哪个模块实时编译并返回”,不管项目有多大,dev服务器启动时间一般都在1秒以内,热更新速度也是毫秒级的,完全没有“改了一行代码等半分钟才能看到效果”的痛苦,开发体验直接拉满。 Vite的配置也比Webpack简单太多——生成出来的vite.config.js一般只有十几行甚至几行代码,比如要加Pinia和Vue Router,只需要npm install pinia vue-router,然后在main.js里引入挂载就行,不用再在配置文件里做任何调整;要加Tailwind CSS,只需要按照Tailwind CSS官方文档的Vite适配步骤,敲几个命令、改几个文件就行,整个流程非常顺畅。

除了官方CLI和Vite,还有哪些好用的小众/个性化Vue3脚手架?

官方CLI和Vite虽然好用,但都是通用型的脚手架——通用型的好处是适用范围广,但坏处是对某些特定场景的支持不够好,比如你要开发一个电商后台管理系统,通用型的脚手架还要自己加UI组件库、权限管理、表格组件、图表组件这些,比较浪费时间;比如你要开发一个跨端项目(同时支持Web、小程序、App),通用型的脚手架根本做不到,这时候就需要一些针对特定场景优化的小众/个性化Vue3脚手架了,下面给大家推荐几个我自己用过或者身边朋友用过的、口碑不错的。

Vben Admin:适合开发企业级后台管理系统的Vue3全栈式开源脚手架

Vben Admin应该是现在国内最火的Vue3企业级后台管理系统开源脚手架了,没有之一——GitHub上已经有18k+的Star,而且一直在持续迭代更新。 它的核心特点是什么?开箱即用——它已经帮你搭好了Vue3、TypeScript、Vite(也有Webpack版本,但现在主要维护Vite版本)、Pinia、Vue Router 4、Ant Design Vue 3(也支持Element Plus、Naive UI等主流UI组件库,你可以自己切换)这些企业级后台管理系统的核心技术栈,还有权限管理(支持RBAC、ABAC等多种权限模型,支持路由权限、按钮权限、接口权限、数据权限)、国际化(支持中文、英文、日文、韩文等多种语言,你可以自己添加)、主题切换(支持亮色主题、暗色主题,支持自定义主题色)、表格组件(基于Ant Design Vue的Table组件二次封装,支持分页、排序、筛选、导出、树形表格、可编辑表格等几十种常用功能,不用你再自己写一堆代码)、图表组件(基于ECharts二次封装,支持折线图、柱状图、饼图、地图等几十种常用图表,不用你再自己配置ECharts的复杂参数)、表单组件(基于Ant Design Vue的Form组件二次封装,支持动态表单、JSON表单、步骤表单等,不用你再自己写一堆表单验证逻辑)、登录页面(支持账号密码登录、短信验证码登录、第三方登录等,你可以自己修改)、布局组件(支持侧边栏导航、顶部导航、混合导航等多种布局模式,支持自定义布局宽度、高度、颜色等)这些企业级后台管理系统必备的功能,你只需要根据自己的需求修改业务逻辑就行,不用再从零开始搭建,能节省至少半个月的开发时间。 代码质量高、文档完善——它的代码是用TypeScript写的,有完整的类型定义,可读性和可维护性都很高;它的文档非常完善,有中文文档和英文文档,不仅有快速入门教程,还有各个功能模块的详细使用文档、API文档、常见问题解答,甚至还有视频教程,新手也能快速上手;它还有一个活跃的社区,你遇到问题可以在GitHub的Issue区提问,或者加入官方的QQ群、微信群提问,一般都能很快得到解答。 扩展性强——它是基于Vben Core核心库构建的,Vben Core是一个独立的Vue3企业级开发框架,你可以把Vben Admin当成是Vben Core的一个示例项目,你可以根据自己的需求修改Vben Admin的代码,也可以基于Vben Core自己开发一个后台管理系统;它还支持插件化开发,你可以自己开发插件,也可以安装官方或第三方开发的插件,比如监控插件、日志插件、测试插件等。 不过Vben Admin也有一个小缺点——因为它的功能太多了,所以打包出来的prod环境体积稍微有点大,大概在2MB-5MB之间(具体看你用了多少功能),如果你要开发一个对加载速度要求非常高的To C后台管理系统,可以考虑去掉一些不用的功能,或者用代码分割、懒加载等方式优化体积。

UniApp X:适合开发跨端项目的Vue3高性能开源框架

很多人都知道UniApp——它是DCloud推出的一个基于Vue.js的跨端开发框架,能一套代码同时打包成Web、小程序(微信小程序、支付宝小程序、百度小程序、抖音小程序等)、App(iOS、Android)等多个平台,而且性能还不错,在国内的跨端开发市场占有率非常高,那UniApp X又是什么?它是UniApp的下一代高性能版本,底层完全重写了,基于Vite和Vue3,而且引入了全新的逻辑层和视图层分离的架构,性能比UniApp提升了至少3倍,甚至比原生小程序、原生App的性能还要好。 它的核心特点是什么?跨端覆盖广——它不仅支持UniApp原来支持的所有平台,还支持鸿蒙系统(HarmonyOS)的原生应用,这是很多其他跨端框架做不到的;性能极高——它的逻辑层和视图层是完全分离的,逻辑层用的是自研的V8引擎或者JavaScriptCore引擎,视图层用的是原生渲染引擎(Web端用的是WebGL或者Canvas 2D,小程序端用的是原生小程序的渲染引擎,App端用的是自研的UTS渲染引擎,鸿蒙系统用的是原生ArkUI渲染引擎),没有DOM操作的 overhead,渲染速度和响应速度都非常快;第三,完全兼容Vue3语法——你可以用Vue3的Composition API、Script Setup语法糖、TypeScript等前沿技术来开发UniApp X项目,开发体验和开发普通Vue3项目一模一样;第四,生态丰富——它完全兼容UniApp的生态,你可以直接使用UniApp的插件、组件库、模板等,而且DCloud还在持续推出UniApp X专属的插件、组件库、模板等;第五,文档完善、社区活跃——它的文档非常完善,有中文文档,不仅有快速入门教程,还有各个平台的适配文档、API文档、常见问题解答,而且还有一个活跃的社区,你遇到问题可以在DCloud的官方论坛提问,或者加入官方的QQ群、微信群提问,一般都能很快得到解答。 不过UniApp X现在还处于公测阶段,虽然已经可以用于生产环境开发,但可能还有一些小bug,而且部分UniApp原来的插件、组件库还没有完全适配UniApp X,如果你要开发一个非常紧急的跨端项目,可以先考虑用UniApp,等UniApp X正式发布后再做迁移。

Nuxt 3:适合开发SEO友好的Vue3 SSR/SSG项目的开源框架

很多人用Vue3开发To C项目(比如电商网站、新闻网站、博客网站)时,都会遇到一个问题——SEO不友好,因为Vue3是单页应用(SPA),整个网站的HTML只有一个

标签,所有的内容都是通过JavaScript动态生成的,搜索引擎的爬虫(比如百度爬虫、Google爬虫)虽然现在已经可以爬取部分JavaScript动态生成的内容,但爬取效果还是不如多页应用(MPA)好,而且单页应用的首屏加载时间也比较长,用户体验不好,这时候就需要用到SSR(服务端渲染)或者SSG(静态站点生成)了——SSR是在服务器端把Vue组件渲染成HTML字符串,然后返回给浏览器,浏览器直接解析HTML就能显示内容,爬虫也能很好地爬取;SSG是在构建时把Vue组件渲染成静态HTML文件,然后部署到CDN上,首屏加载速度更快,爬虫爬取效果也更好。 那Nuxt 3又是什么?它是Nuxt.js的下一代版本,底层基于Vite和Vue3,专门用来开发Vue3的SSR/SSG项目,是现在Vue生态中最成熟、最火的SSR/SSG框架。 它的核心特点是什么?零配置开箱即用——你只需要在命令行里敲个npx nuxi init就能创建一个Nuxt 3项目,它已经帮你搭好了Vue3、TypeScript、Vite、Pinia、Vue Router 4这些核心技术栈,还有自动路由(你不用再手动配置Vue Router,只需要在pages目录下创建.vue文件,就能自动生成路由)、自动组件(你不用再手动引入组件,只需要在components目录下创建.vue文件,就能在任何页面、组件中直接使用)、自动导入(你不用再手动引入Vue3的Composition API、Pinia的Store、Vue Router的方法等,Nuxt 3会自动帮你导入)、布局系统(你可以在layouts目录下创建布局文件,然后在页面中通过layout属性指定布局,不用再每个页面都写一遍导航栏、底部栏这些重复的代码)、中间件系统(你可以在middleware目录下创建中间件文件,用来处理路由守卫、权限验证、日志记录等逻辑)、插件系统(你可以在plugins目录下创建插件文件,用来初始化第三方库、注册全局组件、注册全局指令等)、数据获取(你可以用useFetch、useAsyncData、useLazyAsyncData等方法获取数据,这些方法会自动处理SSR和CSR(客户端渲染)的切换,不用你再自己写逻辑)这些SSR/SSG项目必备的功能,你只需要根据自己的需求写业务逻辑就行,不用再从零开始搭建,能节省至少一个月的开发时间;性能极高——它的底层基于Vite,开发速度快到离谱;它支持静态站点生成(SSG)、服务端渲染(SSR)、客户端渲染(CSR)、混合渲染(ISR,增量静态生成)等多种渲染模式,你可以根据不同的页面选择不同的渲染模式,比如新闻详情页可以用SSG或者ISR,用户个人中心页可以用CSR,既能保证SEO友好,又能保证首屏加载速度;第三,完全兼容Vue3语法——你可以用Vue3的Composition API、Script Setup语法糖、TypeScript等前沿技术来开发Nuxt 3项目,开发体验和开发普通Vue3项目一模一样;第四,生态丰富——它完全兼容Vue3的生态,你可以直接使用Vue3的插件、组件库等,而且Nuxt.js官方还推出了很多Nuxt 3专属的模块(nuxtjs/tailwindcss、@nuxtjs/i18n、@nuxtjs/color-mode等),你可以直接安装使用;第五,文档完善、社区活跃——它的文档非常完善,有中文文档和英文文档,不仅有快速入门教程,还有各个功能模块的详细使用文档、API文档、常见问题解答,而且还有一个活跃的社区,你遇到问题可以在GitHub的Issue区提问,或者加入官方的Discord服务器、中文QQ群、中文微信群提问,一般都能很快得到解答。

VitePress:适合开发技术文档、个人博客的Vue3轻量级SSG框架

如果你只需要开发一个技术文档或者个人博客,不需要太复杂的功能,那Nuxt 3可能有点“大材小用”了——这时候可以考虑用VitePress,它是Vue官方推出的一个基于Vite和Vue3的轻量级SSG框架,专门用来开发技术文档和个人博客,Vue 3官方文档、Pinia官方文档、Vite官方文档都是用VitePress写的。 它的核心特点是什么?极其轻量——它的核心代码非常少,打包出来的prod环境体积也非常小,一般只有几百KB;零配置开箱即用——你只需要在命令行里敲个npm init vitepress@latest就能创建一个VitePress项目,它已经帮你搭好了Vite、Vue3、Markdown解析器这些核心技术栈,还有自动侧边栏导航、自动顶部导航、自动目录、代码高亮、主题切换、搜索功能这些技术文档和个人博客必备的功能,你只需要在docs目录下写Markdown文件就行,不用再写任何业务逻辑;第三,完全支持Markdown语法,还支持Vue组件嵌入——你可以用标准的Markdown语法来写内容,还可以在Markdown文件中嵌入Vue组件,甚至可以用Vue3的Composition API、Script Setup语法糖来写组件,非常灵活;第四,默认主题美观、可定制性强——它的默认主题和Vue 3官方文档的主题一模一样,非常简洁美观,而且你可以通过修改配置文件、覆盖默认组件、写自定义CSS等方式来定制主题;第五,文档完善——它的文档非常完善,有中文文档和英文文档,不仅有快速入门教程,还有各个功能模块的详细使用文档、API文档、常见问题解答。

最后总结一下:Vue3脚手架的选择原则

不管是选官方CLI、Vite,还是选小众/个性化的Vue3脚手架,都要遵循一个原则——适合自己的才是最好的。 你可以从以下几个方面来考虑: 第一,团队情况——如果团队完全是前端新手,或者对工具链不熟悉,建议先从官方CLI的可视化面板入手;如果团队之前一直用Webpack,配置了很多深度定制的插件,建议先选Vue CLI 5.x,或者做渐进式迁移;如果团队已经熟悉ES模块、TypeScript这些前沿技术,建议直接冲Vite。 第二,项目类型——如果是To B的大型企业级项目,建议先选Vue CLI 5.x;如果是To C的小型/中型项目,建议直接冲Vite;如果是企业级后台管理系统,建议选Vben Admin;如果是跨端项目,建议选UniApp X;如果是SEO友好的To C项目,建议选Nuxt 3;如果是技术文档或者个人博客,建议选VitePress。 第三,上线时间要求——如果上线时间非常紧急,赶MVP产品上线,建议直接冲Vite或者选小众/个性化的Vue3脚手架,能节省很多搭建时间;如果上线周期比较长但更求稳,建议先选Vue CLI 5.x。 第四,浏览器兼容性要求——如果要兼容IE11,建议先选Vue CLI 5.x;如果对浏览器兼容性要求相对低,建议直接冲Vite。 不要盲目跟风,要根据自己的实际情况来选择合适的脚手架——选择合适的脚手架,能让你的开发效率提升好几倍,甚至能决定项目的成败。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门