当前位置: 首页 > news >正文

vue与ts不得不说的秘密


├── TypeScript(TS)
├── Vue3 + TypeScript
├── Composition API
├── script setup
├── Props 类型定义
├── Emits 类型定义
├── Ref / Reactive 类型
├── 泛型(了解)
├── 接口 Interface
├── 类型别名 Type
├── Axios 类型封装
├── API 接口类型管理
├── Pinia + TS
├── Vue Router + TS
├── 组件封装
├── Hooks(Composition Functions)
├── 自定义指令
├── 插槽高级用法
├── KeepAlive
├── Teleport
├── Suspense
└── 性能优化

TypeScript(TS)

jeecgboot TS + Vue 模板化 03-CSDN博客

jeecgboot vue TS & 模板化 04_jeecg vue sorter: { multiple: 1, },-CSDN博客

Vue3 + TypeScript

Vue3 负责页面和组件化,TypeScript 负责给 Vue 增加类型约束。

Vue3
|
TypeScript
|
编译阶段发现错误
|
更安全维护

Vue3
├── Composition API
├── script setup
├── TypeScript
├── Pinia
├── Vue Router
└── Axios

大型项目:

export default {
data(){
return {
user:{}
}
}
}

编辑器不知道:

user里面有什么? name? age?

大型项目:

组件A | 修改字段 | 组件B | 接口报错 | 运行才发现

Vue3 + TS:

interface User{ id:number name:string age:number } const user:User={ id:1, name:"张三", age:20 }

IDE马上知道:

user.id 是 number user.name 是 string

Composition API

Composition API 核心入口

<script setup lang="ts">

</script>

API作用
ref定义响应式基本数据
reactive定义响应式对象
computed计算属性
watch监听
watchEffect自动监听
onMounted生命周期
provide/inject跨组件通信

按照业务拆:

用户功能

├── 用户变量
├── 用户方法
├── 用户计算属性
└── 用户监听


商品功能

├── 商品变量
├── 商品方法
└── 商品监听

setup() 函数

Vue3组件初始化入口

script setup 简化 setup

export default {

setup(){

}

}

<script setup>

const name="张三"

</script>

自动暴露变量。

不需要:

return {}

Composition API + TypeScript 实战

<script setup lang="ts"> import {ref,onMounted} from "vue" interface User{ id:number name:string } const user=ref<User>() async function loadUser(){ user.value={ id:1, name:"张三" } } onMounted(()=>{ loadUser() }) </script>

用户模块

├── User类型
├── user状态
├── loadUser方法
└── 生命周期

逻辑复用HOOK

以前:

复制代码:

用户列表页面 复制 用户管理页面

Vue3:

抽成 Hook:

hooks └── useUser.ts

例如:

export function useUser(){ const user=ref() function getUser(){ } return { user, getUser } }

页面:

const { user, getUser }=useUser()

这就是:

Composition(组合)

类似对象

Composition API 类似把 Controller 中不同业务逻辑拆成 Service,而不是全部堆在一个类里。

页面组件

<script setup>

调用 Hook

useUser()

调用 API

userApi.ts

Axios

Spring Boot接口

Vue3页面
|
Composition API
|
Hooks
|
Axios
|
REST API
|
Spring Boot

script setup

setupscript setup
写法函数形式标签形式
return需要不需要
组件注册需要自动
Propssetup参数defineProps
Emitsetup参数defineEmits
TS支持一般优秀
企业使用主流
<script setup lang="ts"> import { ref, onMounted } from "vue" import { getUserList } from "@/api/user" interface User{ id:number name:string } const list=ref<User[]>([]) async function load(){ const res=await getUserList() list.value=res.data } onMounted(()=>{ load() }) </script>
http://www.jsqmd.com/news/1145287/

相关文章:

  • 学生党如何零成本入门AI编程?2026年免费工具清单+学习路线
  • 自动售货机场地合同到期,续签时这几个条款一定要看清~YH
  • 【类型转换】
  • 有机废气治理企业怎么选?主流 VOC 治理工艺与靠谱服务商全解析
  • AI写代码越改越乱?多文件修改中的上下文、依赖冲突和代码冲突
  • 海思网络错误(烧录报tftp错误等)解决思路分享
  • 特赞 Clipo idea 发布:AI 正在进入社媒内容的“投前决策”环节
  • 秋招简历怎么写才能过初筛?资深HR揭秘5大核心技巧
  • Linux KVM 潜伏 16 年的漏洞终于被发现:一个虚拟机就能搞崩整台物理服务器
  • 通信拓扑如何决定多机器人协同性能上限
  • 一招搞定!经纬度转海拔,批量自动填充,坐标信息一键导出
  • Point-BERT 与 Point-MAE 对比:掩码建模策略对 3D 点云 Transformer 性能的 2 点核心差异
  • 终极Wwise音频容器解析指南:如何免费快速修改游戏音频文件
  • AI 是一个可以降本增效的完美存在
  • 3大创新突破:ChemBERTa如何重新定义化学AI研究范式
  • linux C++到指定路径下获取指定后缀文件名
  • Spring AI Agentic 模式(第1部分):Agent Skills——模块化、可复用的能力
  • web作业10
  • 房地产顾问如何突破单一业务模式转型为家族资产配置顾问?
  • 还在为 API 调用踩坑?这款中转站帮你省成本、提效率、保稳定
  • ETCD 集群写满导致集群退出
  • 多通道数据采集仪
  • 在家也能安全连内网数据库:MariaDB监控与公网访问实战
  • AI核心组件:从感知到行动,打造超级智能体!
  • Vite原理与Webpack对比
  • 两年的AI说删就删!豆包千问集体下线智能体,大厂都在偷偷换赛道了
  • 茅台酱香酒旗舰店中的迎宾酒官方保真吗——渠道解析+鉴真指南
  • 量化派:构建物理AI通用技术底座,开启“卖能力”产业拐点
  • WebToEpub完整教程:三步将网页小说转换为电子书
  • Python正则表达式完整教程:从入门到实战,解决文本匹配所有难题