Vue
元件概念Component
元件,作为SPA
的灵魂功能,可以将程序码以及模组封装起来,增加程序码的可复用性,能避免单一档案过大,例如程序码过多超过两百行,就可考虑切分出来,多人开发时也能较好维护,增加阅读性,减少未来维护的成本。每个元件实体与Data
、作用域都是独立的,不应该有子元件去影响到根元件的的资料,下一篇会有更详细的说明。
<div id="app">
<h4>{{ text }}</h4>
<con-tainer></con-tainer>
</div>
const app = Vue.createApp({
data() {
return {
text: "外部元件"
};
}
});
const app = Vue.createApp({
data() {
return {
text: "外部元件"
};
}
});
app.component("ConTainer", {
data() {
return {
text: "内部元件/全域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
});
app.mount("#app");
createApp
之後。app.component('ConTainer',{})
里面的'ConTainer'
为元件名称。template
。<container></container>
,写在#app
里。补充:当元件命名使用驼峰命名,浏览器在解析HTML
,不会区分大小写,写在HTML
需要使用小写与连字号标签<con-tainer></con-tainer>
。
<div id="app">
<h4>{{ text }}</h4>
<con-tainer></con-tainer>
<area2></area2>
</div>
const area2 = {
data() {
return {
text: "根元件的子元件/区域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
}
const app = Vue.createApp({
data() {
return {
text: "外部元件"
};
},
components:{
area2
}
});
app.component("ConTainer", {
data() {
return {
text: "内部元件/全域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
});
app.mount("#app");
area2
物件,结构跟全域元件一样。component
要多加一个s
,并且写上物件名称。HTML
写上components
里面的。把元件独立成一只档案(独立元件),Vue CLI
常用的方式,利用ESModule
的方式汇入进来使用。
建立一支component.js
的JavaScript
档案,档案内容为:
//汇出
export default {
data() {
return {
text: "外部汇入的元件!",
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
}
<div id="app">
<h4>{{ text }}</h4>
<con-tainer></con-tainer>
<area2></area2>
<external></external>
</div>
<script type="module">
import external from './component.js';
const area2 = {
data() {
return {
text: "根元件的子元件/区域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
}
const app = Vue.createApp({
data() {
return {
text: "外部元件"
};
},
components:{
area2,
external
}
});
app.component("ConTainer", {
data() {
return {
text: "内部元件/全域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
});
app.mount("#app");
</script>
</body>
</html>
import external from './component.js';
<script>
要加上type="module"
。样板就是指HTML
,有以下几种方式可以建立:
template
可以看上面的范例。
x-template
随着专案的成长,HTML
结构越来越多时,都只使用template
属性挂载在HTML
上,会显得不好阅读,可以使用x-template
将HTML
结构封装在<script>
里面:
<div id="app">
<h4>{{ text }}</h4>
<con-tainer></con-tainer>
<area2></area2>
<external></external>
<demo></demo>
</div>
<script type="text/x-template" id="xtemplate">
<div>
x-template 范例
</div>
</script>
<script type="module">
import external from './component.js';
const area2 = {
data() {
return {
text: "根元件的子元件/区域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
}
const app = Vue.createApp({
data() {
return {
text: "外部元件"
};
},
components:{
area2,
external
}
});
app.component("ConTainer", {
data() {
return {
text: "内部元件/全域注册"
};
},
template: `<div>
<h4>{{ text }}</h4>
</div>`
});
app.component("demo", {
template: '#xtemplate'
});
app.mount("#app");
</script>
<script type="text/x-template" id="xtemplate">
里面撰写HTML
结构。demo
的template:'#xtemplate'
对应上面的id="xtemplate"
。建立Vue CLI
之後每个.Vue
档都是一个元件,单一档案就包含HTML
,JS
,CSS
。
以上如有错误,欢迎指教
>>: [Python 爬虫这样学,一定是大拇指拉!] DAY18 - Python:Requests 基本应用 (1)
Constraints 是 Figma 中一个很重要的功能,它可以让我们的设计在做拉伸的时候,变的...
今天的内容会跟各位介绍 Google Cloud 相关的基础知识,希望不会不小心的讲成像业配文QQ,...
今天重点在於资料库的部分,先以sqlite3建置资料,後面将database设定改成使用MySQL ...
前言 转眼间,国庆连假已经要结束了,不晓得大家有没有好好的放松自己的身心,有些店家也因为连假的缘故而...
此篇会解析 Bootstrap root 是如何自定义生成自己的 CSS 样式。 原始码 使用到两...