likes
comments
collection
share

Vue3入门

作者站长头像
站长
· 阅读数 44

什么是Vue3?

Vue.js 3.0是Vue.js框架的一个全新版本,带来了许多新特性和变化。 Vue.js 3.0的响应式系统经过了全面升级,并且提供了更好的组件化、路由支持、状态管理和TypeScript支持。 这些变化使得Vue.js 3.0更加高效、灵活和易于维护。

入门

入门Vue3可按以下步骤:

  1. 安装Vue3:在终端中使用npm安装Vue CLI(命令行界面)。
  2. 创建Vue3项目:使用Vue CLI创建新项目,这样可以轻松设置和管理Vue3应用程序。
  3. 编写Vue3组件:Vue3使用组件来构建应用程序,为应用程序提供结构和功能。编写组件时,需要了解Vue3的核心概念,如模板、指令、生命周期等。
  4. 数据绑定:Vue3支持双向数据绑定,这意味着当数据发生变化时,视图会自动更新。
  5. 事件处理:Vue3允许使用@符号来注册事件处理程序。
  6. 使用Vue Router: Vue Router是Vue3官方提供的路由管理器,可帮助您为应用程序创建路由和导航。
  7. 使用Vuex:Vuex是Vue3官方提供的状态管理库,可帮助您管理应用程序的状态并进行全局状态共享。

安装命令

安装 Vue3 可以使用 npm 或者 yarn

npm install -g vue@next

其中 -g 选项表示全局安装,vue@next 表示安装 Vue3 版本。如果您希望在项目中使用 Vue3,则应在项目文件夹中运行该命令,并删除 -g 选项。 如果您使用 yarn,可以使用以下命令安装 Vue3:

yarn add vue@next

注意,Vue3 的包名为 vue@next,而不是 vue

创建Vue3项目

1.确保您已经安装了最新版本的 Node.js 和 npm。您可以在终端中运行以下命令来检查:

node -v
npm -v

2.安装 Vue CLI。在终端中运行以下命令:

npm install -g @vue/cli

3.使用 Vue CLI 创建一个新项目。在终端中运行以下命令:

vue create my-project

其中 my-project 是您要创建的项目名称。Vue CLI 将会提示您选择一些配置选项,例如包管理器、要使用的预设(预先配置好的设置)等。 4.进入项目目录并启动开发服务器。在终端中运行以下命令:

cd my-project
npm run serve

也可以在文件夹路径打开cmd 输入

npm create vue@3

Vue3入门 回车后创建项目

编写Vue3组件

Vue3 使用组件来构建应用程序,为应用程序提供结构和功能。以下是 Vue3 组件的一些核心概念:

  1. 模板:Vue3 组件使用模板来定义其结构和样式。您可以在模板中使用插值表达式、指令和事件绑定等特性来动态渲染内容。
  2. 指令:Vue3 中的指令是以 v- 开头的属性,可以用于控制 DOM 元素的行为和属性。例如,v-if 指令可用于根据条件显示或隐藏元素,v-for 指令可用于循环渲染列表数据等。
  3. 生命周期:生命周期是 Vue3 组件在实例化、更新和销毁期间触发的一系列钩子函数。通过这些钩子函数,您可以在组件生命周期的不同阶段执行特定的操作,例如在 created 钩子函数中执行异步加载数据的操作。
  4. 数据绑定:Vue3 支持双向数据绑定,这意味着当组件的数据发生变化时,视图会自动更新,并且当用户与视图进行交互时,组件的数据也会自动更新。
  5. Props:Props 是从父组件传递到子组件的数据。父组件可以将数据作为 props 传递给子组件,在子组件中使用它们来渲染组件的内容。

Vue3组件创建基本步骤

编写 Vue3 组件的基本步骤如下:

  1. 创建组件:可以在项目中创建一个 .vue 文件来定义组件。
  2. 编写模板:在 .vue 文件中,使用 <template> 标签来定义组件的 HTML 模板。
  3. 编写脚本:在 <script> 标签中编写组件的 JavaScript 代码。通过 export default 导出一个对象,该对象包含组件的选项,例如组件的名称、数据、方法和生命周期钩子等。
  4. 注册组件:将组件注册到 Vue3 中,以便在应用程序中使用它。可以使用全局注册或局部注册的方式来注册组件。

下面是一个简单的 Vue3 组件示例:

<template>
  <div>
    <h1>{{ message }}</h1>
    <button @click="onClick">Click me</button>
  </div>
</template>

<script>
export default {
  name: 'MyComponent',
  data() {
    return {
      message: 'Hello, World!'
    }
  },
  methods: {
    onClick() {
      alert('Button clicked!')
    }
  }
}
</script>

在上面的示例中,我们定义了名为 MyComponent 的组件,并在其中定义了一个数据属性 message 和一个方法 onClick。在模板中,我们使用插值表达式来动态渲染 message 变量,在按钮上绑定 onClick 方法,以便在单击按钮时触发。

要在应用程序中使用该组件,我们需要将其注册到 Vue3 实例中。例如,可以使用全局注册的方式将组件注册到 Vue3 实例中,如下所示:

import { createApp } from 'vue'
import MyComponent from './MyComponent.vue'

const app = createApp({})
app.component('my-component', MyComponent)
app.mount('#app')

在应用程序中使用该组件时,只需在模板中添加以下标签即可:

<my-component></my-component>

数据绑定

Vue3 中的数据绑定主要包括以下几种形式:

  1. 插值表达式:使用 {{ }} 将数据绑定到模板中。例如,<p>{{ message }}</p> 将会渲染 message 数据的值。
  2. v-bind 指令:用于将属性与数据绑定。例如,<img v-bind:src="imageSrc"> 将会动态地将 imageSrc 数据的值赋给 src 属性。
  3. v-model 指令:用于在表单元素(如输入框、单选按钮、复选框)和组件之间实现双向数据绑定。例如,<input v-model="message"> 表示将输入框中的值与 message 数据进行双向绑定。
  4. 计算属性:用于基于已有的数据计算出一个新的值,并将其绑定到模板中。例如,定义一个名为 reversedMessage 的计算属性来反转 message 数据的值:
computed: {
  reversedMessage() {
    return this.message.split('').reverse().join('')
  }
}
  1. 监听器:用于监听数据的变化,并触发回调函数执行相应操作。例如,定义一个名为 watchedMessage 的监听器来在 message 数据发生变化时触发回调函数:
watch: {
  message(newValue, oldValue) {
    console.log(`message changed from ${oldValue} to ${newValue}`)
  }
}

事件处理

Vue3 中的事件处理方式与 Vue2 有所不同。在 Vue2 中,我们通常使用 v-on 或 @ 来绑定事件处理函数,然后在组件中定义对应的方法来实现逻辑。

而在 Vue3 中,我们可以使用 v-on 指令或 @ 缩写指令来绑定事件处理函数,但方法的定义有所不同。具体来说,我们需要使用 setup() 函数来定义事件处理函数。

例如,下面是一个鼠标点击事件处理函数的示例:

<template>
  <button @click="handleClick">Click me</button>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const count = ref(0)
    function handleClick() {
      count.value++
      console.log(`button clicked ${count.value} times`)
    }
    return {
      handleClick
    }
  }
}
</script>

上面的代码中,我们首先导入了 ref 函数,用于创建响应式数据。然后在 setup() 函数中定义了一个名为 handleClick 的事件处理函数,并将其返回给模板中的 @click 指令进行绑定。在事件处理函数中,我们通过 count.value++ 来更新计数器的值,并在控制台打印出当前计数值。

需要注意的是,在 Vue3 中,事件处理函数必须使用 setup() 函数来定义,并且需要在 return 语句中将其暴露出来。这样做是因为在 Vue3 中,组件实例的生命周期钩子函数和事件处理函数都是作为 setup() 函数的一部分来定义的。

使用Vue Router

在 Vue3 中使用 Vue Router 需要先安装 Vue Router。可以通过以下命令来安装:

npm install vue-router@4

安装完成后,我们需要在项目中创建一个路由器实例,并将其注入到应用程序中。

下面是一个简单的示例,演示如何在 Vue3 中使用 Vue Router:

<!-- App.vue -->
<template>
  <div>
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
import { createRouter, createWebHistory } from 'vue-router'
import Home from './components/Home.vue'
import About from './components/About.vue'

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

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

export default {
  router
}
</script>

上面的代码中,我们首先导入了 createRouter 和 createWebHistory 函数,用于创建路由器实例和路由模式。然后定义了两个组件 Home 和 About,并在路由器实例中配置了相应的路由规则。最后将路由器实例导出,并在根组件中进行注入。

在模板中,我们可以使用 router-link 组件来生成带有正确 href 属性的链接,以便用户可以点击它们并导航到不同的页面。而 router-view 组件则用于渲染匹配到的组件。

需要注意的是,在 Vue3 中,路由器实例和路由的配置方式都有所不同,并且在根组件中需要将路由器实例进行注入。

使用vuex

Vue3中使用Vuex需要先安装Vuex:

npm install vuex@next --save

然后在Vue3应用程序的入口文件中,使用createStore方法创建一个store对象并将其导出:

import { createStore } from 'vuex'

const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    incrementAsync(context) {
      setTimeout(() => {
        context.commit('increment')
      }, 1000)
    }
  },
  getters: {
    getCount(state) {
      return state.count
    }
  }
})

export default store

在Vue3应用程序中,可以使用provideinject来将store对象注入到子组件中:

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

createApp(App).provide('store', store).mount('#app')

在子组件中,可以使用inject来获取store对象并使用Vuex提供的API:

import { defineComponent, inject } from 'vue'

export default defineComponent({
  setup() {
    const store = inject('store')

    const increment = () => {
      store.commit('increment')
    }

    const incrementAsync = () => {
      store.dispatch('incrementAsync')
    }

    const getCount = () => {
      return store.getters.getCount
    }

    return {
      increment,
      incrementAsync,
      getCount
    }
  }
})

总结

总的来说,Vue3是一款非常强大的前端框架。本文总结了Vue3框架的关键知识点和其他一些功能和特性,包括响应式系统、组件、Vite、自定义指令、Teleport、Suspense、TypeScript和选项式API与组合式API等。Vue3采用了Proxy对象构建响应式系统,提供了Composition API来更好地组织和重用代码,同时引入了Teleport和Suspense等新特性,更好地支持TypeScript,帮助开发人员更加灵活和高效地使用框架。如果想了解和学习更多,非常推荐阅读官方文档,并且动手去实践。

转载自:https://juejin.cn/post/7241490493623975995
评论
请登录