會想到要補充這段是因為朋友前陣子有問到XD
上一篇用到的template:
<template>
<div>
chat
</div>
</template>
template內容就是包覆一段html,而且限制裡面的第一層只能有一個tag也就是說以下這段是不合法的,會直接死給你看唷^.<
<template>
<div>
chat
</div>
<h2>ABC</h2>
</template>
所以說無論你想要寫多少東西,最外都只能有一層,不一定要是div,任何真實的tag都可以。
<template>
<div>
<h2>ABC</h2>
<div>
<ul></ul>
......
</div>
chat
......隨便你加,有兩百個兄弟姊妹層,或兩千個子孫層級都沒人管你
</div>
</template>
所謂真實的tag就是說,會被渲然到html上的tag,比如說div
、span
、h1
這些大家所熟悉的會被渲染,不會被渲染的像是template
,vue裡面會用這個元素去包一些需要判斷或是重複的東西,例如:
<template>
<div>
<h2 v-if="test==='show'">test等於show的時候出現</h2>
<span v-if="test==='show'">我也是test等於show的時候出現</span>
</div>
</template>
上面的h2
跟span
都會判斷test==='show'的時候才顯示,但這樣寫就要寫兩遍,在閱讀上不是很好看,那就可以利用template
把兩個包在裡面,改寫成以下:
<template>
<div>
<template v-if="test==='show'">
<h2>test等於show的時候出現</h2>
<span>我也是test等於show的時候出現</span>
</template>
</div>
</template>
template
最後不會被渲染在html上,h2
跟span
在判斷正確的狀態下,都會顯示出來
在建好nuxt後,pages > index.vue
這個檔案就有一個基本的頁面結構,大概像以下這段
<template>
<div>
chat
</div>
</template>
<script>
import Logo from '~/components/Logo.vue'
export default {
components: {
Logo
},
data(){
return {
test: 'show' // 前面templete用的test參數判斷塞在這
}
}
}
</script>
<style>
...css
</style>
會把html、css、vue通通寫在同一支檔案,但在這種狀況下,內容只要寫得太長,之後在閱讀上也是有點小麻煩,所以說,他可以拆開成不同檔案來用
在.vue中引入:
<script>
export default {
components: {
Logo
},
data(){
return {
test: 'show' // 前面templete用的test參數判斷塞在這
}
}
}
</script>
<template src="./template.html" />
<style lang="scss" src="./style.scss"></style>
但這個模式後來我覺得只有小專案比較適合,因為當檔案越來越多的時候,一定會迷失在找檔案的時候...,就算不拆成這樣,檔案一多也是很崩潰,找個檔案要挖超久Orz...
這個模式後來我覺得只有小專案比較適合,因為當檔案越來越多的時候,一定會迷失在找檔案的時候。
有感,而且開很多檔案的時候,每一個 tab 都叫做 index.vue
其實不太方便
我剛進現在單位的時候,看到所有東西都寫在同一隻檔案的時候錯愕了一下XD
但想想也是,東西那麼多,分三隻頭更痛,光寫在同一支,檔案就多到起笑QQ
但這個模式後來我覺得只有小專案比較適合,因為當檔案越來越多的時候,一定會迷失在找檔案的時候...,就算不拆成這樣,檔案一多也是很崩潰,找個檔案要挖超久Orz...
新手想問為什麼會這樣?把所有長長的的html碼塞在一個檔案裡不是更難編輯嗎?
可以模組化成小檔案,控制行數
有時候區塊模組化也會增加閱讀性