如何使用Vue3+Vite+TS快速搭建一套实用的脚手架

yizhihongxing

下面我将对如何使用Vue3+Vite+TS快速搭建一套实用的脚手架进行详细讲解。

1. Vite简介

Vite是一个由Vue.js作者尤雨溪开发的基于ESM(ES模块)的构建工具,可以快速地搭建现代化的前端开发环境。它不像Webpack那样打包,而是通过利用浏览器原生支持ES模块的能力,直接加载ES模块的源代码,在开发中无需打包就能够快速地启动调试和热更新。

2. Vue3+Vite+TS脚手架搭建步骤

2.1 初始化项目

我们首先需要在电脑上安装Node.js和npm。安装完成后,在终端中输入以下命令来初始化一个新的Vue3项目:

# 全局安装Vue CLI
npm install -g @vue/cli

# 初始化一个新的Vue项目
vue create my-vue-app

然后,进入到my-vue-app目录中,并使用以下命令安装Vite:

cd my-vue-app
npm install -D vite

2.2 配置Vite

接下来,我们需要在项目根目录中创建一个vite.config.js文件并进行一些基本配置,例如:

import { defineConfig } from 'vite'

export default defineConfig({
  base: './',
  server: {
    port: 3000,
  },
  resolve: {
    alias: {
      '@': '/src'
    }
  }
})

这里,我们设置了基础路径,端口号为3000,以及设置了别名@,让我们在组件中可以方便地使用@/代替/src

2.3 添加TypeScript支持

我们可以使用Vue CLI提供的TypeScript模板来快速地添加TypeScript支持。在终端中运行以下命令来添加:

vue add typescript

运行完毕后,我们可以看到src目录下多了一个shims-vue.d.ts文件,这个文件用于描述Vue模块的类型。

2.4 集成Vue3

我们可以使用Vue CLI提供的Vue3模板来搭建一个Vue3项目,只需要在初始化项目时加上--template vue3参数即可:

vue create my-vue-app --template vue3

2.5 集成Vue Router

在终端中运行以下命令来添加Vue Router支持:

npm install vue-router@4.0.0-beta.2

然后,在src目录下创建一个router文件夹,在其中新建一个index.ts文件,添加以下内容:

import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '@/views/Home.vue'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
]

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

export default router

这里,我们定义了一个路由表,包含了默认路由/,并将路由器导出为默认模块。

然后,在main.ts文件中引入路由并将其挂载到Vue实例上:

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

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

2.6 集成Vuex

在终端中运行以下命令来添加Vuex支持:

npm install vuex@next

然后,在src目录下创建一个store文件夹,在其中新建一个index.ts文件,添加以下内容:

import { InjectionKey } from 'vue'
import { createStore, Store } from 'vuex'

export interface State {
  count: number
}

export const key: InjectionKey<Store<State>> = Symbol()

export const store = createStore<State>({
  state() {
    return {
      count: 0,
    }
  },
  mutations: {
    increment(state) {
      state.count++
    },
  },
  actions: {
    increment(context) {
      context.commit('increment')
    },
  },
})

这里,我们定义了一个计数器状态和两个操作状态的mutation和action函数,然后将其封装为一个Vuex Store,并将其导出为默认模块。

接着,在main.ts文件中引入Store并将其挂载到Vue实例上:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { key, store } from './store'

createApp(App).use(router).use(store, key).mount('#app')

至此,我们就完成了Vue3+Vite+TypeScript+Vue Router+Vuex的脚手架搭建。

3. 示例说明

示例1:异步组件

我们来看一个异步组件的例子。在src/views目录下,新建一个Async.vue文件,添加以下内容:

<template>
  <div>{{ message }}</div>
</template>

<script lang="ts">
import { ref } from 'vue'

export default {
  name: 'Async',
  setup() {
    const message = ref('')

    setTimeout(() => {
      message.value = 'Hello, Async!'
    }, 2000)

    return {
      message,
    }
  },
}
</script>

这个组件将在2秒后显示一个消息。

然后,在src/router/index.ts中添加路由:

import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '@/views/Home.vue'
const Async = () => import('@/views/Async.vue')

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/async',
    name: 'Async',
    component: Async,
  },
]

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

export default router

在浏览器中访问http://localhost:3000/#/async,就能看到异步组件的效果了。

示例2:使用Ant Design Vue

我们来看一个使用Ant Design Vue的例子。在终端中运行以下命令来安装Ant Design Vue:

npm install ant-design-vue@next -S

然后,在src/main.ts中引入Ant Design Vue组件:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { key, store } from './store'
import { Button } from 'ant-design-vue'

import 'ant-design-vue/dist/antd.css'

createApp(App)
  .use(router)
  .use(store, key)
  .use(Button)
  .mount('#app')

现在,在src/views目录下,我们可以创建一个使用Ant Design Vue组件的视图:

<template>
  <div>
    <a-button type="primary" @click="handleClick">{{ count }}</a-button>
  </div>
</template>

<script lang="ts">
import { defineComponent, computed } from 'vue'
import { useStore } from 'vuex'

export default defineComponent({
  name: 'AntdDemo',
  setup() {
    const store = useStore()
    const count = computed(() => store.state.count)

    const handleClick = () => {
      store.dispatch('increment')
    }

    return {
      count,
      handleClick,
    }
  },
})
</script>

<style scoped></style>

这个视图将显示一个按钮和一个计数器。当按钮被点击时,计数器会加1。此时,我们就成功地集成了Ant Design Vue组件。

总结一下,我们在本次攻略中详细介绍了如何使用Vue3+Vite+TS快速搭建一套实用的脚手架,其中包含了初始化项目、配置Vite、添加TypeScript支持、集成Vue3、集成Vue Router、集成Vuex等步骤。并且,我们还提供了两个示例来帮助大家更好地了解如何使用该脚手架。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Vue3+Vite+TS快速搭建一套实用的脚手架 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue读取本地静态文件json的2种方法以及优缺点

    下面是详细的攻略。 Vue如何读取本地静态文件json 在Vue中,我们可以使用以下两种方法读取本地静态文件json。 方法一:使用Ajax来读取本地静态文件json 第一种方法是使用Ajax进行读取,在Vue中可以通过axios库来实现Ajax请求。将本地静态文件JSON作为静态资源放在static文件夹下: |– src | |– App.vue |…

    Vue 2023年5月28日
    00
  • vue 中this.$set 动态绑定数据的案例讲解

    下面我将详细讲解“vue 中this.$set 动态绑定数据的案例讲解”的攻略。 什么是 this.$set 在 Vue 的数据绑定中,如果数据中的某个属性值是对象或数组,并且需要动态修改其中的某个属性,而且这个属性还需要双向绑定,那么 Vue 提供的双向绑定语法可能会失效。这时,就需要使用 this.$set 来动态绑定数据。 this.$set 是 Vu…

    Vue 2023年5月28日
    00
  • vue如何解决循环引用组件报错的问题

    在Vue中,当两个组件相互引用时(循环引用),在编译时会出现报错。这是因为Vue在编译过程中将模板转换为渲染函数,遇到循环引用会导致无限递归,从而导致程序挂掉。因此,我们需要使用一些技巧来解决这个问题。 1. 使用动态组件 动态组件可以解决循环引用的问题。动态组件是一个占位符,可以渲染不同的组件。我们可以使用v-bind动态绑定组件名来实现动态组件,代码如下…

    Vue 2023年5月28日
    00
  • vue中的computed 和 vm.$data 原理解析

    当我们在使用Vue.js时,我们会经常接触到computed属性和vm.$data数据对象,其中computed属性是通过函数动态计算并返回值的,而vm.$data是Vue实例数据对象,保存了Vue实例中所有的数据。下面我们来详细讲解一下computed和vm.$data的原理解析。 computed属性的原理解析 Computed属性是Vue.js中的一个…

    Vue 2023年5月27日
    00
  • await 错误捕获实现方式源码解析

    让我们来详细讲解一下“await 错误捕获实现方式源码解析”的完整攻略。 什么是 await? 在 JavaScript 中,await 关键字可以用于暂停执行异步函数,并等待该异步函数的返回结果。我们可以使用 await 来获取异步操作中的结果,而不必使用回调函数或者 Promise 链来处理异步结果。 await 的错误捕获实现方式 在使用 await …

    Vue 2023年5月28日
    00
  • vue中的事件修饰符once,prevent,stop,capture,self,passive

    下面我将详细讲解Vue中的事件修饰符。 什么是事件修饰符 Vue允许在利用v-on绑定事件时添加事件修饰符,以便对事件的一些特殊处理。Vue为我们提供了6种常用的事件修饰符,分别是v-once、v-prevent、v-stop、v-capture、v-self和v-passive。 事件修饰符示例 v-once 当我们需要对某个事件仅绑定一次,可以使用v-o…

    Vue 2023年5月27日
    00
  • vue语法之render函数和jsx的基本使用

    Vue语法之render函数和JSX的基本使用 Vue中提供了一种灵活的渲染方式—— render 函数和 JSX 语法,它们可以帮助我们更精细化地控制组件的渲染过程,实现更加灵活的代码编写。 render函数 render 函数是 Vue 中的一个非常重要的函数,它用于渲染虚拟 DOM,我们可以通过定义 render 函数来自定义组件的渲染方式。 rend…

    Vue 2023年5月28日
    00
  • vue.js的简单自动求和计算实例

    下面为大家讲解一下“Vue.js的简单自动求和计算实例”的完整攻略。 思路概述 首先,我们需要使用 Vue.js 组件化的思想,将输入框和显示框拆分成独立的组件,这样方便我们进行状态管理和更新视图。 其次,我们需要监听输入框的值变化,并对输入的数据进行求和计算,最后将结果显示在显示框中。 示例说明一 下面我们通过一个实例进一步说明上述思路: 在 HTML 中…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部