Vite初始化Vue3+Typescrpt项目

初始化项目

安装 Vite

首先,确保你的 Node.js 版本 >= 12.0.0。然后在命令行中运行以下命令来创建一个 Vite + Vue 3 + TypeScript 的项目模板:

bash 复制代码
npm init vite@latest

进入项目目录

创建完成后,进入项目目录:

bash 复制代码
cd vue3-demo

启动开发服务器

在项目目录中,使用以下命令启动开发服务器:

bash 复制代码
npm run dev

项目结构

以下是项目的基本目录结构:

复制代码
├── publish/
└── src/
    ├── assets/                    // 静态资源目录
    ├── components/                // 公共组件目录
    ├── hooks/                     // hooks函数目录
    ├── plugins/                   // 插件目录
    ├── router/                    // 路由配置目录
    ├── store/                     // 状态管理目录
    ├── styles/                    // 通用 CSS 目录
    ├── utils/                     // 工具函数目录
    ├── views/                     // 页面组件目录
    ├── App.vue
    ├── main.ts
├── tests/                         // 单元测试目录
├── index.html
├── tsconfig.json                  // TypeScript 配置文件
├── vite.config.ts                 // Vite 配置文件
└── package.json

TypeScript 配置

安装 Node 类型定义

如果你需要在项目中使用 Node.js 的类型定义,你可以安装 @types/node

bash 复制代码
npm install @types/node --save-dev

或者在 tsconfig.json 中添加:

json 复制代码
"types": [
  "node"
]

tsconfig.json

以下是 tsconfig.json 的配置内容:

json 复制代码
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "strict": true,
    "jsx": "preserve",
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "node"
    ],
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.vue"
  ],
  "exclude": [
    "node_modules"
  ]
}

路由配置

安装 Vue Router

安装 Vue Router 4:

bash 复制代码
npm install vue-router@4

配置路由

创建 src/router/index.ts 并添加以下内容:

typescript 复制代码
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import HelloWorld from '../components/HelloWorld.vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld,
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

在 main.ts 中使用路由

src/main.ts 中添加以下代码来使用路由:

typescript 复制代码
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'

const app = createApp(App)
app.use(router).mount('#app')

状态管理

安装 Pinia

安装 Pinia 作为状态管理库:

bash 复制代码
npm install pinia

在 main.ts 中使用 Pinia

src/main.ts 中添加以下代码来使用 Pinia:

typescript 复制代码
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import { createPinia } from 'pinia'

const app = createApp(App)
const pinia = createPinia()
app.use(router).use(pinia).mount('#app')

样式预处理器

安装 Sass

安装 Sass 作为 CSS 预处理器:

bash 复制代码
npm i sass -D

安装 Element Plus

在项目根目录下打开命令行工具,运行以下命令来安装 Element Plus:

bash 复制代码
npm install element-plus

完整引入

一次性引入 Element Plus 的所有组件和样式,在 main.ts 文件写入:

typescript 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)

app.use(router)
app.use(createPinia())
app.use(ElementPlus)

app.mount('#app')

一般不推荐这种写法,因为打包后的文件太大,下面介绍官方推荐的方法

按需引入

如果你想要按需引入 Element Plus 的组件和样式,你需要安装额外的插件 unplugin-vue-componentsunplugin-auto-import 来实现自动导入。

首先,安装这两个插件:

bash 复制代码
npm install unplugin-vue-components unplugin-auto-import -D

然后,在 vite.config.ts 文件中配置它们:

typescript 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

这样配置后,你就可以在组件中直接使用 Element Plus 的组件,而不需要在每个文件中单独导入。

  • 禁用 Vetur 插件,安装 Volar 插件。
  • 在ts文件里会出现导入 vue 文件后,提示 找不到模块'xxx.vue'或其相应的类型声明

解决方式:

在项目根目录新建一个 xx.d.ts

typescript 复制代码
declare module '*.vue' {
  import { ComponentOptions } from 'vue'
  const componentOptions: ComponentOptions
  export default componentOptions
}
相关推荐
勇往直前plus18 小时前
Vue3(篇四)单页面应用到路由管理
javascript·typescript·前端框架·vue
勇往直前plus20 小时前
Vue3(篇三) Element Plus
前端·javascript·typescript·vue
shawxlee2 天前
vue3+axios挑战最简洁实用的配置封装+接口调用:请求拦截器、响应拦截器、通用请求方法(单个请求/并发请求/下载文件)、统一接口管理
前端·经验分享·vue·接口·axios·api
RuoyiOffice4 天前
超级个体接私活必看:后端+前端+移动端三端一体企业管理系统怎么选(2026)
java·spring boot·vue·uniapp·全栈·企业管理·接私活
狗凯之家源码网4 天前
机车圈系统核心功能与实战效果展示
vue·node
无巧不成书02185 天前
Vue+Vue-CLI全平台零基础搭建教程
前端·javascript·vue.js·vue·前端开发·vue-cli·前端环境搭建
-Camellia007-6 天前
用 Vue3 + Vite + Pinia 写一个极简的“个人任务看板”(数据存本地 LocalStorage)
vue
shawxlee6 天前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
jieyucx6 天前
Nuxt4阶段六:工程化与进阶 —— 模块、中间件、插件、TS 与测试
中间件·vue·web·nuxt·全栈·ssr
jieyucx6 天前
Nuxt4阶段五:渲染模式与性能优化
性能优化·vue·nuxt