组件的概述:
组件是Vue框架非常重要的功能之一,它主要对HTML元素进行封装
目的是为了增加复用性,即使用Vue组件的方法对HTML中的元素进行定义
为什么使用组件:
步骤一:定义模板,对HTML标签进行自定义 步骤二:定义的模板注册到组件(全局组件) 全局组件: 一次定义,到处使用,就能解决原始HTML中代码重复的问题
组件的使用:
方式一:基本语法
1.定义模板:var tem = Vue.extend({
"template" : "定义标签,设置样式等等"
});
2.模板注册到组件中(全局组件)
Vue.component(组件名称,模板对象);
比如:Vue.component("el-buttno",tem);
方式二:基本语法
Vue.component("组件名称",{
"template":"定义标签,设置样式等等"
});
注意事项:
1.调用方法是,Vue的V必须大写
2.设置参数时,template名称是固定的
3.定义组件名称时,推荐写法一
写法一:英文单词(都小写的) - 英文单词(都小写的)
比如:el-button
写法二:英文单词(首字母大写)英文单词(首大) 大驼峰命名法
比如:ElButton
写法三:英文单词(首字母小写)英文单词(首字母大写) 小驼峰命名法
比如:elButton
自定义标签属性:
入门一定义模板:将button标签的值写死了:自定义样式按钮
<button style='border-radius:25px;'>自定义有弧度的按钮</button>
<html>
<head>
<meta charset="utf-8">
<title>组件入门二</title>
<!-- 路径的写法:1.绝对路径 2.相对路径,同级目录,上一级目录 下一级目录 -->
<script src="../vue/vue.js" ></script>
</head>
<body>
<div id="app">
<el-button></el-button>
</div>
<script type="text/javascript">
//1.定义模板,双引号嵌套单引号,单引号嵌套双引号
var tem = Vue.extend({
"template":"<button style='border-radius: 25px;'>自定义样式按钮</button>",
});
//2.注册组件
Vue.component("el-button",tem);
Vue.component("el-button",tem);
//创建vue对象
new Vue({
"el":"#app",
});
</script>
</body>
</html>
解决入门案例一的问题:
props:
作用可以自定义组件的属性,给组件里面的标签灵活赋值
比如:<el-buttton 属性名称="赋值"> 赋值设置到组件的标签内
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>组件入门三</title>
<script src="../vue/vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<el-button title="12123"></el-button>
</div>
<script type="text/javascript">
//1.定义模板:template,props固定写法
var tem = Vue.extend({
"props":["title"],
"template":"<button style='border-radius: 25px;'>{{title}}</button>",
});
//2.组件注册:将模板绑定到自定义的组件名称
Vue.component( "el-button",tem );
//3.创建vue对象
new Vue({
"el":"#app",
});
</script>
</body>
</html>
data函数:{ }
定义模板时:properties
Vue.extend({
"props":["属性名称1","属性名称2","属性名称3",..."属性名称n",],
"template" : "html标签,设置自定义的样式等等",
"data":function(){
方法体;
},
});
props选项,给自定义组件设置多个属性
总结:
1.定义模板时,用到的选项(key)---template
作用: 定义HTML标签,自定义标签的样式等
2.定义模板时,用到选项:props
作用:通过给自定义的组件来设置属性,从而改变模板template里的标签的值
3.定义模板时,用到选项:data,(特殊data函数)
作用:通过给模板设置data函数,从而改名template里面标签的文本值
4.定义模板时,用到选项: methods.
作用:给模板里面的标签绑定的时间提供函数
案例:点击按钮改变按的值,需求:点击按钮,点一次,按钮的值+1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>组件入门三</title>
<script src="../vue/vue.js" type="text/javascript" charset="utf-8"></script>
<!-- 案例: 点击按钮,改变按的值
需求:点击按钮,点击一次值+1-->
</head>
<body>
<div id="app">
<el-button></el-button>
<font color="rgb(1,2,3)">字体哈哈哈</font><br/>
<font color='rgb(1,2,3)'>字体哈哈哈</font><br />
<font color="#654C">字体哈哈哈</font>
</div>
<script type="text/javascript">
<!-- 案例: 点击按钮,改变按的值
// 需求:点击按钮,点击一次值+1,
-->
//1.定义模板: 给模板的标签绑定点击事件
var tem = Vue.extend({
"data":function(){
return {"c":1};
},
"template":"<button style='border-radius: 25px;' @click='c++'>{{c}}</button>",
});
//2.组件注册:将模板绑定到组件名称上,实现:HTML写组件名称,显示模板
Vue.component( "el-button",tem );
//3.创建vue对象
new Vue({
"el":"#app",
});
</script>
</body>
</html>