1. 全局组件的注册

   - 创建根实例的时候,data可以是object,也可以是函数
- 创建组件的时候,data必须是函数 1.1 创建
         Vue.component('global-component',{
template:`
<div>
<h1>{{ hello }}</h1>
</div>
`,
data(){
return {
hello:'hello'
}
},
})
   1.2 使用
        let vm = new Vue({
el:'#app',
template:`
<global-component></global-component>
`,
})
   1.3 使用
        <div id="app">
<global-component></global-component>
</div> let vm = new Vue({
el:'#app',
})

2. 局部组件

    - data必须是函数(单体函数)
- 没有el属性
    2.1 创建局部组件  实质就是创建JavaScript object

         let Header = {
template:`
<div>{{ hello }}</div>
`,
data(){
return {
'hello':'hello',
}
},
}; 2.2 注册 2.2.1
//单独使用
new Vue({
el:'#app',
template:`<app-header></app-header>`,
components:{
'app-header':Header,
},
}); 2.2.2
//嵌套使用
let App = {
template:`
<div>111</div>
<app-header></app-header>
`,
components:{
'app-header':Header,
},
}; new Vue({
el:"#app",
template:`<App></App>`,
components:{
App,
},
});
3. 组件之间通信

    - 父子组件之间的数据 传递拥props  接受父组件的一个事件
- 子父组件之间的数据 传递拥$emit 触发父组件的一个事件 3.1 父子之间通信
   <div id="app>
...
</div> let Header = {
template:`
<div>{{ xxx }}</div>
`,
props:['xxx'],
}; let App = {
template:`
<app-header :xxx='parent-data'></app-header>
`, components:{
'app-header':Header,
},
data(){
return {
'parent-data':'父组件的数据',
}
}
}; new Vue({
el:'#app',
template: `<App></App>`,
components:{
App,
}
})
    3.2 子父组件的通信
    <div id="app">

         </div>

        let Header = {
template: `
<div>
<button @click="xxx">给父组件传递数据</button>
</div>
`,
data() {
return {
'childData': '子组件的数据'
}
},
methods: {
xxx() {
this.$emit('ooo',this.childData);
}
}
}; let App = {
template: `
<div>
<h1>父组件接受的数据---{{ childData }}</h1>
<app-header @ooo="get_data"></app-header>
</div>
`, data() {
return {
'childData': '1',
}
},
components: {
'app-header': Header,
}, methods: {
get_data(value) {
console.log(111,value)
this.childData = value;
}
}, }; new Vue({
el: '#app',
template: `<App></App>`,
components: {
App,
},
})
4. 混入

    - 定义一个mixs  object 然后写方法methods(){}
- 使用:mixins = [minx]
- 解决代码重用
   <div id="app">
<dog></dog>
<cat></cat>
</div> <script> let mixs = {
methods:{
show(value){
alert(value+'来了');
},
hide(value){
alert(value+'走了');
},
}
}; let Cat = {
template: `
<div>
<button @click="show('小猫')">小猫来了</button>
<button @click="hide('小猫')">小猫走了</button>
</div>
`,
data() { },
mixins:[mixs]
}; let Dog = {
template: `
<div>
<button @mouseenter="show('小狗')">Come</button>
<button @mouseleave="hide('小狗')">Go</button>
</div>
`,
mixins: [mixs],
}; new Vue({
el: '#app',
components: {
'dog':Dog,
'cat':Cat,
},
}) </script>
5. 插槽
    <div id="app">
<global-components>首页</global-components>
<global-components>轻课</global-components>
<global-components>学位课</global-components>
</div> Vue.components('global-components',{
template:`
<div><slot></slot></div>
`
}) new Vue({
el:'#app',
})
6. 具名插槽
   <div id="app">
<global-components>
<div>
<slot name="header>这是头部</slot>
<slot name="footer>这是尾部</slot>
</div>
</global-components> </div> Vue.components('global-components',{
template:`
<div>
<slot name="footer"></slot>
<slot name="header"></slot>
</div>
`
}) new Vue({
el:'#app',
})
												

vue---day02的更多相关文章

  1. vue学习-day02(自定义指令,生命周期)

    目录: 1.案例:品牌管理    2.Vue-devtools的两种安装方式    3.过滤器,自定义全局或私有过滤器    4.鼠标按键事件的修饰符    5.自定义全局指令:让文本框获取焦点   ...

  2. Vue 基础 day02

    Vue Devtools 安装 https://chrome.google.com/webstore/search/vue%20devtools?hl=zh-CN 需要翻墙 过滤器 概念: Vue.j ...

  3. vue学习day02

    vue 指令 1. 内容渲染指令 v-text 指令的缺点:会覆盖元素内部原有的内容! {{ }} 插值表达式:在实际开发中用的最多,只是内容的占位符,不会覆盖原有的内容! v-html 指令的作用: ...

  4. vue大型电商项目尚品汇(前台篇)day02

    现在正式回归,开始好好做项目了,正好这一个项目也开始慢慢的开始起色了,前面的准备工作都做的差不多了. 而且我现在也开始慢慢了解到了一些项目才开始需要的一些什么东西了,vuex.router这些都是必备 ...

  5. vue大型电商项目尚品汇(后台篇)day02

    这几天更新有点小慢,逐渐开始回归状态了.尽快把这个后台做完,要开始vue3了 3.添加修改品牌 用到组件 Dialog 对话框,其中visible.sync这个配置是修改他的显示隐藏的,label-w ...

  6. vue_shop(基于vue电商管理后台网站)

    vue_shop 目录 vue_shop day01 实现登录功能 项目预开发处理 Login.vue完整代码: 处理步骤: 添加element-ui的表单组件 添加第三方字体: 添加表单验证 导入a ...

  7. vue再学习

    day01 Vue 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合 使用Vu ...

  8. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  9. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  10. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

随机推荐

  1. Shell脚本批量修改图片尺寸

    #!/bin/sh function scandir(){ local cur_dir parent_dir workdir workdir=$ cd ${workdir} if [ ${workdi ...

  2. Orchard Core 使用工作流处理审批和创建内容项

    译自:http://www.ideliverable.com/blog/orchard-core-workflows-walkthrough-content-approval 转载请注明出处, 原文地 ...

  3. Python3条件控制语句

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. if语句 if 条件: 代码块 elif 条件: 代码块 else: 代码块 python中用elif ...

  4. 为什么ssh一关闭,程序就不再运行了?

    问题描述 当SSH远程连接到服务器上,然后运行一个程序,eg: ./test.sh, 然后把终端开闭(切断SSH连接)之后,发现该程序中断. 原因 主要元凶: 挂断信号(SIGHUP) 信号 概念介绍 ...

  5. [转]JetBrains IntelliJ IDEA 13 Keygen (Java Source Code)

    转载:http://www.rover12421.com/2013/12/09/jetbrains-intellij-idea-13-keygen-java-source-code.html JetB ...

  6. css盒模型-BFC

    BFC(边距重叠解决方案) 1.BFC的基本概念:块级格式化上下文 2.BFC的原理(说白了就是BFC的渲染规则): 这个规则是什么呢?我觉得大家能说出4点就够了 第一个就是BFC可以解决这个元素的垂 ...

  7. 2017.9.12 初入HTML -----学习总结(二)

    接上:..... (4)标记可分为: 4.1单标记:(单标记仅单独使用就可以表达完整的意思) 基本语法:<标记名称/> 例如:<br/>实现换行的功能.<hr/>实 ...

  8. 【luogu P3275 [SCOI2011]糖果】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3275 把不等式 A > B 转化成 A - B >= 1或者 B - A <= -1再差分 ...

  9. javascript对字符串的常见操作trim,ltrim,rtrim,isEmpty,isFloat等

    1.验证字符串是否为空格.是否包含非法字符. //验证是否字符串有非法字符 function v_invalide_char(value,msg){ var arr = ['#','@','!','$ ...

  10. 移动端判断微信浏览器安卓浏览器和ios浏览器

    $(function(){ var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf ...