第一章、Vue核心
1.1、初始Vue
<div id="root"></div> 是一个容器,容器中写的不是原始的html代码,而是Vue的模板代码- 所谓的模板代码,就是html+js的结合体
- {{xxx}} xxx会自动读取data中的xxx属性
- 一个Vue实例只能服务于一个容器
<body>
<div id="root">
<h1>{{school.message}}</h1>
<h1>我就读于{{school.name}}</h1>
<h1>这所学校位于{{school.address}}</h1>
<h1>我学习的专业是{{school.subject()}}</h1>
<hr>
<h1>{{school.name,school.subject}}</h1>
<h1>{{school.message && school.address}}</h1>
</div>
<script src="../js/vue.js"></script>
<script>
new Vue({
el: '#root',
data: {
school: {
message: '大家好,我叫even',
name: '家里蹲大学',
address: '中国家里蹲省',
subject: () => '网络编程',
}
}
});
</script>
</body>
1.2、Vue中的模板语法
- 插值语法
- 功能:用于解析标签体内的内容
- 语法:{{xxx}}会作为表达式去解析,且可以自动读取到data里面的xxx属性
- 指令语法
- 功能:用于解析标签「包括:标签属性、标签内容、事件绑定…」
- 举例:v-bind:href=“xxx” 或简写为:
:
<body>
<div id="root">
<h1>{{message}}</h1>
<h1>{{message.toUpperCase()}}</h1>
<hr>
<h2>指令语法</h2>
<a v-bind:href="url">百度一下哦</a>
<a :href="url">点我看猫猫</a>
</div>
<script src="../js/vue.js"></script>
<script>
new Vue({
el: '#root',
data: {
message: 'kele',
url: 'http://www.baidu.com'
}
});
</script>
</body>
1.3、Vue中的数据绑定
- 单向数据绑定(v-bind): 数据只能从data流向页面
- 双向数据绑定(v-model): 数据不仅可以从data流向页面,也可以从页面流向data
- 注意:
- 双向数据绑定一般都是针对有value属性且可以输入内容的,例如:
<input><select><textarea> 等 - v-model:value 可以简写为v-model 因为v-model默认收集的就是value值
<body>
<div id="root">
<p>
单项数据绑定(v-bind):<input type="text" v-bind:value='message'>
</p>
<p>
双向数据绑定(v-model):<input type="text" v-model='message'>
</p>
</div>
<script src="../js/vue.js"></script>
<script>
new Vue({
el: '#root',
data: {
message: '数据绑定'
}
});
</script>
</body>
1.4、初始MVVM
注意:MVVM采用的是双向数据绑定(data-binding)所有数据之间的通信都是双向的
- M:模型 Model,对应data中的数据
- V:视图 View,对应模板代码
- VM:视图模型ViewModel,对应Vue实例对象。它是 View 层和 Model 层沟通的桥梁,一方面实现了数据绑定(Data Binding),将 Model 层的数据改变实时的反应到 View 层中。另一方面它实现了对 文档对象模型的监听(DOM Listener),当DOM发生一些事件(点击,滚动,touch等)时,可以监听,并在需要的情况下改变对应的 Model 层的数据。
<body>
<div id="root">
<h2>{{message}},天天向上</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const vm = new Vue({
el: '#root',
data: {
message: '好好学习',
}
});
setTimeout(function () {
console.log(vm.message);
vm.message = '天天向上';
}, 1000);
</script>
</body>
|