组件,实现局部功能的资源和代码的集合。含有组件开发的应用称为组件化应用。 优点:未有组件前,耦合度高,代码复用性不高。组建后,局部js,css只对局部html负责,耦合度变低,复用性变高。 当html文件中的大的js文件,调用js文件,这个就是文件就成为模块。 Do not use built-in or reserved HTML elements as component id: use,组件名称use不能使用。
<!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>
<script src="../js/vue (1).js"></script>
<body>
<div id="app">
<use1></use1>
<button>{{msg}}</button>
<button @click="msg++">点我加1</button>
</div>
<script>
const ad= Vue.extend({
data(){
return{a:[1,2,3]}
},
template:`<ul>
<li v-for="name of a">{{name}}</li>
</ul>`,
})
const vm= new Vue({
data:{
msg:2
} ,
el:'#app',
components:{
use1:ad
}
})
</script>
</body>
</html>
组件的使用,首先是创建组件,是在使用的文件中有创建组件的构造函数,Vue.extend创造组件的构造函数。写在vm前,这个函数的参数是对象。和new Vue一样,只不过,它模板一定要写,不会去找id=’app'等,只会找template配置项,因此不写el,要在内template,创建vm实例中,写components配置项,会调用构造函数,内存有组件,将组件名字写成标签,会挂载渲染到页面。compons内,组件名字和构造函数名字。多个,json对象。不用‘’,data配置项要写函数,函数return中写json,data如果写对象,可能在父组件会改了值。你在vm实例中写的compons的组件,它渲染只能用于el所在。局部。