创建vue3工程

创建方式

  1. 基于 vite 创建(vue3官方推荐)
  2. 基于 vue-cli 创建

基于 vite 创建

vite 官方文档

vite 是新一代前端构建工具,优势如下:

  • 轻量快速的热重载(HMR),能实现极速的服务启动。
  • TypeScriptJSXCSS 等支持开箱即用。
  • 真正的按需编译,不再等待整个应用编译完成。
  • webpack构建 与 vite构建对比图如下:

javascript 复制代码
## 1.创建命令
npm create vue@latest

## 2.具体配置
## 配置项目名称
√ Project name: vue3_test
## 是否添加TypeScript支持
√ Add TypeScript?  Yes
## 是否添加JSX支持
√ Add JSX Support?  No
## 是否添加路由环境
√ Add Vue Router for Single Page Application development?  No
## 是否添加pinia环境
√ Add Pinia for state management?  No
## 是否添加单元测试
√ Add Vitest for Unit Testing?  No
## 是否添加端到端测试方案
√ Add an End-to-End Testing Solution? >> No
## 是否添加ESLint语法检查
√ Add ESLint for code quality?  Yes
## 是否添加Prettiert代码格式化
√ Add Prettier for code formatting?  No

项目目录结构:

javascript 复制代码
my-vue3-project/
├── public/
│   └── favicon.ico
├── src/
│   ├── assets/
│   │   ├── base.css
│   │   ├── logo.svg
│   │   └── main.css
│   ├── components/
│   │   ├── icons/
│   │   ├── HelloWorld.vue
│   │   └── TheWelcome.vue
│   ├── router/
│   │   └── index.ts
│   ├── store/
│   │   └── counter.ts
│   ├── views/
│   │   ├── HomeView.vue
│   │   └── AboutView.vue
│   ├── App.vue
│   └── main.ts
│
├── .gitignore
├── env.d.ts
├── index.html
├── package-lock.json
├── package.json
├── README.md
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts

顶级目录的文件说明

  • .gitignore:用于指定哪些文件和目录不应被 Git 版本控制系统跟踪。
  • env.d.ts:用于定义环境变量的 TypeScript 类型声明文件。
    • 在 TypeScript 中,默认情况下确实不会识别 .jpg.txt 等非 TypeScript 或 JavaScript 相关的文件后缀名。
    • env.d.ts只有一条语句:/// <reference types="vite/client" />。这是一个三斜杠指令。 env.d.ts配置文件,让TypeScript 能识别非 TypeScript 或 JavaScript 相关的文件后缀名。
    • vue官方,把所有可能要写的文件都做好声明了。CTRL+鼠标左键 点击vite/client就可以跳转到client.d.ts,前端常用的文件都已经在这个文件里声明了。
  • index.html:入口文件。通常包含对 JavaScript 包的引用和基本的页面结构。
    • 注意,项目的入口文件不是main.jsmain.ts, 是 index.html
  • package-lock.json(如果使用 npm):记录了项目确切的依赖版本信息。
  • package.json:包含项目的元数据、依赖列表、脚本命令等。
  • README.md:项目的说明文档,通常包括项目的介绍、安装说明、使用方法等。
  • tsconfig.app.jsontsconfig.jsontsconfig.node.json:不同场景下的 TypeScript 配置文件,可能用于特定的编译选项或模块解析规则。
  • vite.config.ts:Vite 的配置文件,用于自定义 Vite 的构建行为,如设置别名、配置插件等。

main.ts

javascript 复制代码
// 导入项目中的全局样式文件,通常包含一些通用的样式规则,用于为整个应用提供一致的外观。
import './assets/main.css'

// 引入 createApp 用于创建实例
import { createApp } from 'vue'
// 引入 createPinia 函数,Pinia 是 Vue 的状态管理库,用于集中管理应用的状态
import { createPinia } from 'pinia'

// 引入 App.vue 根组件
import App from './App.vue'
// 引入路由模块,用于定义应用的不同路由和页面之间的导航
import router from './router'

// 使用 createApp 函数创建一个 Vue 应用实例,并将根组件 App 传递给它
const app = createApp(App)

// 使用 app.use 方法安装 Pinia 状态管理库,使应用能够使用 Pinia 来管理状态
app.use(createPinia())

// 使用 app.use 方法安装路由模块,使应用能够使用定义好的路由进行页面导航
app.use(router)

// 将 Vue 应用实例挂载到页面中具有 id 为 app 的 DOM 元素上,使应用在浏览器中显示出来
app.mount('#app')

每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例:

javascript 复制代码
import { createApp } from 'vue'
const app = createApp({
  /* 根组件选项 */
})

应用实例必须在调用了 .mount() 方法后才会渲染出来。该方法接收一个"容器"参数,可以是一个实际的 DOM 元素或是一个 CSS 选择器字符串:

html 复制代码
<div id="app"></div>
javascript 复制代码
app.mount('#app')

应用根组件的内容将会被渲染在容器元素里面。容器元素自己将不会被视为应用的一部分。

.mount() 方法应该始终在整个应用配置和资源注册完成后被调用。同时请注意,不同于其他资源注册方法,它的返回值是根组件实例而非应用实例。

注意:将 Vue 应用实例挂载到一个 DOM 元素上,通常是在index.html文件中指定的一个元素。

比如app.mount('#app')idapp 的元素是在index.html中:

App.vue

这是应用的根组件,通常包含应用的全局布局和导航结构,以及通过<router-view>来展示不同路由对应的页面。

当根组件没有设置 template 选项时,Vue 将自动使用容器的 innerHTML 作为模板。

总结

  • Vite 项目中,index.html 是项目的入口文件,在项目最外层。
  • 加载index.html后,Vite 解析 <script type="module" src="xxx"> 指向的JavaScript
  • Vue3中是通过 createApp 函数创建一个应用实例。

插件

安装官方推荐的vscode插件:

基于vue-cli创建

vue-cli 官方文档

注意:目前vue-cli已处于维护模式,官方推荐基于 Vite 创建项目。

步骤如下:

javascript 复制代码
## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
vue --version

## 安装或者升级你的@vue/cli 
npm install -g @vue/cli

## 执行创建命令
vue create vue_test

##  随后选择3.x
##  Choose a version of Vue.js that you want to start the project with (Use arrow keys)
##  > 3.x
##    2.x

## 启动
cd vue_test
npm run serve
相关推荐
匹马夕阳2 小时前
Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制
前端·javascript·vue.js
你熬夜了吗?2 小时前
日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
前端·vue.js·信息可视化
沈梦研9 小时前
【Vscode】Vscode不能执行vue脚本的原因及解决方法
ide·vue.js·vscode
轻口味10 小时前
Vue.js 组件之间的通信模式
vue.js
fmdpenny12 小时前
Vue3初学之商品的增,删,改功能
开发语言·javascript·vue.js
涔溪13 小时前
有哪些常见的 Vue 错误?
前端·javascript·vue.js
亦黑迷失15 小时前
vue 项目优化之函数式组件
前端·vue.js·性能优化
计算机-秋大田15 小时前
基于SpringBoot的高校教师科研的设计与实现(源码+SQL脚本+LW+部署讲解等)
java·vue.js·spring boot·后端·课程设计
eason_fan15 小时前
分析vue3源码23(异步组件实现)
vue.js·前端框架·源码阅读
BigData-018 小时前
vue视频流播放,支持多种视频格式,如rmvb、mkv
前端·javascript·vue.js