深入理解Vue的组建注册之new Vue({}).$mount(‘#app‘)

1.先看一段官方Vue组件实例,再逐步加以分析

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <div>
    <h1>Hello App!</h1>
  </div>
</div>


<script>
//1注册一个Vue组件
Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})
//2创建一个Vue实例
new Vue({
	//3.将Vue实例挂载到id为‘app’的dom元素上
  el:'#app'
})
</script>

1注册一个Vue组件

1.1什么是组件?,注册组件是什么意思?
	官方文档说明:组件是可以复用的Vue实例;--我觉得更准确的应该是:组件是Vue相关类
	
	注册组件类比注册京东会员-把手机号(组件)绑定到京东上(Vue相关类)
		什么是组件?--组件是Vue相关类
		什么是Vue相关类?
			--Vue父类和它的子类如:const sonVue=Vue.extend({
			data:function(){return {}},
			template:'<div id="hello"/>'})

	那最后注册组件岂不是变成了:把手机号(Vue相关类)绑定到京东上(Vue相关类),我觉得这样理解是对的接着下面分析
1.2注册组件的几种方式
	Vue.extend({})--获取一个Vue的子类(相关类)
	Vue.component('别名',相关类)----将相关类注册给Vue这个具体类
	官方原文:https://cn.vuejs.org/v2/api/#Vue-component
// 注册组件,传入一个扩展过的构造器
Vue.component('my-component', Vue.extend({ /* ... */ }))

// 注册组件,传入一个选项对象 (自动调用 Vue.extend)
Vue.component('my-component', { /* ... */ })

// 获取注册的组件 (始终返回构造器)
var MyComponent = Vue.component('my-component')
1.3创建模板的几种方式
//1.直接在js中写template
const myVue=Vue.extend({
  data:function(){
    return{
      count:0
    }
  },
  template:'<div id="myVue"><my-vue2/><button @click="count++"> you clicked me {{count}} times.</button></div>'
})
//2.使用<script type="text/x-template"形式
<script type="text/x-template" id="count">
	<button @click="count++"> you clicked me {{count}} times.</button>
</script>
<script>
const myVue=Vue.extend({
  data:function(){
    return{
      count:0
    }
  },
  template:'#count'
</script>
//3.利用reder函数
const myVue=Vue.extend({
    render:function(createElement){
      return createElement(
        'h'+this.level,//标签名
          this.$slots.default//数据内容
      )
    },
    props:{
      level:{
        type:Number,
        required:true
      }
    }
  })

2.1创建一个Vue实例

new Vue()--代码看起来简单其实很难理解

1.创建的时候检测是否有挂在点:如果没有啥都不干
2.有了挂在点之后,检测当前Vue中是否有template属性:
		如果有就直接将template中的内容替换掉挂载点的内容
		如果没有,测将挂在点的Dom元素添加进内置template中(将挂载点作为自己的template内容)
例1<div id="app">
  <div>
    <h1>Hello App!</h1>
  </div>
</div>
new Vue({
  el:'#app',
  template:"<div id='tihuan'/>"
})

页面解析的dom元素:
	<body>
		<div id='tihuan'/>
	</body>2<div id="app">
  <div>
    <h1>Hello App!</h1>
  </div>
</div>
new Vue({
  el:'#app'
})

页面解析的dom元素:
	<body>
		<div id="app">
  			<div>
    			<h1>Hello App!</h1>
  			</div>
		</div>
	</body>

2.2创建一个Vue相关类的实例

//得到一个Vue子类myVue
const myVue=Vue.extend({
  data:function(){
    return{
      count:0
    }
  },
  template:'<div id="myVue"><my-vue2/><button @click="count++"> you clicked me {{count}} times.</button></div>'
})
//得到一个Vue子类myVue2
const myVue2=Vue.extend({
  data:function(){
    return{
      count:0
    }
  },
  template:'<div id="myVue2"><button @click="count++"> you clicked me {{count}} times.</button></div>'
})

//将myVue2注册给myVue并且别名:myVue2
//注册完后可以在myVue的template中使用myVue2
myVue.component('myVue2',myVue2)

//创建myVue实例并挂在到‘app上’
const myVueInstance=new myVue({
 	el:'#app'
 })

3.将Vue实例挂载到id为‘app’的dom元素上
	
```javascript
挂载的方式有两种:写法不用效果一样
new Vue({
el:'#app'
})

new Vue({}).$mount('#app')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值