脚手架安装
vite脚手架
npm init @vitejs/app blog-vue3 --template vue-ts
or
yarn create @vitejs/app blog-vue3 --template vue-ts
|
vue-cli脚手架
npm install -g @vue/cli vue create blog-vue3
|
这里我采用vite脚手架安装,毕竟vite号称更快
安装完成后会自动生成shims-vue.d.ts
,这个文件是对.vue
文件进行类型校验的声明。
declare module '*.vue' { import { DefineComponent } from 'vue' const component: DefineComponent<{}, {}, any> export default component }
|
vue-router
创建router
目录,再创建一个index.ts
作为路由的主文件,routes.ts
作为路由的存放路径。
import { createRouter, createWebHistory } from 'vue-router' import routes from './routes'
const router = createRouter({ history: createWebHistory(), routes })
export default router
|
import { RouteRecordRaw } from 'vue-router'
const routes: Array<RouteRecordRaw> = [ { path: '/', name: 'Home', component: () => import('@/view/Home.vue) } ]
|
vuex
创建store
目录下index.ts
作为vuex
主文件
import { createStore } from 'vuex'
export const store = createStore({ state(){ count: 1 } })
|
给vuex添加类型检验也需要写一个声明文件。
import { ComponentCustomProperties } from 'vue' import { Store } from 'vuex'
declare module '@vue/runtime-core' { interface State { count: Number }
interface ComponentCustomProperties { $store: Store<State> } }
|
别名
在import
时直接输入../../../
是很麻烦的事情,这时候就需要使用别名。
直接配置tsconfig.ts
中的baseUrl
和paths
没有生效,我也不想使用tsconfig-path
。
所以换种思路,vite.config.ts
中有resolve.alias
属性用来设置别名,类似webpack
配置。
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path'
export default defineConfig ({ plugin: [vue()], resolve: { alias: { '@': path.resolve(__dirname, 'src') } } })
|
引入vue-router和vuex
import { createApp } from 'vue' import router from './router' import { store } from './store' import App from 'App.vue'
createApp(App).use(router).use(store).mount('#app')
|