玩转 Vue 3 全家桶
大圣
前百度前端架构师
38321 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
玩转 Vue 3 全家桶
15
15
1.0x
00:00/00:00
登录|注册

06 | 新的代码组织方式:Composition API + <script setup> 到底好在哪里?

简洁的写法
提高效率
拆分代码
适应组件化开发思路
代码结构组织
Vue的“方言”问题
<script setup>的简洁性
Composition API的优势
v-bind函数
:global标记
scoped属性
useTodos函数
按需拆分
computed的用法
脱离Vue组件机制使用
v-bind函数
:global标记
scoped属性
模板、逻辑代码、CSS样式
单文件组件开发方式
<script setup>
Composition API
思考题
总结
style样式的特性
拆分代码
计算属性
<template>、<script setup>、<style>
新的代码组织方式:Composition API +
主题总结

该思维导图由 AI 生成,仅供参考

你好,我是大圣,欢迎进入课程的第六讲。
在上一讲中,我带你搭建了项目的雏形,这是后面项目开发的起点。从今天开始,我就带你在这个骨架结构的基础之上,开始项目的实战开发。首先我们要掌握的,就是 Vue 3 的 Composition API + <script setup> 这种最新的代码组织方式。
我们在前面的第三讲中,有详细地讲到过 Composition API ,相信你对这个 API 的语法细节已经有所掌握了。那你肯定会很好奇,这个 <script setup> 又是什么?为什么尤雨溪要在微博上强推 <script setup> 呢?
别急,今天我就带你使用 Composition API 和 <script setup> 去重构第二讲的清单应用。在重构的过程中,你能逐渐明白,Composition API 可以让我们更好地组织代码结构而让你感到好奇的 <script setup> 本质上是以一种更精简的方式来书写 Composition API 。

Composition API 和 <script setup> 上手

首先我想提醒你,我们在这一讲中写代码的方式,就和前面的第二讲有很大的区别。
在第二讲中,我们开发清单应用时,是直接在浏览器里使用 Options API 的方式写代码;但在接下来的开发中,我们会直接用单文件组件——也就是 .vue 文件,的开发方式。这种文件格式允许我们把 Vue 组件的 HTML、CSS 和 JavaScript 写在单个文件内容中。下面我带你用单文件组件的方式,去重构第二讲做的清单应用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Vue 3的Composition API和\<script setup>为开发者带来了全新的代码组织方式。通过使用单文件组件的方式,可以更好地组织代码结构,并以组件的方式组织新的功能。使用\<script setup>语法可以更精简地书写Composition API,实现了响应式数据和函数的定义,以及在模板中的直接使用。文章还介绍了如何在组件中使用计算属性,以及计算属性的单独引入使用方法。这种新的代码组织方式可以提高代码的可维护性和复用性,适用于实际项目的开发。 Composition API的优势在于能够将功能相关的数据和方法维护在一起,并且可以按需拆分功能代码,提高代码的可维护性。同时,\<script setup>语法能够让代码更加精简,提高使用Composition API的效率。另外,文章还介绍了style标签的特性,通过标记scoped可以让样式只在当前的组件内部生效,还可以通过v-bind函数来使用JavaScript中的变量去渲染样式,实现样式的动态切换。 总的来说,本文通过实例详细介绍了Composition API和\<script setup>的使用方法,以及它们带来的好处。这种新的代码组织方式能够提高代码的可维护性和复用性,同时能够提高开发效率。文章还提出了对于新语法带来的一些批评,鼓励读者分享自己的想法。 这篇文章适合想要了解Vue 3的新特性和使用方法的开发者阅读,尤其是对于想要提高代码组织和开发效率的开发者有很大的帮助。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《玩转 Vue 3 全家桶》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(99)

  • 最新
  • 精选
  • 奇奇
    置顶
    大圣,能不能搞一个 git 仓库来放每一讲的课程代码内容呢

    作者回复: 第一部分实战代码在这里呀,欢迎遇见bug了提pr呀 https://github.com/shengxinjing/geektime-vue-course

    2021-10-29
    15
  • ll
    每节课都有很多收获! ✿ Options API vs Composition API 字面上, 选项 API 与 组合 API,细品, 这反映了设计面向的改变: 1. 选项,谁的选项,关键在“谁”。谁?组件。也是 Vue2.x 的设计基础。组件有什么, 有状态,有改变状态的方法,有生命周期,还有组件和组件之间的关系。这种情况 下,“数据”要接受一定的“规矩”,“什么时候能做什么事”,“什么时候有什么表现”; 这个状态下,开发模式像是“被动接受”。 2. 组合,什么组合,关键在“什么”。什么?数据。数据的组合。Vue3.x 设计重点变了,数 据变绝对的C了,现在去组件里串门,不用“守规矩”了,只需要说“我在 onMounted 的时 候要这样这样,你看着办”,真只能的以“数据”为中心,没人能管得了了,想去哪就去哪, 自然就灵活了 至于这些是怎么做到由“被动接受”到“主动告知”的,实现这部分内容,我很期待。 ✿ 模板语法更好用 <script setup> 像是“语法糖”,很甜;<style>里能用 v-bind,以后开发可以 少用“黑科技”了,双手点赞。 ✿ 至于思考题 Vue 本来就属于 DSL,语法方面各有偏好,见仁见智;响应式和生命周期需要 import,个 人认为就代表了从之前的“被动主动”转向“主动告知”,这样设计更加灵活。从此一条主线在 ”数据",以后查 bug 顺着这条 "线" 应该更加容易了。

    作者回复: 太优秀了!

    2021-10-29
    5
    136
  • 琼斯基亚
    对于value,官方是这样解释的: 将值封装在一个对象中,看似没有必要,但为了保持 JavaScript 中不同数据类型的行为统一,这是必须的。这是因为在 JavaScript 中,Number 或 String 等基本类型是通过值而非引用传递的:在任何值周围都有一个封装对象,这样我们就可以在整个应用中安全地传递它,而不必担心在某个地方失去它的响应性

    作者回复: cool

    2021-11-10
    2
    36
  • 王俊
    建议增加代码库,实时拉取更新,现在的代码片段看着比较麻烦

    作者回复: 第一部分实战代码在这里呀,欢迎遇见bug了提pr呀 https://github.com/shengxinjing/geektime-vue-course

    2021-10-29
    6
    15
  • ch3cknull
    关于导入问题,antfu大神有一个插件unplugin-auto-import,可以自动注入依赖项,不用import https://github.com/antfu/unplugin-auto-import .value问题貌似最新的ref语法糖可以算是一个解决方案,但是目前褒贬不一,我不推荐现在就用

    作者回复: 这个插件把ref等导入也给自动做了,用起来也是挺方便的

    2021-10-29
    2
    14
  • cwang
    谢谢大圣老师的讲解。其中清单应用中,独立出来的useTodos函数,放在了哪里进行维护?并且,在使用这个函数时:let { title, ……} = useTodos() ,是不是还要对它进行一个引用?谢谢。

    作者回复: useTodos没有独立出文件,只是封装成一个函数还在组件内

    2021-10-29
    9
    12
  • Geek_fcdf7b
    大圣老师,请教一下,3.2版本之后,是不是定义响应式数据都可以用ref一把梭?我看有的文章是这样说的,ref在3.2之后性能进行了大幅度提升,所以建议使用ref,不管简单数据还是复杂数据都可以用ref,没必要用reactive

    作者回复: 建议ref一把梭,3.2之后ref的副作用也可以用$ref解决

    2021-12-08
    9
  • 凌旭
    1,Composition API +setup的写法,看起来是把vue2中属于单个组件的js代码和组件解耦了,这样可以高效复用到其他组件中,但随着业务代码的增对,这样抽离出来的js也会越来越多,到时的维护管理难度又会加大,虽然这样做杜绝了在template,script间的反复横跳,但是无法避免地需要在各个js文件中跳转呀。

    作者回复: 如果这个功能没有复用的需求,可以不抽离出文件,而是放在组件内维护就可以

    2021-10-31
    2
    9
  • 请问大圣,如果把useTodos单独抽成一个js文件,改js里的文件,浏览器界面不会自动热重载,有啥解决方法没?是改webpack的配置吗?

    作者回复: 你是windows吗? 有几个学员反馈了windows下面的热更新问题,你先把文件名首字母大写试一下,目测是vite的一个小,我去研究下怎么修了

    2021-10-29
    6
    7
  • 1⃣️
    ref的副作用也可以用$ref解决是什么意思?哪里能找到这个语法介绍吗?

    作者回复: vue3.2可以直接使用$ref定义一个变量 提案在这里 https://github.com/vuejs/rfcs/discussions/369

    2022-01-07
    6
收起评论
显示
设置
留言
99
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部