1.el与mount
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>el与data的两种写法</title> <!-- 引入Vue --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //el的两种写法 const v = new Vue({ el:'#root', //第一种写法 data:{ name:'xgc' } }) console.log(v) </script> </html>
我们可以通过控制台输出实例对象。可以看到控制输出的Vue实例。
以$开头的,我们都可以使用,后期我们会讲解到。
我们往下滑找到proto,里面有个mount。
下面进行演示:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>el与data的两种写法</title> <!-- 引入Vue --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //el的两种写法 const v = new Vue({ //el:'#root', //第一种写法 data:{ name:'xgc' } }) console.log(v) v.$mount('#root') //第二种写法 </script> </html>
我们通过注释掉el,我们使用
v.$mount('#root')
也可以指定容器。
第二种更加灵活
如果现在有个需求:需要等待2秒钟,将Vue实例与容器绑定。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>el与data的两种写法</title> <!-- 引入Vue --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //el的两种写法 const v = new Vue({ //el:'#root', //第一种写法 data:{ name:'xgc' } }) console.log(v) //延迟两秒钟 setTimeout(() =>{ v.$mount('#root') },2000); </script> </html>
我们保存代码以后。可以看到通过两秒以后才会容器绑定然后渲染。
2.data的对象式与函数式
对象式其实就是我们一开始的那种写法,在此就不过多赘述了。
函数式:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>el与data的两种写法</title> <!-- 引入Vue --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //data的两种写法 /*new Vue({ el:'#root', //data的第一种写法:对象式 /* data:{ name:'xgc' } */ //data的第二种写法:函数式 data(){ console.log('@@@',this) //此处的this是Vue实例对象 return{ name:'xgc' } } }) </script> </html>
通过代码的consloe输出后中的this是Vue实例对象。
我们修改下,修改成箭头函数看一下输出内容。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>el与data的两种写法</title> <!-- 引入Vue --> <script type="text/javascript" src="../js/vue.js"></script> </head> <body> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //data的两种写法 /*new Vue({ el:'#root', //data的第一种写法:对象式 /* data:{ name:'xgc' } */ //data的第二种写法:函数式 data:()=>{ console.log('@@@',this) //此处的this是Vue实例对象 return{ name:'xgc' } } }) </script> </html>
通过箭头代码的consloe输出后中的this是全局的Window。
2.总结
data与el的2种写法
1.el有2种写法
(1).new Vue时候配置el属性。
(2).先创建Vue实例,随后再通过vm.$mount('#root')指定el的值。
2.data有2种写法
(1).对象式
(2).函数式
如何选择:目前哪种写法都可以,以后学习到组件时,data必须使用函数式,否则会报错。
3.一个重要的原则:
由Vue管理的函数,一定不要写箭头函数,一旦写了箭头函数,this就不再是Vue实例了。
<!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管理的函数,一定不要写箭头函数,一旦写了箭头函数,this就不再是Vue实例了。 --> <!-- 准备好一个容器--> <div id="root"> <h1>你好,{{name}}</h1> </div> </body> <script type="text/javascript"> Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。 //el的两种写法 /*const v = new Vue({ //el:'#root', //第一种写法 data:{ name:'xgc' } }) console.log(v) setTimeout(() =>{ v.$mount('#root') },2000);*/ //v.$mount('#root') //第二种写法 //data的两种写法 new Vue({ el:'#root', //data的第一种写法:对象式 /* data:{ name:'xgc' } */ //data的第二种写法:函数式 data(){ console.log('@@@',this) //此处的this是Vue实例对象 return{ name:'xgc' } } }) </script> </html>