百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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开发者,我们如何让网页耗电更少,以便用户有更多时间来关注我们的...