// 创建组件
const Hello=Vue.extend({
template:<h1>hello world</h1>
})
// 全局注册
Vue.component(‘hello’,Hello)
new Vue({
el:“#app”,
})
new Vue({
el:“#app2”,
})
- 注册成功并复用,会出现两个hello world
局部组件注册
- 局部组件注册代码
// // 创建组件
const Hello=Vue.extend({
template:<h1>hello world</h1>
})
new Vue({
el:“#app”,
// 局部注册
components:{
hello:Hello
}
})
- 局部组件注册的组件只能在当前注册的vue实例下使用
- 只会出现一个hello world ,并报错
组件注册简写
全局组件注册简写
Vue.component('组件名',{template:''})
Vue.component(“hello”,{
template:<h1>hello Vue</h1>
})
局部组件注册简写
components{hello:{template:""}}
new Vue({
el:“#app”,
components:{
hello:{
template:<h1>hello Vue</h1>
}
}
})
data必须是一个函数
一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:
-
简单案例
-
注册一个组件,定义数据msg=1,当点击按钮时,msg=2,
-
如果data方法不返回一个对象的话,当组件复用时,点击一个按钮,另一个按钮的数据也会改变
因为如果data方法不返回对象浏览器会直接报错,所以我们这里用一个Vue实例来模拟这种情况
<button @click=‘change’>msg={{msg}}
<button @click=‘change’>msg={{msg}}
- 如果data方法返回一个对象的话,当组件复用时,点击一个按钮,每一个组件实例都拥有独立的data属性
template组件模板
-
可以在body里创建template标签在组件里指定template
-
模板内容必须有根元素
-
必须用id作为标记
-
template标签不会被渲染在页面上
这是h1标签
这是p标签
- 运行结果如下,且template标签不会被渲染在页面上
注意浏览器规则,利用is放入组件
vue在解析模板的时候会根据某些html的规则,
例如,在table里只能放tr,td,th…,如果放入组件不会解析 这个时候我们可以放入tr使用is方式来标识这个tr其实是组件
-
不使用is方式
-
没有在tr标签中
- 使用is方式
动态组件(is切换)
在不同组件之间进行动态切换,可以通过Vue 的 component元素加一个特殊的 is attribute 来实现
- 简单案例,点击按钮切换组件
<button @click=“msg=msg===‘my-a’?‘my-b’:‘my-a’”>切换a,b组件
-component
不会被渲染在页面上
组件嵌套
应用中划分的组件可能会很多,为了更好的实现代码复用,所以必然会存在组件的嵌套关系
组件设计初衷就是要配合使用的,最常见的就是形成父子组件的关系:组件 A 在它的模板中使用了组件 B。
插槽
-
vue里提供了一种将父组件的内容和子组件的模板整合的方法:内容分发,通过slot插槽来实现
-
<slot></slot>
匿名插槽
在父组件中使用子组件的时候,在子组件标签内部写入内容。在子组件的模板中可以通过<slot></slot>
来使用
- 不管什么内容都被放在一个插槽中,如果有两个
<slot></slot>
,运行之后
算法刷题
大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0