VUE -组件简白的用法介绍和案例代码COPY
(采用vue3语法)
介绍流程:一个组件语法和使用介绍 -> 小案例 -> 相关概念知识补充
大概内容就是:全部组件、局部组件、prop
组件语法和使用介绍
使用分两步:1.在vue中注册 2.在html中使用
1.注册一个全局组件语法格式如下:
const app = Vue.createApp({...})
app.component('component-name', {
/* ... */
})
component-name 为组件名 /* ... */ 部分为组件内容
2.在html中使用
<自己写的组件名字> </自己写的组件名字>
也就是上面的:<component-name></component-name>
全局组件小案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 实例 - 组件</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="app">
<runoob></runoob>
</div>
<script>
// 创建一个Vue 应用
const app = Vue.createApp({
})
// 定义一个名为 button-counter 的新全局组件
app.component('runoob', {
template: '<h1>自定义组件!</h1>'
})
app.mount('#app')
</script>
</body>
</html>
概念知识补充:
你可以将组件进行任意次数的复用
上面全局注册的组件可以在随后创建的 app 实例模板中使用,也包括根实例组件树中的所有子组件的模板中。
局部组件
全局注册往往是不够理想的。比如,如果你使用一个像 webpack 这样的构建系统,全局注册所有的组件意味着即便你已经不再使用一个组件了,它仍然会被包含在你最终的构建结果中。这造成了用户下载的 JavaScript 的无谓的增加。
在这些情况下,你可以通过一个普通的 JavaScript 对象来定义组件
上面的字读完了看我这里,其实我也没怎么读懂,它大概的意思我猜是 创建一个Vue 应用时,有些组件不怎么需要,所以使用局部组件。
局部组件使用的语法如下:(和全局组件使用方法一致,只是在注册的地方做了改变)
1.注册一个局部组件语法格式:
const ComponentA = {
/* 局部组件内容 */
}
const ComponentB = {
/* ... */
}
const app = Vue.createApp({
components: {
'component-a': ComponentA,
'component-b': ComponentB
}
})
局部组件小案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="app">
<runoob-a></runoob-a>
</div>
<script>
var runoobA = {
template: '<h1>自定义组件!</h1>'
}
const app = Vue.createApp({
components: {
'runoob-a': runoobA
}
})
app.mount('#app')
</script>
</body>
</html>
Prop
知识点:prop声明和使用、动态Prop、Prop验证
prop 是子组件用来接受父组件传递过来的数据的一个自定义属性。
父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop":
一个组件默认可以拥有任意数量的 prop,任何值都可以传递给任何 prop。
Prop小案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="app">
<site-name title="Google"></site-name>
<site-name title="Runoob"></site-name>
</div>
<script>
const app = Vue.createApp({})
app.component('site-name', {
props: ['title'],
template: `<h4>{{ title }}</h4>`
})
app.mount('#app')
</script>
</body>
</html>
动态 Prop
太复杂了还没学会,暂时用不到,先不学。
Prop 验证
稍微有那么点用,暂时用不到,先不学。

浙公网安备 33010602011771号