赞
踩
今天开始带着大家一起零基础学习vue3,我们通常学习完vue3的目的就是为了开发移动项目或者是小程序项目。所以我们边学习基础,边进行实战。而我们学习vue3来开发项目的一个延申就是uniapp。在下面的课程中我们就简称uniapp为uni吧。我这里从零基础开始教大家,后面可以带大家简单的做一个实战项目。所以不用担心自己没有基础,跟着石头哥认真学习就行了的。
今天带大家来学习vue3,熟悉石头哥的同学肯定知道,我们要学习就学习最新的。当然如果你们公司或者你想学习vue2可以去看下别人的视频,学完vue2再来学习石头哥的vue3也行,不过我还是建议要学就学最新的,我们直接从最新的vue3来开始学习。
至于我们为什么不学习vue2,主要是基于以下优势
Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面和单页应用程序。Vue 3 是该框架的最新主要版本,它带来了许多改进和新特性。据说vue3运行速度是vue2的二倍。
以下是一些开发者可能选择使用 Vue 3 而不是 Vue 2 的原因:
性能提升:Vue 3 在虚拟 DOM 的重写、组件初始化、编译器优化等方面进行了性能优化,使得 Vue 3 在运行时性能上有了显著提升。
更小的打包体积:Vue 3 的代码更加精简,减少了最终打包的体积,这有助于加快页面加载速度。
响应式系统的改进:Vue 3 引入了一个新的响应式系统,它提供了更精确的依赖跟踪和更新机制,减少了不必要的渲染。
Composition API:Vue 3 引入了 Composition API,这是一种新的编写组件逻辑的方式,它允许开发者以更灵活和可组合的方式组织代码。
TypeScript 支持:Vue 3 的开发过程中大量使用了 TypeScript,这使得框架对 TypeScript 提供了更好的支持,有助于开发者编写更健壮的代码。
Teleport:Vue 3 引入了一个新的内置组件 Teleport
,它允许开发者将组件的子节点传送到 DOM 中的其他位置。
Fragment:Vue 3 支持多个根节点,这意味着可以在模板中使用多个元素作为组件的根。
自定义渲染器:Vue 3 允许开发者创建自定义渲染器,这为框架的定制化提供了更多可能性。
全局 API 的更改:Vue 3 重写了全局 API,使其更加一致和易于理解。
工具和生态系统的更新:随着 Vue 3 的发布,相关的工具和生态系统(如 Vue CLI、Vue Router、Vuex 等)也进行了更新,以支持新特性。
uni-app 和 Vue之间有着紧密的联系,它们之间的关系可以从以下几个方面来理解:
技术基础:
语法和API:
组件化开发:
跨平台:
开发工具:
生态和社区:
Vue 版本支持:
性能优化:
学习曲线:
总结来说,uni-app 是在 Vue.js 的基础上构建的,专门为跨平台开发设计的框架。它保留了 Vue 的核心特性,同时增加了跨平台开发的能力,使得开发者能够使用一套代码来构建多个平台上运行的应用程序。
查看下图,可以看到uniapp项目和vue3项目基本上类似,都有App.vue.开发页面也都是用的vue文件。
并且页面的技术点都是一模一样的
所以如果你会vue就可以直接上手开发uniapp,当然如果你不会uniapp也不会vue,今天就跟着石头哥从零开始学习vue3和uniapp
UniApp 和 Vue 与小程序之间的关系可以从以下几个方面理解:
Vue 为基础:Vue 是一个流行的前端框架,专注于用户界面的构建。它通过组件化的方式,使得开发者可以高效地组织和重用代码。Vue 本身主要面向 Web 开发,但它的灵活性也为扩展到其他平台提供了可能。
UniApp 的跨平台能力:UniApp 是基于 Vue 的一个跨平台开发框架,它不仅支持 Web 端(H5)的开发,还特别针对小程序平台进行了优化。这意味着使用 UniApp 编写的代码,经过编译后,可以直接运行在微信小程序、支付宝小程序、百度小程序等多个小程序平台上,无需为每个平台单独编写代码,大大提高了开发效率和代码复用率。
小程序特性的集成:在 UniApp 中,为了更好地适应小程序的开发需求,框架集成了小程序的特定标签和API。尽管 UniApp 代码基于 Vue 语法,但在实际开发小程序时,开发者可以使用类似于小程序原生的开发方式,比如使用小程序的组件和API来访问设备的特定功能,如本地存储、支付接口等。
编译目标:当选择编译目标为小程序时,UniApp 会将 Vue 代码转换为符合各大小程序平台规范的代码,确保应用可以在各个小程序环境中正常运行。这个过程中,框架会处理好 Vue 的响应式数据绑定、组件生命周期等特性与小程序平台之间的映射问题。
总结而言,Vue 为 UniApp 提供了强大的基础架构和开发体验,而 UniApp 则在此基础上扩展了对小程序等多平台的支持,使得开发者能够利用 Vue 的便利性,快速开发出适应多个小程序平台的应用。
uniapp是基于vue框架,所以如果你会vue的话,来学uniapp会很简单。uniapp的开发规范和小程序相似,所以如果你跟着石头哥学过小程序,再来学uniapp就能很快的入门。
当然了,如果你没有小程序或者vue基础,也没事的,只要跟着石头哥认真学习这门uniapp入门课即可。
所以我们学习完这门课,vue3,uniapp,小程序我们都可以熟练的开发了。
我们学习uniapp之前先要认识uniapp的好处
看下官网 https://uniapp.dcloud.net.cn
就可以看到,我们用编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
总结起来uniapp有以下几点好处
我们这一节主要是来了解下uniapp。因为uniapp是使用vue语法开发的,所以我们在学习vue3的同时,也会教大家进行实战开发uniapp项目。
在vue的官方文档里,我们看到创建vue3项目需要用到npm,对于纯新手小白来说。是不太友好的,因为好多人配置node环境就很费劲。所以我们今天结合uniapp来零基础便捷的学习vue3知识。
uni-app在开发者数量、案例、跨端抹平度、扩展灵活性、性能体验、周边生态、学习成本、开发成本等8大关键指标上拥有更强的优势
从下面uni-app功能框架图可看出,uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。其实说白了,就是开发一套uniapp代码,就可以在当前主流的平台上运行。大大的节省了开发成本。
大家看下上图,其实就可以知道,如果没有uniapp,我们想在app,h5,小程序里运行我们的项目,那么我们至少要开发4套不同平台的代码,uni真正的好处就是我们只需要开发一套代码就可以在主流的平台上全平台运行。
下图可以看到我们一套代码可以在多个平台运行的效果。
在正式学习vue3之前先给大家普及一个简单的知识。
Vue.js 提供了两种主要的组件开发风格:选项式(Options API)和组合式(Composition API)。这两种风格各有特点,适用于不同的场景和开发偏好。
data
, methods
, computed
, watch
等)来组织组件的逻辑。setup()
函数集中管理组件的状态和行为,鼓励使用函数式和响应式编程的思想。ref
和reactive
等API,可以在setup()
中集中初始化和管理组件的状态。选项式API和组合式API并不是互斥的,Vue 3中两者可以共存,并且Vue 3也提供了@vue/composition-api
库让Vue 2应用能够使用组合式API。选择哪种API取决于项目的具体需求、团队的技术栈偏好以及个人的编程风格。对于追求组件逻辑复用性和管理复杂状态的项目,组合式API通常更为推荐;而对于小型项目或者初学者,选项式API因其直观简单,可能是更好的起点。
为了降低大家的学习成本,我先用基础简单的选项式Api来带大家入门。等大家学习的差不多了。我再给大家讲组合式api。
所谓工欲善其事,必先利其器。我们开发uniapp学习vue3肯定要有一个得心应手的开发者工具。
我们开发uniapp的工具就是HBuilderX
HBuilderX是通用的前端开发工具,但为uni-app做了特别强化。下面是hbuilder官方的简介
我们可以直接去官网下载HBuilderX开发者工具 官网下载地址
进去后我们只需要点击下载即可,记得window和mac电脑要下载自己对应的版本。
其实HBuilderX的安装很简单,我们上面下载好的安装包,解压好就可以了,解压好以后如下图。当然我这里是window电脑的安装过程,大家如果是mac电脑,可以自行安装。安装过程基本上大差小不差的。
我们在解压好的文件里双击exe文件即可运行。
打开后如下
当然了,如果感觉每次从目录里双击exe文件打开麻烦,可以固定到任务栏或者创建快捷方式,然后把快捷方式放到桌面。
也可以直接发送到桌面快捷方式
一般情况下,我们第一次打开项目关闭的时候,系统会提示我们自动创建一个桌面快捷方式的。
当然我比较喜欢固定到任务栏,因为以后要经常用整个开发者工具,所以怎么样打开方便就怎么来就行了。
当然如果你有学过石头哥的小程序课程,再来学习uni就可以很快的入门的。反过来说,如果你没有小程序或者vue基础,也没事的,只要跟着石头哥认真学习即可。
在点击工具栏里的文件 -> 新建 -> 项目
然后在弹出的创建页面做以下配置
关于项目路径,比如我在桌面新建一个demo1空白文件夹,然后在创建项目时点击浏览,选择自己创建的demo1文件夹即可。
这样我们创建的项目就会在demo1文件里,也就是我们的项目源码就存在了demo1里
新创建好的项目如下
可以看到我们的新项目就创建在了demo1里,到这里我们的第一个uniapp项目就创建好了。
跟着石头哥学过微信小程序开发的同学大概可以看出来,uniapp项目其实和小程序项目很相似的。
一些组件,语法也很相似,因为uniapp就是基于vue框架的,而小程序呢也是借鉴了vue。所以你学过石头哥的小程序课程,再来学uni,肯定学的很快的。当然了,即便没学过小程序,石头哥也会手把手的带着大家零基础入门uni的,只要跟着石头哥认真学习。
我们上面一步创建好了项目,这一节我们就来认识项目。
一个完整的uni项目的目录结构如下,我们后期随着学习的深入会逐个带大家学习,所以目前阶段,大家只需要大致知道就行,没有必要死记硬背下来。
大家可以先对照着官方给出的目录结构,大致的知道我们创建的第一个项目里每个文件都是什么作用。我在配套视频讲解里,会慢慢的带着大家熟悉的。
我这里先用通俗的话给大家说下我们新建项目的目录结构,方便大家理解
官方文档也有大致的介绍的
我们可以在顶部的工具栏里做一些开发者的配置,比如我这里把主题设置为了酷黑色。
当然了这里大家根据自己的喜好,去做一些简单的设置即可。我们后面的学习中会慢慢的用到工具栏里的东西,在视频里我慢慢的给大家做介绍。
我们常用的开发者工具的功能还有模拟器,调试器,在下一节的。
我们项目的预览常用的有下面几个方式。为了降低大家的学习成本,我们学习阶段主要运行到内置浏览器,后面会慢慢教大家运行到小程序或者手机上。
运行到浏览器就是运行到我们电脑上的浏览器
运行到手机或者模拟器:就是可以运行到我们的安卓或者苹果手机上
运行到小程序:就是我们开发的项目可以运行到微信,支付宝,百度小程序等。
运行到内置浏览器:这是我们目前学习阶段最常用的方式,所以我们目前运行先使用内置浏览器即可。
我们点击运行到内置浏览器,第一次会提示:安装插件,我们点击确定,安装即可。然后耐心等待插件的安装即可。
安装成功
然后再次点击运行到内置浏览器,就可以在内置浏览器上预览我们的项目了
这时候我们也多了一个调试器,调试器主要就是用来打印一些日志信息,来帮助我们调试项目,辅助修复bug。
我们开发好的项目不仅要运行在浏览器里,还需要运行到小程序里,所以我们这里以微信小程序为例,其他的支付宝,百度小程序等,都是一样的原理。
如下图所示,直接点击运行–》运行到小程序模拟器–》微信开发者工具
正常我们第一次运行,会弹出以下弹窗。我们要关联下开发者工具。
所以要先去安装小程序开发者工具。点击上图的链接即可。然后去下载对应的版本即可。
然后点击自己电脑对应系统的版本下载即可。至于安装很方便,只需要双击安装包,不停的点下一步即可,安装完成以后的官方开发者工具长这样。
然后找到安装路径,如下所示。当然最好你自己记住自己安装到哪里了,这样也可以的。
然后记住这个路径
记住后点击下图的浏览,一步步找到上面的路径即可。
点击确定,就可以编译运行到我们的小程序开发者工具了。有时候第一次运行会报如下错误。打不开小程序开发者工具。
这个时候就要按照上的提示,配置下了。打开微信开发者工具 -> 设置 -> 安全设置,将服务端口开启。
打开服务端口
然后,先停止运行
然后再重新运行到微信小程序即可。
可以看到在编译启动中
启动后,要在微信开发者工具里点击下信任并运行。
可以看到我的uniapp项目就可以编译成微信小程序,运行起来了。
并且会编译成微信小程序的代码。这就是uniapp的强大之处。
我们后面运行到支付宝,抖音小程序等都是一样的流程。
如果大家学过石头哥的小程序入门课,肯定知道石头哥的小程序开发三剑客。其实uni开发也有自己的三剑客。
其实小程序三剑客的知识点,同样适用于uniapp
结构 | 小程序 | 传统web | uniapp |
---|---|---|---|
结构布局 | Wxml | Html | 写在template里 |
样式 | Wxss | Css | 写在style里 |
逻辑 | JavaScript | JavaScript | 写在script里 |
配置 | Json | 无 | Json |
和小程序不同的是uniapp的页面布局,样式,逻辑都是写在同一个.vue文件里,所以我们接下来学习uniapp和小程序会有一些差别,但是大体上还是很相近的。所以不管你有没有学过石头哥的小程序课程,都不影响零基础入门uniapp。
我们在开发时为了提高代码编写效率,通常会使用一些快捷键。我们开发工具自带的快捷比较多,我这里不一一列举了,我把一些常用的快捷键拿出来给大家大致讲一讲,我这里以window电脑为例,如果你mac电脑,可以自己去看下开发者工具默认的快捷键。多看几遍把常用的记住就行了。
快捷键组合 | 描述 |
---|---|
Ctrl+A | 全选 |
Ctrl+C | 复制选中内容 |
Ctrl+V | 粘贴复制的内容 |
Ctrl+D | 删除当前这行的代码 |
Ctrl+N | 新建文件 |
Ctrl+W | 关闭文件 |
Ctrl+Shift+W | 关闭全部文件 |
Ctrl+S | 保存文件 |
Ctrl+/ | 开启/关闭代码注释 |
Ctrl+Shift+/ | 开启/关闭注释已选内容 |
Ctrl + Shift +R | 复制当前行到下一行 |
Ctrl+F | 打开搜索离材条,可以查找替换指定内容或者全部内容 |
Ctrl+H | 打开搜索框,可以搜所指定内容位置 |
Ctrl+R | 快速打开运行框 |
Ctrl+Z | 撤销修改,返回上一步 |
Ctrl+Shift+Z | 返回下一步 |
Ctrl+↑ | 向上移动行代码 |
Ctrl+↓ | 向下移动代码 |
Alt+/ | 激活代码助手 |
如果感觉默认的快捷键不喜欢,可以自己重新设置快捷键,这里不太建议自定义快捷键,熟记自带的常用的快捷键就可以了。
有的电脑上快捷键可能会有细微差距,以开发者工具默认自带的快捷键为准。
我们在学习后面课程之前,先来学习下注释。注释是在代码里给予提示使用的,主要是让别人更快的熟悉你的代码,也方便后期自己看自己的代码,快速回忆起来使用的。 注释有快捷键的,正好我们上面一节有讲常用的快捷键。
可以看到我们常用的三种注释如下,正好和我们前面学的三剑客对应起来。
<!-- -->
我们在开发过程中,总会遇到各种各样的问题,学会在控制台看日志,对我们来说可以帮助我们快速的定位问题,解决问题。
我们开发过程中也会经常用到日志打印。日志打印呢,就是事先打印出来一些东西,用以验证我们的代码输出的结果是否正确。
日志打印的语法如下
console.log("我的打印出来的日志内容")
可以看出我们在控制台日志里打印出来了我们写的日志,并且后面也告知我们这行代码写在了第16行。这样在日后的开发过程中,都可以快速的方便我们校验代码,定位问题,解决问题。
有的同学在上面内置浏览器里无法打印日志,所以这里提供一个备用方案,我们在前面运行项目章节有教大家怎么样运行到电脑浏览器。我们只需要运行项目到自己电脑浏览器即可。
如我这里以运行到chrome浏览器(谷歌浏览器)为例
项目运行到浏览器后,右键然后点击检查。就可以看到控制台了。
我们点击Console就和内置浏览器一样,可以打印日志了。
我们的代码的编写好,就可以点击运行,有时候运行会在控制台的日志报错,一般的报错如下图,基本上都是深颜色的爆红,所以一般情况下,控制台日志里出现爆红,就说明我们的代码有错误,这时候就要根据报错日志,去定位自己的代码错误了。
我们在后面的实战课程中,会故意写一些错误代码,然后教大家如何识别错误,更改代码。
我们学习vue3的时候难免会遇到一些常用的布局组件,我们这里以uniapp的组件为例,uni为开发者提供了一系列的基础组件,这些组件类似于html里的基础标签元素
view组件:相当于一个盒子,可以用来装一些别的组件。
它类似于传统html中的div
,用于包裹各种元素内容
官方文档:https://uniapp.dcloud.net.cn/component/view.html
如果大家有html的web基础,就可以把我们小程序里的view理解为html里的div标签。如果你没学过也无所谓,直接跟着我学习view即可。
在代码里简单的使用:
text组件:主要用来显示文字的。类似与html里的span标签。
input组件主要用来获取用户输入的信息的,一般在用户填写信息,提交数据,登录注册和提交表单时会用到。
官方文档:https://uniapp.dcloud.net.cn/component/input.html
输入框input有很多属性,我这里把一些常用的属性带着大家学习下。其他的大家可以自己去看官方文档详细学习
我们以type属性为例,我们的type属性有下面一些属性值。
比如我们给input的type设置为number属性值,那么我们在输入内容的时候,只可以输入数字。
button 组件:是按钮组件,自带默认的按钮效果,我们后面会经常用到。
官方文档:https://uniapp.dcloud.net.cn/component/button.html
button按钮有很多属性,我这里把一些常用的属性带着大家学习下。其他的大家可以自己去看官方文档详细学习
如我们设置的一些常用的按钮属性
image组件:主要用来显示图片,可以是本地图片,也可以是网络图片。类似于html里的img标签。
我们通过src属性来设置要显示的图片资源,图片资源有两种
我们设置显示图片的语法如下
<image src="图片资源地址"></image>
如下图,我们显示一个网络图片。
这里给大家提供一个网络图片地址
https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg
如果这个地址过期了,大家可以到网上自己找图片。随便找个图片,然后右键,点击复制图片地址,就可以获取到网络图片了。
用image显示本地图片,我们需要提前把图片放在static,如下图我们把本地图片放在static目录里
然后在image组件里设置src属性,指向这个本地图片,就可以在uniapp里展示了。
我把网络图片和本地图片都在小程序里展示,给大家对比着学习下。
我们在页面布局里写数据,一般情况下可以直接写,比如下面我们可以用10个text里显示10个编程小石头,假设我们有一个这样的需求,需要把编程小石头给为石头哥。如果我们每个都改一遍,是不是要改10遍,这样就导致效率低下了。
所以我们这里可以用数据动态绑定来提升效率。
数据绑定最常见的形式就是使用 {{…}}(双大括号)的文本插值,就是用{{}}包裹你的值,然后这个值就可以动态的显示了,比如我用 {{name}} 然后给这个name设置值为:编程小石头,如下,可以看到我们和上面写10遍编程小石头是一样的。
我们想把编程小石头改为石头哥,就只需要改name的值就行了。如下所示。
这样我们就明白用数据绑定的好处,其实我们后面的开发中,除了那种死的不会变的数据可以直接写死外,其他的后面可能需要改变的数据最好都用数据动态绑定。
关于数据绑定的语法需要大家记住,一定要多练,因为后面会经常用的。
就是在页面布局需要显示数据的地方用 {{数据名}}
然后在js的data里设置数据值,如下:
这里其实使用了vue的数据绑定,而vue官方又叫这种数据绑定为文本插值。其实就是把数据动态的绑定到我们组件外。
我们上面一节学习的文本插值式的数据绑定,那是把我们的数据动态的绑定到组件外。
如果我们想动态的绑定组件内的属性数据呢。比如我们的image图片组件的src属性,我们的图片链接不想写死,想动态的去替换。这个时候就可以用v-bind 动态地绑定属性了
v-bind也可以缩写为‘ : ’,可以用于响应式地更新
可以看到我们使用v-bind或者缩写的 : 都可以动态的把url数据绑定到image的src属性上。
这里要注意文本插值和属性绑定是有区别的
我们上面通过{{}}绑定数据到data里,我们绑定的数据有时候也需要用,而使用绑定的数据,可以通过this.数据名来使用
可以看到我们通过this.name就可以获取name绑定的数据。
函数也可以叫做方法(Methods)
它是组件中定义的函数,它们可以被模板中的事件监听器调用,或者在组件的生命周期钩子中使用。
函数的两种使用方式如下图:
我们的函数一般是写在js逻辑区域的methods里,比如我们定义一个getname函数,有下面两种写法。
石头哥这里推荐第一种方式定义函数,这也更简单。
Vue 3 中条件渲染主要通过以下几种指令实现:
v-if:这是最基本也是最常用的条件渲染指令。它用于条件性地渲染一块内容,只有当指令后的表达式求值为真时,绑定的元素或组件才会被渲染。
<script>
export default {
data() {
return {
isLogin: true
}
}
}
</script>
<template>
<div v-if="isLogin">我是登录成功</div>
<div v-else>我的未登录</div>
</template>
v-else:紧跟在v-if或v-else-if之后,表示当前面的条件都不满足时渲染的内容。
如我们前面的v-if里的未登录,就是当条件为false时,就会显示对应的内容。
<script>
export default {
data() {
return {
isLogin: false
}
}
}
</script>
<template>
<div v-if="isLogin">我是登录成功</div>
<div v-else>我是未登录</div>
</template>
v-else-if:用于链式判断多个条件,类似于JavaScript中的else if
语句。v-else-if 和 v-else 与 v-if 配合使用,提供类似于传统 JavaScript 中的 if-else-if-else 结构。v-else-if 可以链式使用,而 v-else 用来表示最后的“否则”情况。
<script>
export default {
data() {
return {
score: 88
}
}
}
</script>
<template>
<div v-if="score > 90">非常优秀</div>
<div v-else-if="score > 80">良好</div>
<div v-else-if="score > 59">及格</div>
<div v-else>不及格</div>
</template>
在Vue 3中,这些条件渲染指令的工作方式与Vue 2相似,但在内部实现上进行了优化,以提高应用的性能和响应速度。
在 Vue 3 中,列表渲染通常使用 v-for
指令来完成。v-for
可以绑定到数组或者对象上,用于基于源数据多次渲染一个元素或组件。以下是一些关于 Vue 3 列表渲染的基础知识和示例。
当你有一个数组并且想要渲染出列表时,可以使用 v-for
指令:
<ul>
<li v-for="item in items">{{item}}</li>
</ul>
在这个例子中,items是一个数组,v-for指令遍历这个数组,将每个元素赋值给item,并在每次迭代中渲染一个
<script> export default { data() { return { items: [ "列表1", "列表2", "列表3", "列表4", "列表5", "列表6", ] } } } </script> <template> <ul> <li v-for="item in items">{{item}}</li> </ul> </template>
页面上显示如下
其实我们列表这里用的最多的就是商品列表或者文章列表。我接下来以一个新闻列表为例,教大家深入的学习下
我们通常显示文章列表的时候会显示图片和标题,那么我们这节就来写一个简单的新闻文章列表页。
我们这里先显示图片的列表,这里需要大家提前去找一个图片,作为我们的新闻图片。把找到的图片,放到static文件夹里。如我这里用了一个我的头像图片。这里给大家的建议,图片名不要用中文,要不然会出现一些兼容的问题。
所以我把图片改下名,用拼音就行。
然后我们就可以显示图片了。我这里还是用v-for来显示图片列表
可以看到我们在列表显示了3个图片,并且也显示了3个简单的标题。
我们上面显示的图片列表都是一样的,那么我们就再找三张不一样的图片来。还是放到static文件里
然后我们要自己组装下列表的数据,我们现在用的是本地图片和数据,后面正式开发时,可能就是先把图片和标题存到数据库里,然后获取数据库,显示列表。当然这个后面要学习的,我们现在还是先学习我们的简单列表。
如我们组装的数据如下
[{
img: '/static/1.jpg',
title: '我是新闻标题一'
}, {
img: '/static/2.jpg',
title: '我是新闻标题二'
}, {
img: '/static/3.jpg',
title: '我是新闻标题三'
}]
我们这里的img就是我们每条文章数据的图片,title就是标题
这里要注意,用英文状态下的单引号, /static/是指向我们的static目录,然后/static/1.jpg就是使用static目录的1.jpg这个图片。
这样的我们就可以显示一个简单的新闻列表出来了
对应的代码完整的贴给大家
<script> export default { data() { return { items: [{ img: '/static/1.jpg', title: '我是新闻标题一' }, { img: '/static/2.jpg', title: '我是新闻标题二' }, { img: '/static/3.jpg', title: '我是新闻标题三' }] } } } </script> <template> <view v-for="item in items"> <image :src="item.img"></image> <view>{{item.title}}</view> </view> </template>
key
在渲染列表时,为每个元素提供一个唯一的 key
是非常重要的。Vue 使用这个 key
来跟踪每个节点的身份,从而在数据变化时高效地更新 DOM。
通常,key
应该是一个唯一标识列表中每一项的值,比如一个唯一 ID:
<li v-for="item in items" :key="item.id">{{ item.text }}</li>
如果列表项中没有唯一 ID,你也可以使用数组索引作为最后的手段:
<li v-for="(item, index) in items" :key="index">{{ item.text }}</li>
但请注意,使用索引作为 key
可能会引起性能问题,尤其是在列表项被重新排序或添加/删除时。
我们正式开发的时候,后台的每条数据都会有自己的唯一id,我们就可以用这个id作为我们的key
我们在vue3里做事件处理主要是为了监听事件,
它是组件交互的核心部分,
可以通过多种方式来实现。以下是一些常见的监听事件方法和实践:
接下来我们学习事件,我们常用的事件如下,这里我们先重点讲解下@click点击事件和
@input获取输入值的事件
我们如果想给一个组件定义点击事件,就要用到uni的事件处理,由于uni是基于vue语法的额,所以我们给uni里的组件定义点击事件,就要用到vue的语法。
我们给一个组件绑定点击事件的语法如下:
我们可以使用 v-on 指令来监听点击事件,从而执行 JavaScript 代码。
v-on 指令可以缩写为 @ 符号。
语法格式:
v-on:click="methodName"
或
@click="methodName"
methodName就是函数名,如下所示
可以看出我们使用v-on和@都可以定义点击事件,我这里推荐大家用@简写的方式
监听用户输入事件其实主要就是为了获取用户输入信息
获取input输入框里用户输入的内容有两种方式
@input结合函数获取输入内容
我们获取用户输入会用到@input事件,其实我们在学习input组件时,官方有给出这个属性的。
看官方的文档,可以知道@input主要是为了获取用户的输入内容。
@input的定义如下图,其中的getname就是我们定义的函数,用来接收用户输入的。
在布局里定义好bindinput事件以后,在js页面再定义一个和事件名一样的函数即可。
然后就可以监听用户输入了
视频里会作详细讲解。如果你有买老师的课程,或者购买老师的年卡,可以获取对应的学习视频。
v-model是什么
v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。
为什么使用v-model
v-model作为双向绑定指令也是vue两大核心功能之一,使用非常方便,提高前端开发效率。在view层,model层相互需要数据交互,即可使用v-model。
v-model的原理简单描述
v-model主要提供了两个功能,view层输入值影响data的属性值,data属性值发生改变会更新view层的数值变化
具体的语法如下:
这样当我们用户输入内容后,输入的内容就可以绑定到name上,后面直接使用就行了。
下面来对比下@input和v-model的代码
可以发现v-model比着@input,很明显的节省了一步定义函数getname,所以这里推荐大家使用v-model来获取input输入内容。
另外,v-model 还可以用于各种不同类型的输入数据的获取,用于在表单类元素(单选、多选、下拉选择、输入框等)上双向绑定数据,后面学习中用到我会再做具体讲解。
我们有时候用点击事件,需要把当前页面上的数据作为参数传递给函数的。比如我从新闻列表页点击其中一篇文章,然后进入新闻详情页,这个时候我们就需要把文章id传递给函数,然后再继续携带到详情页,通过这个id来请求对应的新闻详情。
事件传参
的语法如下
@click="事件名(参数)
我们先来看简单的参数传递,我这里随便传递一个字符串试下
点击后可以打印出来参数
回到我们前面的那个新闻列表,我们增加下点击事件,并且传递参数
我们点击不同的文章,可以看到打印出不同的id
我们也可以同时传递多个属性值,比如我们传递id和标题
可以看到我们可以同时传递id和标题,并且打印出来。
当然有的同学可能想直接把对象作为参数传递,这样我们就可以想用那个数据就直接使用那个数据了
可以看到我们把整个item作为参数传递了,这样我们想打印id和img就可以直接使用了。
有时候我们要用到event做一些调试比对的工作,那么我们该怎么传递event呢,如下图所示。
Vue.js 是一个流行的前端JavaScript框架,它提供了两种主要的API设计模式:选项式(Options API)和组合式(Composition API)。这两种模式在Vue 3中并存,允许开发者根据自己的喜好和项目需求选择使用。
选项式(Options API)
选项式API是Vue 2和Vue 3中的传统方式,它通过组件的选项对象来组织组件的逻辑。这个选项对象包含了组件的各种配置,如数据(data)、方法(methods)、生命周期钩子(lifecycle hooks)、计算属性(computed properties)、侦听器(watchers)等。
特点:
示例:
export default { data() { return { count: 0 }; }, methods: { increment() { this.count++; } }, computed: { doubledCount() { return this.count * 2; } }, watch: { count(newValue) { console.log(`Count changed to: ${newValue}`); } } };
组合式(Composition API)
组合式API是Vue 3引入的新特性,它提供了一种新的方式来组织组件逻辑。组合式API通过一组函数来组合组件的逻辑,使得状态和逻辑可以更容易地复用和组织。
特点:
setup
函数,开发者可以更容易地复用组件逻辑。setup
函数中定义,这有助于保持组件的整洁和组织性。示例:
import { ref, computed, watch } from 'vue'; export default { setup() { const count = ref(0); const doubledCount = computed(() => count.value * 2); watch(count, (newValue) => { console.log(`Count changed to: ${newValue}`); }); function increment() { count.value++; } // 暴露给模板的响应式属性和方法 return { count, doubledCount, increment }; } };
区别和联系
setup
函数中。setup
函数提供了更好的逻辑复用机制。总的来说,选项式API和组合式API提供了不同的组织和复用组件逻辑的方式。选项式API适合快速开发和小型项目,而组合式API则更适合大型项目和需要高度复用逻辑的场景。开发者可以根据个人喜好和项目需求灵活选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。