当前位置: 首页 > 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.dtcms.com/a/329113.html

相关文章:

  • 【深入浅出STM32(1)】 GPIO 深度解析:引脚特性、工作模式、速度选型及上下拉电阻详解
  • 【Docker项目实战】使用Docker部署todo任务管理器
  • [AI React Web]`意图识别`引擎 | `上下文选择算法` | `url内容抓取` | 截图捕获
  • Android 双屏异显技术全解析:从原理到实战的多屏交互方案
  • 开发手记:一个支持自动翻译的H5客服系统
  • TeamViewer 以数字化之力,赋能零售企业效率与客户体验双提升
  • 在线 A2C实践
  • 玩转Docker | 使用Docker部署MediaWiki文档管理平台
  • 大文件上传解决方案
  • React useMemo 深度指南:原理、误区、实战与 2025 最佳实践
  • 【SpringBoot系列-01】Spring Boot 启动原理深度解析
  • C->C++核心过渡语法精讲与实战
  • 深度学习——03 神经网络(2)-损失函数
  • Spring Boot 使用 @NotBlank + @Validated 优雅校验参数
  • react+antd+vite自动引入组件、图标等
  • 适配安卓15(对应的sdk是35)
  • 单片机启动流程详细介绍
  • 开源WAF新标杆:雷池SafeLine用语义分析重构网站安全边界
  • vscode远程服务器出现一直卡在正在打开远程和连接超时解决办法
  • SpringBoot 整合 Langchain4j 系统提示词与用户提示词实战详解
  • IV模型(工具变量模型)
  • 《论文阅读》从特质到移情:人格意识多模态移情反应生成 ACL 2025
  • Dify-17: 扩展模型提供方
  • PyTorch简介
  • layui表格自定义导出数据(选中和全部数据)
  • Debian新一代的APT软件源配置文件格式DEB822详解
  • k8s中的微服务
  • CSS动态视口单位:彻底解决移动端适配顽疾,告别布局跳动
  • Prompt Engineering+AI工具链:打造个人专属的智能开发助手
  • 第六十六篇:AI模型的“口才”教练:Prompt构造策略与自动化实践