赞
踩
组件是Vue框架非常重要的功能之一,它主要对html元素进行封装,可以复用。
简单来说,使用vue组件方法对html元素进行定义。
需要在其他网页里面需要使用有弧度的按钮
在每个网页的每个按钮中,设置style=“border-radius: 10px;”
怎么解决这个问题?
vue提供的组件来解决这个问题.
步骤一:定义模板,其实对html标签进行自定义
步骤二:定义的模板注册到组件(全局组件)
全局组件:一次定义,到处使用,就能解决原始html中代码重复的问题
方式一:基本语法
1.定义模板
Vue.extend({
"template":"定义标签,设置样式等等"
});
2.模板注册到组件中(全局组件)
Vue.component(组件名称,模板对象);
//比如:
Vue.component("el-button",tem);
注意事项
调用方法时,Vue的V必须大写
设置参数时,template名称是固定的
定义组件名称时,(推荐写法一)
el-button
ElButton
elButton
自定义标签属性
<div id="app"> <el-button></el-button> <el-button></el-button> <el-button></el-button> </div> <script type="text/javascript" src="js/vue.js"></script> <script type="text/javascript"> //1.定义模板 var tem = Vue.extend({ "template":"<button style='border-radius: 10px;'>自定义样式按钮</button>" }); //2.注册组件 Vue.component("el-button",tem); //3.创建vue对象 new Vue({ "el":"#app", }); </script>
上述定义模板:将button标签直接的值写死了:定义自定义样式按钮
<button style="border-radius: 10px;">自定义样式按钮</button>
解决问题:
props:作用可以自定义组件的属性,给组件里面的标签灵活赋值,比如:
<el-button 属性名称=”赋值“></el-button>
<div id="app"> <el-button title="1111"></el-button> <el-button title="2222"></el-button> <el-button title="3333"></el-button> </div> <script type="text/javascript" src="js/vue.js"></script> <script type="text/javascript"> //1.定义模板:template,props固定写法 var tem = Vue.extend({ "props":["title"], "template":"<button style='border-radius: 10px;'>{{title}}</button>", }); //2.注册组件:将模板绑定到自定义的组件名称上 Vue.component("el-button",tem); //3.创建vue对象 new Vue({ "el":"#app", }); </script>
自定义的组件绑定事件,改变组件的文本值
//data函数
data:{}
定义模板时:
Vue.extend({
"props":["属性名称1","属性名称2",...,"属性名称3"],
"template":"html标签,设置自定义的样式等等",
"data":function(){
方法体;
},
});
总结
<script type="text/javascript"> /** * 案例:点击按钮,改变按钮的值 * 需求:点击按钮,点击一次按钮,值+1 * 思路: * 1.定义模板:给模板的标签绑定点击事件 * 在模板里面,使用data函数,定义数据count * 2.组件注册:将模板绑定到自定义的组件名称上 * */ //1.定义模板 var tem = Vue.extend({ "data":function(){ return {"number":1,}; }, "template":"<button style='border-radius: 10px;' @click=++number>{{number}} </button>", }); //2.组件注册 Vue.component("el-button",tem), //3.创建vue对象 new Vue({ "el":"#app", }); </script>
网站快速成型工具(通过ElementUI快速搭建网站)。是饿了么公司前端开发团队提供的一套基于Vue的网站组件库。
特点:
官网地址:https://element.eleme.io
总结
(非常丰富的组件库,基于Vue框架定义的)
行组件
<!--基本语法-->
<el-row>子组件1,子组件2,子组件N</el-row>
<div>
<a>
<p></p>
</a>
</div>
**特点:**让子组件在一行显示
**注意:**子组件过多,
按钮组件
<!--基本语法-->
<el-button type="属性">文本</el-button>
type属性改变按钮的样式:info,danger,warning等等
icon属性:在按钮上显示icon图标
icon图标按钮
<!--基本语法-->
<i class="属性值"></i>
class属性值不同,图标样式不一样
form表单组件
<!--基本语法-->
<el-form>
文本输入框
密码输入框
单选输入框
多选输入框
提交按钮
隐藏
</el-form>
容器组件(布局组件)
网页布局
<div id="app"> <!--布局方式一:瀑布流布局 头部区域:header 核心区域:main 底部区域:footer --> <!-- 1.容器,表示布局的范围 布局容器组件名称就是class属性的值 --> <el-container> <el-header>头部区域</el-header> <el-main>核心区域</el-main> <el-footer>底部区域</el-footer> </el-container> </div> <!--2.引入vue.js 放在element:index.js上面--> <script src="js/vue.js"></script> <!--3.引入index.js--> <script src="js/element/element-ui/lib/index.js"></script> <script> new Vue({ "el":"#app", }) </script>
<div id="app"> <!-- 1.容器,表示布局的范围 布局容器组件名称就是class属性的值 --> <el-container> <el-header>头部区域</el-header> <el-container> <el-aside style="width: 100px;">侧边区域</el-aside> <el-main>核心区域</el-main> </el-container> </el-container> </div> <!--2.引入vue.js 放在element:index.js上面--> <script src="js/vue.js"></script> <!--3.引入index.js--> <script src="js/element/element-ui/lib/index.js"></script> <script> new Vue({ "el":"#app", }) </script>
<div id="app"> <!-- 1.容器,表示布局的范围 布局容器组件名称就是class属性的值 --> <!--1.大的容器:1号容器--> <el-container> <el-header>头部区域</el-header> <!--2.中的容器:2号容器--> <el-container> <el-aside style="width: 100px;">侧边区域</el-aside> <!--3.小的容器:3号容器--> <el-container> <el-main>核心区域</el-main> <el-footer>底部区域</el-footer> </el-container> </el-container> </el-container> </div> <!--2.引入vue.js 放在element:index.js上面--> <script src="js/vue.js"></script> <!--3.引入index.js--> <script src="js/element/element-ui/lib/index.js"></script> <script> new Vue({ "el":"#app", }) </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。