Vue3入门 ----- Vite、Vetur、Vue-router@4、Pinia的使用

打包 – Vite

  • 极速的服务启动,使用原生 ESM 文件,无需打包
  • 轻量快速的热重载,始终极快的模块热重载(HMR)
  • 丰富的功能,对 TypeScript、JSX、CSS 等支持开箱即用

传统打包方式
基于打包器的方式启动,必须优先抓取并构建你的整个应用,然后才能提供服务。

vite 方式
Vite 只需要在浏览器请求源码时进行转换并按需提供源码。
根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。

PS:
webpack 的入口是一个 js 文件,先根据入口 js 文件,构建打包项目,在运行服务器。
Vite 的入口文件是一个 html 文件,先直接启动服务器运行 html 文件,在通过 http 请求加载源码。

使用Vite创建Vue3项目
yarn create vite or npm create vite + 项目名
回车
vue
回车
vue-ts

bash可能会导致方向键选择不生效, 使用cmd即可

工作台插件 – Vetur

  • vue2中需要安装插件Vetur,可以实现组件高亮。但是vue3的一些语法在vetur中报错。
  • vue3中需要安装插件Volar,提供了更加强大的功能,插件和 Vetur 会出现冲突。
  • 所以,使用功能vue3,需要禁用 vetur插件,安装Volar插件。
  • Volar 共需要安装两个插件,第二个提供 Volar TypeScript 支持。

在这里插入图片描述

路由 – Vue-router@4

vue升级vue3之后,配套的vue-router也升级为vue-router@4.x版本
vue-router4的语法和3的版本语法基本一致,但是有一些细微的修改。

  • 基本使用

安装
yarn add vue-router or npm install vue-router

使用
例如: views文件夹下创建组件home和login
创建文件路由入口文件router/index.ts

import {
  createRouter,
  createWebHashHistory,
  createWebHistory,
} from 'vue-router'

// 创建路由
const router = createRouter({
	// 创建路由模式 history模式--createWebHashHistory 哈希模式--createWebHistory
	history: createWebHashHistory(),
  // 配置路由规则
  	routes: [
   		{ path: '/home', component: () => import('../views/Home.vue') },
 	   { path: '/login', component: () => import('../views/Login.vue') },
	],
})

// 导出路由
export default router

main.ts中引入

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

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

App.vue中使用

<script setup lang="ts">
// 👍在 TS 项目开发中,可以导入路由组件类型 RouterLink 和 RouterView 增强类型检查
// 不导入的话 router-link 和 router-view 为 any (相当于JS开发)
import { RouterLink, RouterView } from 'vue-router'
</script>

<template>
  <h1>Vue-router@4</h1>
  <ul>
    <li>
     	<!-- router-link to+路由名称 -->
      <router-link to="/home">首页</router-link>
    </li>
    <li>
      <router-link to="/login">登录</router-link>
    </li>
  </ul>

  <!-- 路由出口 路由页面展示-->
  <router-view />
</template>

在组件中使用
vue2中使用路由是this.$routerthis.$route, 但在vue3中子组件无法访问this, 需要通过useRouter()代替 this.$router,useRoute()代替 this.$route

<script setup lang="ts">
import { useRouter, useRoute } from 'vue-router'

// 相当于 this.$route
const route = useRoute()
console.log(route)

// 相当于 this.$router
const router = useRouter()
const loginBtn = () => {
// 在方法中使用
  alert('登录成功,跳转到主页')
  router.push('/home')
}
</script>


<template>
  <h2>Login 登录页</h2>
  <button @click="loginBtn">登录按钮</button>
  <-- 在template中使用 -->
  <button @click="router.push('/home')">主页</button>
</template>

状态管理 – Pinia

Pinia 是 Vue.js 的轻量级状态管理库
比起vue3中的Vuex状态管理, pinia更轻量, 更容易使用

state: 状态
actions 修改状态(同步和异步修改状态), 不再用action/mutation
getter: 计算属性

  • 安装
    yarn add pinia or npm install pinia
  • 挂载
    main.ts
import { createApp } from 'vue'
import App from './App.vue'

// 引入并创建pinia实例
+import { createPinia } from 'pinia'
+const pinia = createPinia()

// 挂载
createApp(App)
 +  .use(pinia)
  .mount('#app')
  • 使用
    新建文件store/user/counter.ts
import { defineStore } from 'pinia'

// 参数1 唯一标识
// 参数2 配置对象
const useUserStore = defineStore('user',{
	// 状态
	state(){
		return {
			name: '张三',
			age: 18,
		}
	},
	// 状态数据计算属性 相当于computed
	getters:{
		doubleAge():number {
			return this.age * 2
		}
	},
	// 修改状态 同步异步都可修改
	actions:{
		addAge(){
			this.age ++
		},
		minusAge(){
			this.age --
		}
	}
})

// 导出
export default useUserStore

组件中使用

<script setup lang="ts">
import useUserStore from './store/counter'
// 使用 Store
const user = useUserStore()

// 使用actions
const minusUserAge()=>{
	user.minusAge()
}
</script>

<template>
  <h1>Store 名称 {{ user.name }}</h1>
  <h2>Store 年龄{{ user.age }}</h2>
  <div>getters {{ user.doubleAge }}<div/>
  <button @click="user.addAge()">actions 点击+1<button />
   <button @click="minusUserAge()">actions 点击-1<button />
</template>

建议做模块化处理
新建文件store/index.ts

import useUserStore from './counter'
// import xxx from './xxx'

// 统一导出方法
export default function useStore(){
	return {
		user: useUserStore(),
		//xxx: xxx()
	}
}

组建中使用

<script setup lang="ts">
import useStore from './store'
const { user } = useStore()
</script>

<template>
  <h1>Store 名称 {{ user.name }}</h1>
  <h2>Store 年龄{{ user.age }}</h2>
</template>
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue3是Vue.js的最新版本,它带来了许多新的特性和改进,例如更快的渲染速度和更好的TypeScript支持。 Vite是一个新的构建工具,它可以快速地构建现代化的Web应用程序。它使用ES模块作为构建系统的基础,可以实现快速的热重载和快速的开发体验。 TypeScript是一种静态类型语言,它可以帮助开发者在编写代码时发现潜在的错误,并提供更好的代码提示和自动补全功能。 Vue Router是Vue.js的官方路由管理器,它可以帮助开发者构建单页应用程序。它提供了许多有用的功能,例如路由参数、路由导航守卫和动态路由。 Pinia是一个新的状态管理库,它可以帮助开发者管理Vue.js应用程序中的状态。它提供了一种简单的方式来定义和使用状态,并且可以与Vue.js的生命周期钩子和Vue Router集成。 ### 回答2: Vue3是基于Vue2的改进版本,它在性能和开发体验方面有很大的提升。其中最重要的特点是它的虚拟DOM模型改进了响应式数据的渲染,使得性能得到了提高。同时,Vue3还引入了Composition API,这是一个函数式的API,将逻辑分离开来,使得代码更加简洁易懂。 Vite是一款基于ESM构建工具,并使用原生ES模块作为开发时的静态编译器,它不需要像Webpack那样将所有的文件都打包在一起,因此在开发时可以更加快速地编译和构建项目。同时,Vite还支持热重载,这使得开发和调试过程更加高效。 TypeScript是一种静态类型的语言,它可以在开发时提供更好的代码提示和类型检查,帮助开发者在编写代码时避免常见的错误。由于Vue3是使用TypeScript编写的,因此它对TypeScript提供了更好的支持。 Vue Router是Vue官方提供的路由管理器,它可以帮助开发者对单页应用进行路由管理。Vue3对Vue Router进行了改进,现在它可以使用Composition API来编写路由逻辑,并且支持动态路由。 Pinia则是Vue官方推出的状态管理库,与Vuex不同,它使用了新的API,并且更加轻量级。Pinia也允许使用Composition API进行编写,这样可以在处理状态管理方面更加灵活和高效。 综上所述,Vue3、Vite、TypeScript、Vue Router和Pinia都是当前最流行、最优秀的前端开发工具和库,它们的使用可以让开发者更加高效、简洁地进行开发。同时,它们都是基于Vue生态的,因此可以很好地与Vue进行整合,从而使得Vue在前端开发领域中的地位更加稳固、重要。 ### 回答3: Vue3是一个用于构建用户界面的渐进式框架,它具有更快、更轻量级、更易学习等特点。Vite是一个基于浏览器原生ES模块热更新启动的构建工具,它能够快速而且高效地打包项目,并且拥有快速的热重载和源码分割。 在Vue3中使用TypeScript可以提供更好的类型推导和编辑器支持,使开发更加高效、可靠。Vue-Router是Vue3的路由管理器,它能够方便地处理路由并且支持动态路由、嵌套路由、路由拦截等功能。而Pinia是一个状态管理库,可以更好地管理Vue3应用程序中的状态,它使用类似于Vuex的API,提供了状态管理和响应式数据持久化方案。 使用Vite集成Vue3和TypeScript可以让我们快速构建Vue3项目并且享受到TypeScript的类型检查和Vue3的新特性,同时还能使用热重载和源码分割。在应用程序中使用Vue-Router和Pinia可以更好地管理路由和状态,提升应用的性能和可维护性。 总之,Vue3、Vite、TypeScript、Vue-Router和Pinia这五种技术可以很好的组合在一起,为我们带来高效、可靠、灵活的开发体验,助力我们更好地构建出高质量的Vue3应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值