根据千峰教育学习视频所练习的笔记 | 学习一段时间,我也有写一点东西的必要了···
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>组件</title>
<script src="../vue.js"></script>
</head>
<body>
<div id="app">
<!-- 使用自定义组件(标签)-->
<my-header></my-header>
</div>
<div id="app2">
<my-header></my-header>
</div>
<script>
<!-- 全局组件-->
<!--Vue.component定义组件,参数为组件名字,组件名字相当于我们自定义的标签-->
Vue.component('my-header',{
template:'<h2>标题</h2>'
});
<!-- template对组件进行模板替换,替换成真实的html结构-->
var vm = new Vue({
el:'#app' <!--通过id来找,具有唯一性-->
});
var vm = new Vue({
el:'#app2'
});
</script>
</body>
</html>
<div>
标签上:<div>
容器,id 为 app2,并为它创建一个实例:<body>
···
<div id="app2">
<my-header></my-header>
</div>
<script>
······
el:'#app'
});
var vm = new Vue({
el:'#app2'
});
</script>
</body>
其实这个时候,也是可以渲染出组件的:
因为这个vue组件是全局的,可以在 app 里用,也可以在 app2 里用。
除了创建全局组件之外,我们还能创建局部组件
<body>
···
<div id="app2">
<my-header></my-header>
</div>
<script>
var vm = new Vue({
el:'#app',
components: {
'my-header':{
template:'<h2>标题</h2>'
}
}
});
</script>
</body>
我们能不能让自己创建的 vue 实例里的 data 下面的属性在组件中使用呢?试一下!
<script>
var vm = new Vue({
el:'#app',
data:{
//定义成对象 message
message:'hello vue !'
},
components: {
'my-header':{
template:'<h2>标题</h2>'
}
}
});
</script>
<div>
容器中渲染 message ,页面上就出来了:<div id="app">
{{message}}
<my-header></my-header>
</div>
<div id="app2">
······
</div>
<div id="app">
<!-- {{message}} -->
<my-header></my-header>
</div>
<div id="app2">
······
</div>
<script>
var vm = new Vue({
······
components: {
'my-header':{
template:'<h2>标题{{message}}</h2>'
}
}
});
</script>
<div id="app">
<my-header></my-header>
</div>
<div id="app2">
<my-header></my-header>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
message:'hello vue !'
},
components: {
'my-header':{
template:'<h2>标题{{message}}</h2>',
//在组件中使用数据(就不能写成对象了):组件中定义function函数,并用return返回
data:function () {
return{
message:'nice to meet you'
};
}
}
}
});
</script>
根据之前的学习,我们可以知道,在组件中可以写上 template (模板)。当数据比较少的时候,是没有什么问题的,我们可以写作一行。当模板复杂起来之后,一行很长不方便阅读,我们有更好的方式对待。
如图:我想在message下面加一些列表
template:'<div><h2>{{message}}</h2><ul><li>张一山</li></ul> <ul><li>吴京</li></ul><ul><li>李现</li></ul><ul><li>肖战</li></ul></div>',
\
template:'<div> <h2>{{message}}</h2> <ul> <li>张一山</li> </ul> <ul> <li>吴京</li> </ul> <ul> <li>李现</li> </ul> <ul> <li>肖战</li> </ul> </div>',
哈哈,这样写也不太方便
template:`<div>
<h2>{{message}}</h2>
<ul>
<li>张一山</li>
</ul>
<ul>
<li>吴京</li>
</ul>
<ul>
<li>李现</li>
</ul>
<ul>
<li>肖战</li>
</ul>
</div>`,
<template>
模板标签:在HTML下面写一个<template>
标签,再把列表结构放进去。写好之后,我们可以通过id找到这个模板<body>
<div id="app">
······
</div>
<template id="temp">
<div>
······
</div>
</template>
<script>
var vm = new Vue({
el:'#app',
components:{
'my-header':{
template:'#temp',
data:function () {
return{
message: 'hello my idol'
};
}
}
}
});
</script>
</body>
<scripr type="text/x-template">
,但是一定要写type类型,不然会按js方式解析。<script type="text/x-template" id="temp">
<div>
······
</div>
</script>
<script>
······
</script>
原文:https://www.cnblogs.com/hefeifei/p/11731290.html