<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> {{msg}} </div> <script src="vue.js"></script> <script> //如果仅仅是实例化vue对象, 既有el又有template,如果template中定义模板内容 //那么template模板的优先级大于el // 首先是有一个 APP根组件, 下面有三个子组件:header, aside, content //第一步: 声子 Vue中组件的首字母要大写, 跟标签区分 //组件中的data必须是个函数,一定要有返回值 let App = { //跟的是一个对象 这个对象里 就是除了下面的Vue中,el以外的所有属性 data() { return {text: "我是子组件"} }, //第四步: 给子组件里写内容. 当前模板里的标签,只用当前数据属性跟下面的根组件Vue没有关系 //在<h2>{{text}}</h2>中的{{text}}部分可以放头部组件,内容组件和侧边栏组件 ************ template: ` <div id="a"> <h2>{{text}}</h2> </div> `, //给子组件定义方法 比如说a标签的超链接 methods:{ }, } new Vue({ el: "#app", //绑定的是上面的id="app" data() { return {msg: "alex"} }, //与生命周期有关 //用模板字符串 //定义模板 // 第三步:用子 把<App />写下面就是 用子 但是里面的内容需要写到上面子组件里App里 // template可以不用写 但是要挂载到 el上去 template: ` <div class="app"> <App><App/> </div> `, components: { // 第二步: 挂子 父组件Vue里不仅是可以挂载一个App,还可以挂载其他组件 App //如果key和value一样,可以只写App 替代App:App } }) </script> </body> </html>
局部组件的使用更改 以及全局组件的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <App></App> </div> <script src="vue.js"></script> <script> //如果仅仅是实例化vue对象, 既有el又有template,如果template中定义模板内容 //那么template模板的优先级大于el // 全局组件 *** 第一个参数是组件的名字,第二个参数是options // 全局组件声明之后,可以再任意的组件里使用, 放到别的组件之后,就成了别的组件的子组件了 // 使用内置组件slot进行分发 让让别的组件中的Vbtn按钮显示不同的名称 ****** Vue.component("Vbtn",{ data(){ return {}}, template:`<button><slot>按钮</slot></button> `, }) // 首先是有一个 APP根组件, 下面有三个子组件:header, aside, content //子组件2 //第一步:生子2 挂子往App里挂, 不需要挂Vue里 let Vheader = {//对象 data(){ return {} }, //template 是一个组件模板,一定要用一个根(父)元素包裹起来,所以一定要有一个div闭合**** template:` <div> <h2>生子是在子组件中</h2> <h2 style="color:red">挂子和用子是在父组件中</h2> <Vbtn></Vbtn> </div> `, } //第一步: 声子 Vue中组件的首字母要大写, 跟标签区分 //组件中的data必须是个函数,一定要有返回值 let App = { //跟的是一个对象 这个对象里 就是除了下面的Vue中,el以外的所有属性 data() { return {text: "我是子组件"} }, //第四步: 给子组件里写内容. 当前模板里的标签,只用当前数据属性跟下面的根组件Vue没有关系 //在<h2>{{text}}</h2>中的{{text}}部分可以放头部组件,内容组件和侧边栏组件 ************ // 第三步:用子2 <Vheader></Vheader>, 下一步去对应模板Vheader的template里写内容 template: ` <div id="a"> <h2>{{text}}</h2> <Vheader></Vheader> <Vbtn>登录</Vbtn> <Vbtn>注册</Vbtn> <Vbtn>提交</Vbtn> </div> `, //给子组件定义方法 比如说a标签的超链接 methods:{ }, components:{ // 第二步:挂子2 Vheader }, } new Vue({ el: "#app", //绑定根元素 是上面的id="app" data() { return {msg: "alex"} }, //根组件中 可以把template删除 直接在id = "app"的div中使用 // 子组件中的template 不能删除,因为子组件中的结构最终会渲染到id="app"的div里面<App></App> components: { // 第二步: 挂子 父组件Vue里不仅是可以挂载一个App,还可以挂载其他组件 App //如果key和value一样,可以只写App 替代App:App } }) </script> </body> </html>
原文地址:https://www.cnblogs.com/kenD/p/10050092.html
时间: 2024-11-02 12:24:08