Vue3 快速入门系列教程(一),什么是 Vue?
myzbx 2025-02-03 14:11 17 浏览
前言
本系列教程写给从事前端开发刚刚入门的小伙伴,以及即将从事前端开发的朋友们,不会涉及很深的技术原理,以“会使用”为目的。
初次写作,文章可能让您不满意,请见谅。
如果出现有关技术知识方面的错误,希望您可以指出,让我与您共同进步!
我真诚的希望我的文章能够帮到您。
正文
Vue 是一款用于构建用户界面的 JavaScript 框架。它是渐进式框架,基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。
以上定义有3个地方需要留意:
渐进式框架:是指 Vue 具有很好的包容性,当你正在开发一个项目时,并非只能使用 Vue 这一项技术,你可以将你熟悉的技术集成到项目中。
声明式:就像我们在 HTML 中用 button 声明一个按钮一样,Vue 同样提供了一套类似 HTML 模板语法,它拓展了标准的 HTML 模板声明方式,使得我们可以使用“声明式”地方式描述最终输出的 HTML 和 JavaScript 状态之间的关系。这是 Vue 的一个核心功能。例如以下代码,很好的描述了该按钮“自增”意图的 JS 逻辑以及触发方式:
<button @click="count++">
{{ count }}
</button>
组件化编程模型:Vue 将一个功能或页面的 HTML、CSS 和 JavaScript 代码合并到一起,这被成为组件,可以被其他组件或页面引入而重复利用。通常每个“.vue”文件作为一个组件,组件可以简单到由一个按钮组成,也可以复杂到由一组功能或页面组成。
我们工作中都是以“单文件组件”形式进行编码,本系列教程的代码示例也是采用这种方式。例如一个简单的“点赞组件”结构:
<template>
<div class="good">
<!-- 模板中的响应式变量不需要 .value -->
<span class="nums">获赞:{{goodNums}}</span>
<span>获赞 - 非响应式:{{testNums}}</span>
<span>
<button @click="goodNumsAdd">点赞</button>
<button @click="goodNums++">点赞的另一种触发方式</button>
<button @click="testNumsAdd">点赞 - 非响应式</button>
</span>
</div>
</template>
<script setup>
import { ref } from 'vue'
const goodNums = ref(0)
const goodNumsAdd = () => {
// 注意响应式变量在 JS 中要用 .value
goodNums.value++
}
let testNums = 0;
const testNumsAdd = () => {
testNums++
console.log('我触发了,值:' + testNums)
}
</script>
<style scoped>
.nums {
color: red;
}
</style>
以上代码是 Vue 的一种书写方式,也是推荐的一种方式,有几点需要留意:
组件:一个组件由 template、script、style 标签组成。
<template>模板(视图)</template>
<script setup>
// setup 属性开启组合式 API
</script>
<style scoped>
/* scoped 属性指的是样式为该组件独享 */
</style>
组合式 API:<script setup> 是组合式 API 的使用方式,在开发中主要使用这种方式,本系列教程的代码示例也将采用这种方式。
<script setup>
// setup 属性开启组合式 API
</script>
所谓组合式 API,可以简单理解成“把要实现的一个功能中用到的变量和函数放在一起”,这样的设计优势主要体现在代码的逻辑清晰、利于集中管理,例如下面代码中的“goodNums”和“testNums”。
<script setup>
import { ref } from 'vue'
// goodNums 响应式变量和处理方法放到一起
const goodNums = ref(0)
const goodNumsAdd = () => {
// JS 中的响应式变量需要 .value
goodNums.value++
}
// testNums 变量和处理方法放在一起
let testNums = 0; // 我也可以在模板中直接使用
const testNumsAdd = () => {
testNums++
console.log('我触发了,值:' + testNums)
}
// more...
// 如果有很多的功能,组合式 API 对代码的集中管理是很有优势的
</script>
组合式 API 还有一个特点:模板中可以直接使用 <script> 标签中声明的顶级变量和函数(指的是非函数中定义的变量和函数)。
JS 代码中使用响应式变量要用 .value,模板中不需要加 .value。
<template>
<!-- 模板中直接使用响应式变量,但不需要 .value -->
{{ goodNums }}
<!-- 模板中直接使用非响应式变量 -->
{{testNums}}
<!-- 模板中直接使用 goodNumsAdd 方法 -->
<button @click="goodNumsAdd">点赞</button>
</template>
如需“声明式”API 风格,请参阅 Vue 官方文档。
样式:<style scoped> 中的 scoped 代表 style 中的样式只针对该组件有效,这就意味着上面代码中的 class .nums 在别的组件中也被定义了,则它们的样式也不会互相干扰;
注意观察上面代码中的前两个按钮和第三个按钮的区别,前两个按钮点击后,模板中的“获赞”数字会出现变化,而且还是自增显示,这就是 Vue 的另一个核心功能“响应式”,Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM,也可以简单的理解成:“数据发生了变化,页面就也跟着发生了变化,而无需手动刷新页面”。
const goodNums = ref(0) // 响应式,我变了,页面包含我的地方就会变了
let testNums = 0 // 不是响应式的,我变了,页面也不会改变
相反,第三个按钮点击后,即使是变量值发生变化,模板也不会更新,所以看不到“即时”的显示效果,因为它不是响应式的变量。
随后再点击前两个按钮中的任意一个,由于触发了视图更新,所以“获赞-非响应式”的值从最初的值立刻更新成最新值,且无自增显示效果,之前点击了几次“第三”个按钮,值就是几(多点击几次按钮观察结果)。
把一个变量变成响应式的,暂时记住“把它的初始值放到 ref() 函数的参数中”即可。
相关推荐
- MORROR ART:毫无音质可言,真的只是好看而已...
-
今天早上我在微博上发了一条短视频,内容是某款网红音箱正在放声歌唱——这玩意就是此前曾经在网上挺火的所谓“悬浮歌词音箱”。这款产品是我同事收到的礼品,但她嫌在家里放着没用,所以拿到公司里做我们的拍摄道具...
- 「JS优化篇」你的 if - else 代码肯定没我写的好
-
作者:小生方勤转发链接:https://mp.weixin.qq.com/s/JzOQ_OwAYoP5Ic1VBtCZNA前言最近部门在对以往的代码做一些优化,我在代码中看到一连串的if(){}el...
- 细聊微内核架构在前端的应用「干货」
-
作者:semlinker转发链接:https://mp.weixin.qq.com/s/ywc98dS4TVB4t3L2tIyk8g一、微内核架构简介1.1微内核的概念微内核架构(Microke...
- ThreeJS 入门教程(一) 是选择桌面的固守还是云原生?
-
导读:最近我购置了一台新的电脑,硬盘空间只有1T。我很担心这个电脑还能用多久。性能限制或者空间的限制,都使得在未来3-5年内,这个电脑会被淘汰。但是,基于云APP的使用,老的电脑是足够了,而且,我们也...
- 推荐三款正则可视化工具「JS篇」(正则在线调试)
-
作者:代码先森转发链接:https://mp.weixin.qq.com/s/rw29yKBwti5sIsx2GKG9pw前言最近老王对可视化非常着迷。例如,算法可视化、正则可视化、Vue数据劫持可...
- Javascript 多线程编程的前世今生
-
作者:jolamjiang腾讯技术工程转发链接:https://mp.weixin.qq.com/s/87C9GAFb0Y_i5iPbIL5Hzg为什么要多线程编程大家看到文章的标题《Javasc...
- Pug 3.0.0正式发布,不再支持 Node.js 6/8
-
作者:李俊辰前端之巅转发链接:https://mp.weixin.qq.com/s/q-49Gf-SFijeu7d2MqztIQ前言近日,Pug3.0.0正式发布,Pug原名Jade,是由...
- 36个工作中常用的JavaScript函数片段「值得收藏」
-
作者:Eno_Yao转发链接:https://segmentfault.com/a/1190000022623676前言如果文章和笔记能带您一丝帮助或者启发,请不要吝啬你的赞和收藏,你的肯定是我前进的...
- 深入JavaScript教你内存泄漏如何防范
-
作者:大道至简转发链接:https://mp.weixin.qq.com/s/0w6aWwpR3MAJnmyLwDnAzA前言一般情况下,忽视内存管理不会对传统的网页产生显著的后果。这是因为,用户刷新...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...
- 用STM32做了个电子秤,成本仅两位数,精度高!解析一下原理
-
俗话说得好!人在胖,秤在看!所以,我想DIY一个精度高的体重秤!并希望它不只能称体重:还能像这样称克重(可设置KG,G,最低可称100克)……这样一来,做甜品的时候,还能拿来应应急。保姆级教程,记录在...
- 前端开发需要了解常用7种JavaScript设计模式
-
作者|Deven译者|王强策划|小智转发链接:https://mp.weixin.qq.com/s/Lw4D7bfUSw_kPoJMD6W8gg前言JavaScript中的设计模式指的是...
- 毛姆的一个手法|王培军(毛姆作品简介)
-
鲁本斯画《海伦娜·芙尔曼肖像》钱锺书在《宋诗选注》文同小传中说:“具体的把当前风物比拟为某种画法或某某大画家的名作”,是“从文同正式起头”。如钱先生所举的:“峰峦李成似,涧谷范宽能”,“独坐水轩人不到...
- 欣赏 | 朝戈:我渴望找到直达心灵的永恒
-
朋友,通过艺术让我们共同感知世界的永恒与不朽。——朝戈橙色的人物117X71cm布面油画2003包与陈185cm×103cm2007年白色80cm×40cm2009年光布面油画-Light-Oilo...
- Web页面如此耗电!到了某种程度,会是大损失
-
现在用户上网大多使用移动设备或者笔记本电脑。对这两者来说,电池寿命都很重要。在这篇文章里,我们将讨论影响电池寿命的因素,以及作为一个web开发者,我们如何让网页耗电更少,以便用户有更多时间来关注我们的...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 选择器 (30)
- CSS 轮廓 (30)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 中级教程 (30)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)