5分钟快速搭建vue3+ts+vite+pinia项目

以下是详细讲解“5分钟快速搭建vue3+ts+vite+pinia项目”的完整攻略。

1. 创建项目

首先,我们需要先安装 Node.js 和 npm 包管理器,然后通过 npm 在命令行中执行以下命令来创建一个新的 Vue 3 TypeScript 项目:

npm init vite@latest my-project --template vue-ts

其中,my-project 是你想要创建的项目名称,--template vue-ts 参数指定了使用 Vite 进行快速搭建,同时使用 Vue 3 和 TypeScript。

创建项目后,通过以下命令进入项目目录:

cd my-project

2. 安装和配置 Pinia

接下来,我们需要在项目中添加状态管理库 Pinia。使用以下命令来安装 Pinia:

npm i pinia

然后,我们需要配置 Pinia,以便在项目中使用。在 src 目录下创建一个名为 store.ts 的新文件,并添加以下内容:

import { createPinia } from 'pinia'

export const store = createPinia()

该文件将创建一个新的 Pinia 实例,可以用来定义我们的状态管理逻辑。

3. 编写示例代码

接下来,让我们来编写一些示例代码来测试我们的项目是否正常工作。在 src 目录下创建一个名为 App.vue 的新文件,并添加以下内容:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="increment">Increment</button>
    <p>Count: {{ count }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import { useStore } from '../store'

export default defineComponent({
  name: 'App',
  setup() {
    const store = useStore()
    const count = store.state.count
    const increment = () => store.state.count++

    return {
      count,
      increment,
      message: 'Hello Vue 3 + TypeScript + Vite + Pinia!'
    }
  }
})
</script>

在上面的代码中,我们定义了一个名为 App 的组件,并使用 useStore 函数从 store.ts 中导入 store。包含了一个简单的计数器并展示了一个问候语。

最后,我们需要在 main.ts 中引入 Pinia 并创建实例:

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

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

4. 运行项目

现在,我们可以运行项目并看到它的效果了!使用以下命令:

npm run dev

运行成功后,在浏览器中打开 http://localhost:3000/,你应该能够看到一个简单的计数器和问候语。

5. 示例说明

接下来,我将分别说明两个例子,展示了如何在 Pinia 中管理状态。

示例一:计数器

我们来看一个简单的计数器的例子。在 store.ts 中添加以下内容:

import { createPinia } from 'pinia'

export const store = createPinia({
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++
    }
  }
})

在这个例子中,我们定义了一个 count 状态,同时添加了一个 increment 的 action 来增加计数器的值。在 App.vue 中使用该计数器:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="increment">Increment</button>
    <p>Count: {{ count }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import { useStore } from '../store'

export default defineComponent({
  name: 'App',
  setup() {
    const store = useStore()
    const count = store.state.count
    const increment = () => store.actions.increment()

    return {
      count,
      increment,
      message: 'Hello Vue 3 + TypeScript + Vite + Pinia!'
    }
  }
})
</script>

示例二:Todo list

我们来看一个更复杂的 Todo list 的例子。在 store.ts 中添加以下内容:

interface Todo {
  id: number;
  title: string;
  completed: boolean;
}

export const store = createPinia({
  state: () => ({
    todos: [] as Todo[],
    nextId: 1
  }),
  actions: {
    add(title: string) {
      this.todos.push({
        id: this.nextId++,
        title,
        completed: false
      })
    },
    remove(id: number) {
      this.todos = this.todos.filter(todo => todo.id !== id)
    },
    complete(id: number) {
      const todo = this.todos.find(todo => todo.id === id)
      if (todo) todo.completed = true
    }
  }
})

在这个例子中,我们定义了一个 todos 状态,同时添加了 add, remove, 和 complete actions 来新增、删除、和完成 todo 的操作。

App.vue 中使用该 Todo list:

<template>
  <div>
    <h1>{{ message }}</h1>
    <form @submit.prevent="addTodo">
      <input type="text" v-model="newTodo" />
      <button type="submit">Add</button>
    </form>
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        <input type="checkbox" v-model="todo.completed" />
        {{ todo.title }}
        <button @click="remove(todo.id)">x</button>
      </li>
    </ul>
  </div>
</template>

<script lang="ts">
import { defineComponent, reactive, ref } from 'vue'
import { useStore } from '../store'

interface NewTodo {
  title: string;
}

export default defineComponent({
  name: 'App',
  setup() {
    const store = useStore()
    const state = reactive({ newTodo: '' })
    const todos = ref(store.state.todos)

    const addTodo = () => {
      store.actions.add(state.newTodo)
      state.newTodo = ''
    }

    const remove = (id: number) => {
      store.actions.remove(id)
    }

    return {
      todos,
      addTodo,
      remove,
      ...state,
      message: 'Hello Vue 3 + TypeScript + Vite + Pinia!'
    }
  }
})
</script>

总结

这就是如何使用 Vue 3, TypeScript, Vite 和 Pinia 快速搭建一个简单的项目的完整攻略。欢迎通过这个教程来体验一下 Pinia 这个新的状态管理库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:5分钟快速搭建vue3+ts+vite+pinia项目 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 简介JavaScript中的italics()方法的使用

    当需要将一段文字以斜体展示时,我们可以使用JavaScript中的italics()方法。下面,我将详细介绍italics()方法的使用方法。 方法介绍 在JavaScript中,italics()方法用于将字符串以斜体的样式呈现出来。具体的使用方法如下: string.italics() 其中,string代表要进行斜体处理的文本字符串。该方法返回值为一个…

    JavaScript 2023年6月10日
    00
  • JavaScript定时器和优化的取消定时器方法

    JavaScript定时器和优化的取消定时器方法是网页开发过程中很重要的一部分。在本文中,我将详细讲解这个话题,并给出两个示例说明。 一、JavaScript定时器概述 JavaScript定时器提供了一种延迟执行代码的方法,它允许我们在指定的时间间隔后执行代码或者在指定的时间之后只执行一次代码。在 JavaScript 中,我们常用的定时器函数有 setI…

    JavaScript 2023年6月11日
    00
  • JavaScript表单验证完美代码

    下面是详细讲解 JavaScript 表单验证完美代码的攻略。 什么是 JavaScript 表单验证? JavaScript 表单验证是指利用 JavaScript 编写代码,对用户在表单中输入的数据进行校验。表单验证的目的在于防止用户误输入或恶意输入,确保表单提交的数据格式正确,并提升数据的安全性。 JavaScript 表单验证代码的编写步骤 在进行 …

    JavaScript 2023年6月10日
    00
  • js注入 黑客之路必备!

    JS注入是Web安全领域中非常重要的一个议题,也是Web攻击中常用的一种手段。攻击者可以通过JS注入攻击网站或用户,包括窃取用户信息、篡改网页内容、控制用户会话等。 以下是一个简单的JS注入攻击示例: 攻击目标 我们以一个简单的登录页面(login.html)为目标页面,该页面通过使用jQuery库将用户名和密码传递给后台验证,并在验证失败时显示错误提示。页…

    JavaScript 2023年5月19日
    00
  • Js实现粘贴上传图片的原理及示例

    让我来为你讲解Js实现粘贴上传图片的原理及示例的完整攻略。 原理 Js实现粘贴上传图片的原理为通过监听粘贴事件,获取粘贴板中的内容,如果内容是图片,则将其转换为base64格式上传到服务器。 具体来说,通过监听粘贴事件 paste ,获取事件对应的粘贴板对象 clipboardData 中的内容,如果内容是图片,则将其转换为base64编码。然后,使用Aja…

    JavaScript 2023年5月19日
    00
  • JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】

    JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】 在JavaScript中,可以使用Date对象来获取当前时间和日期,并对其进行一些简单和复杂的操作。为了方便起见,以下是获取日期的常见方法实例: 获取当前日期 要获取当前日期,可以使用以下代码: let today = new Date(); let year = today.getFullY…

    JavaScript 2023年5月27日
    00
  • 详解正则表达式表单验证实例

    下面是“详解正则表达式表单验证实例”的完整攻略。 什么是正则表达式? 正则表达式是一种强大的文本匹配工具,可以用于搜索、过滤和替换字符串。它可以用一些简单的字符和符号表示复杂的字符模式,非常的灵活和高效。 正则表达式在表单验证中的应用 正则表达式最常用的场景之一就是在表单验证中,我们可以通过正则表达式来限定用户输入的格式,确保输入的数据符合规则。下面我们通过…

    JavaScript 2023年6月10日
    00
  • localStorage设置有效期和过期时间的简单方法

    下面是详细讲解 “localStorage设置有效期和过期时间的简单方法” 的完整攻略: 什么是localStorage? localStorage 是一种在浏览器中存储数据的方式,可以用于在不同页面和不同会话之间共享数据。localStorage 中存储的数据可以长期保存,即使浏览器关闭了也不会丢失。 设置localStorage的有效期 localSto…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部