一幅长文细学Vue(九)——补充说明

9 Vue的补充说明

摘要:在前面的学习中,我们或许留下了许多疑问,除此之外,Ts的迅速发展使得Vue3中不得不支持Ts,在本文中我们会略微谈及Vue3中如何使用Ts,以及对前面的疑问做出一些补充说明。如果看不懂本文,十分推荐前往第十章观看后再返回来学习。

声明:为了文章的清爽性,在文章内部的代码演示中只会附上部分演示代码,main.js文件的代码通常不贴出,如果感兴趣可以前往代码仓库获取

作者:来自ArimaMisaki创作

9.1 各种页面

9.1.1 SPA单页面应用

说明:SPA(Single-Page application)为单页面应用程序;Vue为SPA的开发提供了很好的支持;SPA的页面切换无需加载,而是通过组件的切换搭配路由来实现切换的效果;SPA一般要求后端提供API数据接口。

Vue似乎天生就是做SPA的,我们知道在平时的使用中,我们都是把index.html看做是一个容器,然后将所写的单页面组件放入该容器中。但在实际使用中,实际上有人使用Vue来搭建多页面应用程序,这个已是后话,我们后面详谈。


9.1.2 SSR全栈

说明:SPA有一定的坏处,SPA的原理是将所有组件全部加载在一个HTML页面上,如果组件的内容较为复杂,那么加载JavaScript的时间会使用户体验差。为此,Vue支持将某个vue组件渲染为一个HTML页面。

上面的操作流程我们称为服务端渲染SSR,它能够极大地改善应用在Web核心指标上的性能表现。

有些基于Vue之上的上层框架可以让我们针对此场景很好地开发应用,如NuxtJS


9.2 搭配TypeScript使用Vue

9.2.1 使用TypeScript的好处

说明:我们前面说过JavaScript是一种动态语言,它是一门解释性语言,而TypeScript是一门静态语言,它可以通过编译后再执行,故在编译时通过静态分析检测可以提前发现很多常见的错误,这减少了生产环境的运行时错误。Vue本身就是Ts编写的,所以Vue官方库提供了Ts的开发环境,开箱即用。


9.2.2 项目配置

说明:在构建项目中推荐使用vite来构建而不是Vue-cli,使用npm init vite可以生成一个项目文件,选择vue-ts即可创建一个基于Vite创建的Ts的开发环境。

插件:对于Vue2来说,Vetur是一个非常好的插件,但是在Vue3中更推荐使用Volar;如果想要使用Volar,请记得禁用Vetur。


9.2.3 常见说明

9.2.3.1 DefineComponent

说明:为了让 TypeScript 正确地推导出组件选项内的类型,我们需要通过 defineComponent() 这个全局 API 来定义组件。

提示:无论是组合式写法还是选项式写法,个人认为DefineComponnent都是必须的,当script存在setup的简写形式时,export无法使用,正确的书写方式是将setup作为一个函数写入export的内部,这样做的方式有点类似于选项式+API的写法;这样写后,defineComponent可以看做是一个定义组件内部所有相关内容的集合体。

import { defineComponent } from 'vue'

export default defineComponent({
  // 启用了类型推导
  props: {
    name: String,
    msg: { type: String, required: true }
  },
  data() {
    return {
      count: 1
    }
  },
  mounted() {
    this.name // 类型:string | undefined
    this.msg // 类型:string
    this.count // 类型:number
  }
})

9.2.3.2 在单文件组件中的用法

说明:要在单文件组件中使用 TypeScript,需要在 <script> 标签上加上 lang="ts" 的 attribute。当 lang="ts" 存在时,所有的模板内表达式都将享受到更严格的类型检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArimaMisaki

如果知识有用请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值