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

4.0 vue3简介

 

vue3优点

  1. Composition API:这是Vue 3中最显著的变化之一。它提供了一种更灵活、更直观的方式来组织和重用逻辑代码。与Vue 2中的Options API相比,Composition API允许开发者根据功能来组织代码,而不是按照选项类型(如data、methods、computed等)。这使得代码更具可读性和可维护性,特别是对于大型项目。

  2. 性能优化:Vue 3在性能上有显著的提升。包括更快的虚拟DOM实现、更高效的组件初始化过程以及更小的打包体积。Vue 3的核心库大小比Vue 2要小得多,主要是因为采用了tree-shaking技术,只包含实际使用的代码。

  3. 更好的TypeScript支持:Vue 3是用TypeScript编写的,因此对TypeScript的支持更加原生和友好。相比于Vue 2,Vue 3提供了更完善的类型定义文件,让使用TypeScript开发Vue应用变得更加流畅。

  4. Teleport(瞬移)特性:Vue 3引入了Teleport概念,允许组件的模板部分渲染到DOM中的任何位置,这对于模态框、提示框等需要脱离当前组件层次结构的应用场景非常有用。

  5. Fragments(片段):在Vue 2中,每个组件必须有一个根元素。而在Vue 3中,组件可以有多个根节点,这为模板编写提供了更大的灵活性。

  6. 响应式系统的改进:Vue 3的响应式系统基于Proxy对象构建,相较于Vue 2使用的Object.defineProperty方法,提供了更好的性能,并且解决了之前的一些局限性,比如无法检测到对象属性的添加或删除。

 代码初体验

create-vue

create-vue 是 Vue 官方推荐的、用于快速创建 Vue 3 项目的脚手工具。它是基于 Vite 构建的现代前端构建工具链的一部分,取代了旧版的 vue-cli 作为推荐的项目初始化方式

它不是像 vue-cli 那样的全局命令行工具,而是一个可执行的初始化脚本(npm init vue@latest 或者npm create vue@latest),通过交互式提问来生成项目结构。

npm init vue@latestnpm create vue 实际上是完全等价的命令,它们的功能、行为和最终结果是一模一样的。

这两个命令都属于 npm 的 “执行包初始化脚本” 语法,是 npm 提供的便捷方式,用于运行那些用于创建项目的“脚手架”工具(如 create-vue, create-react-app 等)。

1. npm init <package-name>
  • 这是 npm 的语法糖,等价于 npm create <package-name>
  • 它会安装并执行名为 create-<package-name> 的包。
  • 例如:npm init vue → 实际执行的是 create-vue 这个包。
2 npm create <package-name>
  • npm create: 这是 npm (Node Package Manager) 提供的一个便捷命令,等同于 npm init。它的作用是快速初始化或创建一个新项目,通常会调用一个特定的包(package)来生成项目结构。
  • vue: 这里指定了要使用的包的名字。create-vue 是这个包的完整名称,但 npm create 允许你省略前面的 create- 前缀。
  • @latest: 这个标签指定了要使用该包的最新版本。如果不指定,默认也是使用最新版。

所以,npm create vue@latest 的完整含义是:使用 npm 的 create 命令,调用 create-vue 包的最新版本来创建一个新的项目。

总结

问题回答
npm init vue@latest 和 npm create vue@latest 有区别吗?❌ 没有功能区别,完全等价
哪个更好?✅ 推荐 npm init vue@latest,更明确
它们执行的是什么?✅ 都是执行 create-vue 这个包
为什么有两个写法?✅ npm 提供的两种语法糖,语义不同但功能一致

1. 初始化项目

npm init vue@latestnpm create vue@latest

运行后会进入交互式命令行界面,提示你选择功能:

✔ Project name: … my-vue-app
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit testing? … No / Yes
✔ Add Cypress for End-to-End testing? … No / Yes
✔ Add Playwright for End-to-End testing? … No / Yes
✔ Add ESLint for code quality? … No / Yes
✔ Add Prettier for code formatting? … No / Yes
✔ Add commitlint for git commit? … No / YesScaffolding project in ./my-vue-app...
Done. Now run:cd my-vue-appnpm installnpm run dev

2. 安装依赖并启动

cd my-vue-app
npm install
npm run dev

启动速度不到1s,即可在 http://localhost:5174查看项目。比之前快了不止一点


项目结构示例

使用 create-vue 生成的典型项目结构如下:

my-vue-app/
├── src/
│   ├── assets/           # 静态资源
│   ├── components/       # 公共组件
│   ├── views/            # 页面视图(如果启用了 Vue Router)
│   ├── router/           # 路由配置
│   ├── stores/           # Pinia 状态管理
│   ├── App.vue           # 根组件
│   └── main.ts           # 入口文件
├── public/               # 静态公共资源
├── index.html            # 入口 HTML
├── vite.config.ts        # Vite 配置
├── tsconfig.json         # TypeScript 配置
├── eslint.config.js      # ESLint 配置(新版)
├── prettier.config.js    # Prettier 配置
└── package.json

与 vue-cli 的对比

特性create-vuevue-cli
构建工具Vite(快)Webpack(较慢)
启动速度极快(毫秒级)较慢(依赖打包)
默认 Vue 版本Vue 3支持 Vue 2 / Vue 3
TypeScript 支持原生良好需配置
模板灵活性交互式选择功能固定模板或自定义
官方推荐✅ 推荐⚠️ 仍可用,但不主推

✅ 官方建议新项目使用 create-vue + Vitevue-cli 仍可用于维护旧项目

注意node版本

目前脚手架创建的项目,要求

Node.js 版本需要满足以下任一条件

  • ^20.19.0: 版本号大于等于 20.19.0 且小于 21.0.0 的 Node.js 20 版本。
  • ||: 或者
  • >=22.12.0: 版本号大于等于 22.12.0 的 Node.js 22 版本。
"engines": {"node": "^20.19.0 || >=22.12.0"
}

不是创建 Vue 3 项目本身的通用要求,而是特定于当前这个项目的配置。

engines 字段的含义

  • engines 字段是 package.json 中的一个可选字段,用于声明项目建议或要求的 Node.js 和 npm 版本。
  • 它本身不会强制阻止你在不兼容的 Node 版本上运行 npm install 或 npm run serve。但是,一些工具(如 npm 配合 engine-strict 标志,或 yarnpnpm)会检查这个字段并在版本不匹配时发出警告或报错。
  • 它的主要作用是告知开发者这个项目预期在什么环境下运行。
http://www.lryc.cn/news/619925.html

相关文章:

  • DAY 44 预训练模型
  • SQL 核心操作全解析:从基础查询到关联关系实战
  • 18. parseInt 的参数有几个
  • 多语言文本 AI 情感分析 API 数据接口
  • Python解包技巧全解析
  • Docker部署RAGFlow:生产环境开启Kibana与ES安全集成指南
  • Celery在Django中的应用
  • 【web站点安全开发】任务3:网页开发的骨架HTML与美容术CSS
  • Pytest+selenium UI自动化测试实战实例(超详细)
  • 第十三节:后期处理:效果增强
  • OpenBMC适配器模式小白学习指南
  • 服务器安全检测和防御技术
  • LeetCode算法日记 - Day 10: x 的平方根、搜索插入位置
  • 大模型微调【1】之入门
  • 农业物联网:现代农业的智慧革命
  • 后端(服务端)的跳转方式-请求转发和重定向
  • 集成电路学习:什么是CV计算机视觉
  • Nginx学习笔记(七)——Nginx负载均衡
  • 深度学习之CNN网络简介
  • 深度学习(4):数据加载器
  • go语言学习笔记
  • 初识神经网络05——构建神经网络3
  • C# 反射入门:如何获取 Type 对象?
  • 深度学习流体力学:基于PyTorch的物理信息神经网络(PINN)完整实现
  • Spring Boot项目通过Feign调用三方接口的详细教程
  • 力扣top100(day02-04)--二叉树 01
  • 阿里云Anolis OS 8.6的公有云仓库源配置步骤
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • oss(阿里云)前端直传
  • 4G模块 ML307A通过MQTT协议连接到阿里云