<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>el与data的两种写法</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
data与el的2种写法
1.el有2种写法
(1).new Vue时候配置el属性。
(2).先创建Vue实例,随后再通过vm.$mount('#root')指定el的值。
2.data有2种写法
(1).对象式
(2).函数式
如何选择:目前哪种写法都可以,以后学习到组件时,data必须使用函数式,否则会报错。
3.一个重要的原则: ★★★
由Vue管理的函数(例如:本例中的 data()),一定不要写箭头函数,一旦写了箭头函数,this就不再是Vue实例了。
-->
<!-- 准备好一个容器-->
<div id="root">
<h1>你好,</h1>
</div>
</body>
<script type="text/javascript">
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
//el 的两种写法: 用哪一种方法都可以。
/*
//第一种写法:
const v = new Vue({
//el:'#root', //el 的第一种写法: el 指定 容器.
data:{
name:'尚硅谷'
}
})
console.log(v) //此处输出的是 Vue实例 其中:输出的对象列表中 $开头的是 Vue 为程序准备好的。
v.$mount('#root') //el 的第二种写法: 通过 .$mount() 也可以指定容器.
*/
//data 的两种写法: 推荐使用第二种写法(因为将来如果使用组件方式,那么必须使用 函数式)
new Vue({
el:'#root',
//data 的第一种写法:对象式
/* data:{
name:'尚硅谷'
} */
//data 的第二种写法:函数式 ★★★。 要求:必须返回一个对象。
//data:function(){} //∈普通函数写法. 注意: 这个function(){}函数不是data调用的,而是Vue调用的。
//一般在对象中写方法,删掉function,删掉 : ,等同于下面的缩写结构:
data(){
console.log('@@@',this) //此处的this是Vue实例对象
return{
name:'尚硅谷'
}
}
})
</script>
</html>
笔记
1. 在 Vue 中 $开头的对象或变量… 的含义
上图中:
输出的对象列表中 $开头的是 Vue 为 程序员 准备好的变量。
下面不带 $开头的 是为 Vue底层函数调用的,其中 proto 是Vue的原型对象(其中 $开头的可以被我们使用)
2. data 第二种写法不能写成data:=>function(){} 的原因
因为 data:=>function(){} 属于箭头函数写法 ,而箭头函数没有自己的this,所以会往外找到全局的Window对象。