vue.js再学习
邓瑞编程
理解
等到我真正去做前后端分离开开发我才知道,vue的作用是什么
vue到底做什么
前后端分离开发,后端只提供数据的json串,前端页面运行在服务武器上,静态资源那里
前端需要操作页面结构,将数据显示在页面上
传统的js操作html非常困难
所以vue要是实现的就是取代jsp功能,并且提供html页面间传递值的功能
创建一个vue应用
使用vue.js文件,来渲染一个html页面
引入js文件
CDN文件
1 |
|
或者下载到本地,然后引用本地的文件,这样会快一点
模块化开发
如果想使用ES6的模块开发,可以引入这个文件,但是有些浏览器,或者框架并不支持模块化开发
1 |
|
在模块化开发的时候必须将页面运行在服务器上才能正常使用(而传统模式开发本地路径访问即可正常显示)
如何渲染
vue应用应该有两部分,一部分是视图部分,这部分包括固定的html标签和vue的模版标签,可以通过这些查到可视化界面结构
一部分就是控制部分,这部分界面控制数据,与后端做交互,和视图做交互,以及做逻辑控制
所以对vue的知识也基本上可以分为这两种
控制部分
建立联系
控制部分需要和视图模版建立联系,通过下面的代码
1 |
|
其中createApp的参数实际上是一个对象,
setup()方法
在开始渲染视图的时候,vue会去传入的对象中调用setup()方法来获得一个对象,使用将这个对象中的对应数据解析到视图中去
所以我们需要传入一个setup()方法
1 |
|
控制部分语法
ref和reactive方法
在vue中,往往需要双向控制, 当控制部分的变量变化,渲染随之响应变化,当渲染部分主动改变,控制部分的变量也要响应变化
所以将变量和渲染双向联系的需要就是ref和reactive的工作
reactive()
适用于复杂的数据类型,reactive()改造后的数据结构基本没有变化
例如
1 |
|
ref()
适用于存储单个基本类型的值,例如数字,字符串等
实际上是将单个基本类型值存储到了一个对象中,这个对象中的value属性
1 |
|
必须要使用对象.value来访问和修改值
视图部分语法
视图部分也就是在html标签上的语法,实际上就是标识符,供控制部分理解
比较常用的有v-bind 文本插值 v-on
数据流方向 从控制层到视图
v-bind
文本插值 {{ }}
v-on
v-show
v-if (比v-show更加彻底,不渲染,在最终html标签都不会显示,相当于动态文本)
都是使得视图中的标识符被渲染为控制层的数据
v-for
v-bind:title 和v-bind:key 属于vue的标签,一个是鼠标放上显示提示单词,一个是设置唯一key加速渲染
数据流方向 从视图层到控制层
v-model
不同的标签,v-model所表示的标签值不同
例如input标签,v-model表示的是文本框中的内容
某些可能需要自己设置标签的value值,例如单选框,设置这个单选框的值
对于复选框,可以选中多个值,这个时候v-model中的控制层的变量就应该是一个数组才行
v-model修饰符
v-model还有一些更详细的功能
v-model默认是实时渲染修改,例子就是input中value的change,绑定的值也随之change
有时候我们不需要这么灵敏的响应,我们只需要在确认(或者失去焦点)之后再修改
v-model.lazy
还有一些修饰符,例如v-model.trim 可以去除来自视图修改的value的前后空格
详细标签
v-text和v-html
这两个标签实际上是为了应对不同的情况设计的
有些坏人,故意传递html标签格式的文本进来,当我们进行展示的时侯如果进行了解析,会被入侵这个时候使用v-text来设置显示文本,就可以保证安全
而v-html可以更加灵活的渲染
文本插值默认是不解析的相当于 v-text
高级语法
计算属性compute
也就是这个属性受到其他值的影响
有几种方式来得到计算属性
- 要用的时候马上计算
- 当计算属性发生改变的时候计算新的值,没变换直接引用不用计算
这里要讲的就是第二种,高性能的使用方式,第一种我们自己设计一个函数直接调用访问即可
1 |
|
注意这里返回的是一个值,而不是一个方法,所以在访问的时候不要加括号
当计算属性所依赖的响应式数据发生变化,计算属性的值会被重新计算
侦听器watch
我们知道,数据可以从视图流向控制层
当这个过程发生的时候,我们的watch就可以发现,并随之进行操作
和js的响应事件相比,侦听器它监听的是响应值的变化,而响应事件更多的是对标签的变化检测
所以侦听器更适用于控制层的设计
监听对象,实际上是为对象中的所有属性创建了监听,叫做深层监听
监听函数实际上是监听函数的返回值是否变化
如果函数返回的对象引用没变,即使对象中的值变了也不会触发监听
所以引用数据的监听是监听引用地址,而不是引用地址指向的内存中的值
1 |
|
监听对象中的某个属性
1 |
|
自动监听watchEffect
1 |
|
Vite前端构建工具
类似于maven这种,管理前端页面的,甚至是springboot自带服务器
使用vite需要安装node.js
然后使用npm create vite@latest
然后选择javascript
cd 项目目录
npm install
npm run dev
就可以使用自带的服务器运行这个前端项目
组件模式
使用框架搭建的方式,一般都是由很多的组件组成
index.html是最前面的界面
导入了一个main.js
main.js实际上导入了App.vue中的对象APP
1 |
|
所以实际上的控制在APP.vue文件中
vue文件
vue支持一种组件式开发的方式,以.vue结尾的文件就是这种开发方式的载体
每个文件中包含