Vue3 + Typescript + Vite 项目创建起手式

1,127 阅读2分钟

Vue3 + Typescript + Vite 项目创建起手式

一、通过以下指令通过Vite创建Vue3项目

create-vite-app 项目名 \\创建项目
cd 项目名 \\进入项目文件夹
npm install \\处理依赖
npm run dev \\运行

此刻你应该可以看到vite为你准备好的示例项目

现在准备一下依赖

npm install vue-router@4 \\加载路由依赖
npm install -D sass-loader node-sass sass  \\安装sass,如果你不想使用nass,可以不安装此依赖

二、编辑页面

删除默认创建的src/components/HelloWorld.vue

在src中创建目录views,并在views中创建Home.vueAbout.vue两个文件

image.png

将Home.vue编辑为以下代码:

<template>
  <div>
    <p>我是主页</p>
  </div>
</template>

<script setup lang="ts">
</script>
<style lang="scss" scoped> //如果你在安装依赖的时候没有安装sass,请将scss改成css
</style>

About.vue编辑为以下代码:

<template>
  <div>
    <p>我是关于</p>
  </div>
</template>

<script setup lang="ts"> 
</script>
<style lang="scss" scoped>  //如果你在安装依赖的时候没有安装sass,请将scss改成css
</style>

三、引入路由

(1)在src文件夹下创建router文件夹,并在其内创建index.ts

image.png

(2)配置信息

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import { defineAsyncComponent } from 'vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/', //路由路径
    name: 'Home', //名称
    component: defineAsyncComponent(() => import('../views/Home.vue')) //加载vue文件
  },
  {
    path: '/about',
    name: 'About',
    component: defineAsyncComponent(() => import('../views/About.vue'))
  }
]

const router = createRouter({
  history: createWebHistory(), //使用历史模式
  routes
})

export default router

注意,Typescript不认识.vue格式的文件,所以会报出以下错误

找不到模块“../views/Home.vue”或其相应的类型声明

要解决以下错误很简单,只需要在根目录创建文件shims.d.ts

image.png

修改为以下内容,保存后生效

declare module '*.vue' {
  import { ComponentOptions } from 'vue'
  const componentOptions: ComponentOptions
  export default componentOptions
}

(3)应用路由

最在main.js中应用并使用路由即可

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import './index.css'

const app = createApp(App);

app.use(router)

app.mount('#app')

为了保持统一,我把main.js改成了main.ts,如果你也想要这么做,很简单。
你只需要将main.js的后缀名从.js改为.ts,然后打开根目录下的index.html,将其中的<body>标签下的
<script type="module" src="/src/main.js"></script>修改为<script type="module" src="/src/main.ts"><\script>

修改/src/App.vue为以下内容:

<template>
  <router-view></router-view>
</template>

<script>

export default {
  name: "App"
};
</script>

四、完成

现在照理来说应该已经完成了伟大的起手式,现在在终端中输入npm run dev照理来说就可以了

我们打开http://localhost:3000/ 就可以看到“我是主页”字样,而打开http://localhost:3000/about 就可以看到"我是关于"

image.png

至此,起手式就完成了,你现在就可以开发自己需要的项目组件之类的坨坨了。

五、所有代码大举出

  1. 最终文件结构

image.png

/src/App.vue

<template>
  <router-view></router-view>
</template>

<script>

export default {
  name: "App"
};
</script>

/src/router/index.ts

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import { defineAsyncComponent } from 'vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'Home',
    component: defineAsyncComponent(() => import('../views/Home.vue'))
  },
  {
    path: '/about',
    name: 'About',
    component: defineAsyncComponent(() => import('../views/About.vue'))
  }
]

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

export default router

/src/views/About.vue

<template>
  <div>
    <p>我是关于</p>
  </div>
</template>

<script setup lang="ts">
</script>
  
<style lang="scss" scoped> //如果你在安装依赖的时候没有安装sass,请将scss改成css
</style>

/src/views/Home.vue

<template>
  <div>
    <p>我是主页</p>
  </div>
</template>

<script setup lang="ts">
</script>

<style lang="scss" scoped> //如果你在安装依赖的时候没有安装sass,请将scss改成css
</style>

好家伙,不会有人看到这里了吧~ 针不戳