day41vue第一天
vue 的深度原型链 (尤大神的原型链因公用)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
vue原理学习
</div>
</body>
<script>
function vue(option) {
this.$data = option.data
this._data = option.data
this.$el = document.querySelector(option.el)
}
vue.prototype.$delete = function $delete() {
console.log('共有属性 delete能力')
}
vue.prototype.$destroy = function $estroy() {
console.log("共有属性 destroy 能力")
}
vue.prototype.$emit = function $emit() {
console.log("共有属性 emit 能力")
}
vue.prototype.$forceUpdate = function $forceUpdate() {
console.log("共有属性 forceUpdate 能力")
}
vue.prototype.$mount = function $mount() {
console.log("共有属性 mount 能力")
}
vue.prototype.$nextTick = function $nextTick() {
console.log("共有属性 nextTick 能力")
}
var vm = new vue({
el: '#app',
data: {
msg: '你好世界1111',
}
})
console.log(vm)
</script>
</html>
v-text v-html 两个vue 提供的指令
知识点
1 v-html
解析数据中的html代码,渲染到页面中
2 v-text
作用和Mustache 胡子语法比较相似:都是用于将数据显示在界面中
3 网络安全 XSS攻击
XSS攻击全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中,是一种病毒代码寻找宿主的注入攻击。
7 v-pre vue 指令
v-pre
v-pre用于跳过这个元素和它子元素的编译过程,用于显示原本的Mustache语法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<div id="app">
{{msg}}
{{msg}}
{{msg}}
{{msg}}
{{msg}}
{{msg}}
{{msg}}
{{msg}}
{{msg}}
<h1 v-pre>
{{msg}}
</h1>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'你好世界 ',
}
})
console.log(vm)
</script>
</body>
</html>
8 v-once 指令
该指令后面不需要跟任何表达 该指令表示元素只渲染一次,不会随着数据的改变而改变。
<h2 v-once>{{message}}</h2>
v-once 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用
1 用于优化更新性能和总要数据的首次渲染 二次渲染自动放弃还可以优化性能。
2 一个答题网站 用户的最终分数 这样的话别的程序员万一误操作改动 也能显示初始状态
使用思想
v-once 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<div id="app">
<h1 v-once>{{msg}}</h1>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'你好世界 你好吗',
msg2:'11111',
msg3:'11111',
}
})
console.log(vm._data.msg)
vm._data.msg = 'dsfsdfsdfsdff'
console.log('this',this)
</script>
</body>
</html>
9 v-bind 指令
之前学到都是div 或者h1 p 标签等 肚子里面的插值表达式和数据的关系 data变了 {{}} 就变 的使用方式
但是 前端编程中不仅仅有这个 还有属性的动态变化
数据视图改变可不仅仅存在于插值表达式 在项目中属性也要遵守VUE的数据视图的 MVVM的绑定规则,力与维护和开发
温故而知新的知识 二阶段 我们是如何改变属性 以及缺点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a id="a" title="上海卫视" href="#">aaaaa</a>
<a id="b" title="上海卫视" href="#">aaaaa</a>
<a id="c" title="上海卫视" href="#">aaaaa</a>
<a id="d" title="上海卫视" href="#">aaaaa</a>
<a id="e" title="上海卫视" href="#">aaaaa</a>
<a id="f" title="上海卫视" href="#">aaaaa</a>
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('a').title='广州卫视';" />
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('b').title='广州卫视';" />
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('c').title='广州卫视';" />
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('d').title='广州卫视';" />
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('e').title='广州卫视';" />
<input type="button" value="changeTitle" onclick="javascript:document.getElementById('f').title='广州卫视';" />
</body>
</html>
v-bind绑定属性
1.v-bind介绍
- 前面我们学习的指令主要作用是将值插入到我们模板的内容当中。
- 但是,除了内容需要动态来决定外,某些属性们也希望动态来绑定。
- 作用:可以给html元素或者组件动态地绑定一个或多个特性,例如动态绑定style和class
- 比如动态绑定a元素的href属性
- 比如动态绑定img元素的src属性
- 这个时候,我们可以使用v-bind指令:
- 作用:动态绑定属性
- 缩写: :
- 预期:any (with argument) | Object (without argument)
- 参数:attrOrProp (optional)
1 新手学v-bind的时候 首先要有一种强烈的意识 v-bind 要干变量
一、v-bind 初理解之绑定变量
v-bind它是一个 vue 指令,用于绑定 html 属性,如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<div id="app">
<p v-bind:title="t1">今天天气很热 气温很高</p>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
t1: '天气新闻'
}
})
</script>
</body>
</html>
五 v-bind绑定样式 对象模式
v-bind绑定样式极大的方便了操作程序的样式动态变化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div>
<div id="app">
<div v-bind:style="{ color: activeColor ,background:activeColor2 }">样式</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
activeColor: 'green',
activeColor2:'skyblue'
}
})
</script>
</body>
</html>
五 v-bind绑定样式 数组模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<div>
<div id="app">
<div v-bind:style="[baseStyles, newstyles]">多样式绑定</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
baseStyles: {
color: 'green',
fontSize: '60px'
},
newstyles: {
background: 'orange',
fontWeight:700
}
}
})
</script>
</body>
</html>
10 v-on 指令 监听指令 click点击事件为最常用的监听
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<div id="app">
<button v-on:click='num++'>
{{msg}} +
</button>
<button v-on:click='aaa'>
{{msg}} -
</button>
<h1>
{{num}}
</h1>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'你好世界',
num:0
},
methods:{
aaa() {
console.log('aaaa')
// this.num++
// this._data.num++
this.$data.num--
}
}
})
</script>
</body>
</html>
浙公网安备 33010602011771号