从零学习Vue - 02模板语法、el与data两种写法、mvvm模型、数据代理
root容器里的代码被称为模板,有了模板会有特殊的模板语法。Vue模板中语法有两大类,一类是插值语法,另一类是指令语法。
插值语法
功能:用于解析标签体内容。写法:{{xxx}},xxx为js表达式,且可以直接读取到data中的所有属性。
由两个大括号引用Vue实例中定义的data数据,在Vue实例进行解析扫描时会检查到他的模板语法,从而根据模板语法继续宁解析,后形成正常的html片段执行。下面代码页面会显示 你好,jack。
<!-- 准备一个容器 --><div id="root"><h1>插值语法</h1><h3>你好,{{name}}</h3></div><script type="text/javascript">new Vue({el: '#root',data: {name: 'jack'}})</script>
指令语法 v-bind
作用:用于解析标签(标签属性、标签体内容、标签体内容、绑定事件...)。
v-bind: 单向绑定,添加v-bind指令,后面的属性会被当做js表达式去执行。v-bind可以动态的给所有标签属性去绑定值。 简写形式:可以简写为冒号 “:” 。 插值语法往往指定标签体内容,
如果data中的key重复,可以在data中以层级关系定义。下面name重复,我们可以将其中一个name定义到下一个层级,避免重复引起冲突。如果重复,则会以最后定义的属性为准。
<!-- 准备一个容器 --><div id="root"><h1>插值语法</h1><h3>你好,{{ name }}</h3><hr><h1>指令语法</h1><a :href='school.url'>点我去{{ school.name }}学习1</a></div><script type="text/javascript">new Vue({el: '#root',data: {name: 'jack',school: {name: 'biadu',url: 'http://www.baidu.com'}}})</script>
数据绑定
单向数据绑定:通过v-bind绑定的数据只会与data中定义的数据进行同步,如果修改页面中的数据则不会改变原本的数据。数据仅能从data流向页面。
双向数据绑定:通过v-model:value,可以双向修改。v-model只能应用在输入类元素中,因为需要用户输入数据进行交互。简写为v-mode。
<!-- 创建一个容器 --><div id="root">单向数据绑定:<input type="text" :value="msg1"><br>双向数据绑定:<input type="text" v-model="msg2"></div><script type="text/javascript">new new Vue({el: '#root',data: {msg1: '单向数据绑定',msg2: '双向数据绑定'}})</script>
解析流程:容器中所写的模板交给vue实例,通过vue实例对语法的解析后,将其挂载(放到)到页面的指定位置。
el与data的两种写法
第一种方法,普通写法。
<!-- 创建一个容器 --><div id="root"><h1>hello, {{ name }}</h1></div><!-- el两种写法 --><script type="text/javascript">new Vue({el: '#root', // el第一钟方法data: { // data第一种写法 对象式name: '世界'}})</script>
第二种写法,函数式挂载,容器中所写的模板交给vue实例,通过vue实例对语法的解析后,将其挂载(放到)到页面的指定位置。
<!-- 创建一个容器 --><div id="root"><h1>hello, {{ name }}</h1></div><!-- el两种写法 --><script type="text/javascript">const v = new Vue({data:function() { // data第二种写法 函数式return {name: 'shijie'}}})console.log(v)v.$mount('#root') // el第二种方法 mount - 挂载、镶嵌 </script>
MVVM模型
<!-- M:模型(Model) - 对应data中的数据V:视图(View) - 模板VM:视图模型(ViewModel) - Vue实例对象-->
VM负责V与M中数据传递与解析的工作,也就是前面说了很多次的流程。容器中所写的模板交给vue实例,通过vue实例对语法的解析后,将其挂载(放到)到页面的指定位置。
数据代理
Object.defineProperty方法回顾
该方法可以为一个对象添加属性,如果一个对象person中有两个属性分别为name与age,那么我们可以使用这个方法在对象中添加一个新的属性sex。
let person = {name: '孙笑川',age: '38'}Object.defineProperty(person, 'sex', {value: '男', // sex属性不可被枚举 不能被添加遍历enumerable: true, // 默认为false不可枚举 true表示可被枚举但不可以在网页控制台修改writable: true, // 可被控制台修改数据,默认为falseconfigurable: true // 控制属性是否可以被删除 默认为false}})
这样添加console.log(person)后,可以在网页中查找到崭新的属性sex,但是不能被修改。这个时候我们需要拿出get和set方法来完成对属性数据的查找和修改。
<script type="text/javascript">let msg = '孙狗'let person = {name: '孙笑川',age: '38'}Object.defineProperty(person, 'sex', {// 当有人读取person的sex属性时,get函数(getter)就会被调用,且return就是sex的值。get:function() {return msg},// 当有人修改person的sex属性时,set函数(setter)就会被调用,且会受到修改的具体值。set(value) {msg = value}})console.log(person) // {name: '孙笑川', age: '38', sex: '男'}console.log(Object.keys(person)) // 遍历 ['name', 'age'] 无sex的key
这样的话我们就可以修改并得到数据的具体信息了。
数据代理
通过一个对象代理对另一个对象中的属性进行操作。(读/写)
<script type="text/javascript">let obj1 = {x:100}let obj2 = {y:200}Object.defineProperty(obj2, 'x', {get() {return obj1.x},set(value) {obj1.x = value}})console.log(obj1)console.log(obj2)</script>
这样我们就可以通过obj2来操作obj1里的x属性了。
Vue中的数据代理
从零学习Vue - 02模板语法、el与data两种写法、mvvm模型、数据代理相关推荐
- java202302java学习笔记第十五天-罗马数字的两种写法2
- Vue2基础-el与data的两种写法(HTML版)
目录 一.el的2种写法 二.data的2种写法 三. 一个重要的原则 Vue2基础全套教程合集:点击跳转 Vue2高级全套教程合集:点击跳转 一.el的2种写法 new Vue时候配置 ...
- Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件
Vue2学习笔记:第一章 一.初识Vue 1. Vue的特点 2. Vue实例中的el和data 3.总结 二.模板语法 1.插值语法 2.指令语法 三.数据绑定 1.单向数据绑定(v-bind) 2 ...
- Vue的模板语法及案例
文章目录 前言 一.双大括号表达式 二.插值 2.1文本 2.2 原始 HTML 2.3 特性 2.4 javascript 表达式 三.指令 3.1 参数 3.2 动态参数 3.3 修饰符 四.指令 ...
- [vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解
[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解 模板引擎: 负责组装数据,以另外一种形式或外观展现数据. 优点: 可维护性(后期改起来方便): 可扩展性(想要 ...
- 【Vue】—Vue的模板语法
[Vue]-Vue的模板语法 在template中写HTML时,如果需要渲染变量或者表达式,可以使用{{ }}形式来渲染,这个{{ }}就是模板语法,可以把变量或者表达式的结果渲染出来. 模板语法渲染 ...
- C语言从零学习笔记02
Day02 目录 C语言从零学习笔记02 一.初识C语言 二.第一个C语言程序 三.代码上传Gitee 四.数据类型 这只是一篇新手个人学习笔记,其中不可避免出现理解不深不透,仅以督促自身及记录,如有 ...
- (五)Vue之data与el的两种写法
文章目录 el的两种写法 data的两种写法 Vue学习目录 上一篇:(四)Vue之数据绑定 下一篇:(六)Vue之MVVC 容器: <div id="root">&l ...
- Vue el和data的两种写法
1.5 el 与 data的两种写法 el 有两种写法 1.创建Vue实例对象的时候配置el属性 2.先创建Vue实例,随后再通过vm.$mount('#root')指定 el 的值 data 有两种 ...
最新文章
- 2021年大数据Hadoop(三):Hadoop国内外应用
- “诺奖风向标”--2020年斯隆研究奖公布,其中有16位华人学者获奖!
- nsswitch.conf文件详解
- [原创] 浅谈ETL系统架构如何测试?
- 这才是智能手表该有的样子 HUAWEI WATCH 2评测
- micropython esp32手册_使用ESP32控制板(二):燒錄MicroPython韌體
- html原生上传,一个基于HTML5及原生JS的文件上传组件--JohnUploader
- python取数字第一位数_python基础:8.切片和缩进
- es6 Generator.prototype.throw()方法
- 「HAOI2018」染色 解题报告
- 第三:Pycharm中安装Python依赖包(非常详细)
- 不想“被out”?来看看现在的开发者都在做什么
- 使用docker安装easy-mock
- python+django天天生鲜超市购物系统
- 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接(网页认证)
- android 各国时区
- vue 添加滚动条 横向 竖向
- 学校的校园景点平面图(校园景点迷你地图C++数据结构)
- 华为鸿蒙系统p50,华为p50自带鸿蒙是什么意思_华为p50是鸿蒙系统吗
- 游戏百科选择题小测试,就算你是游戏大神也不一定全做对