您好,登錄后才能下訂單哦!
本篇內容介紹了“Vue中如何定義組件模版”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
字符串形式
Vue 最簡單直接的一種定義組件模版的方式,但是方式寫起來很不友好,就像我們以前拼接 HTML 元素是一樣的,很痛苦,所以我們并不常用
Vue.component("my-button", { data: function () { return { label: "是兄弟就來砍我" } }, template: "<button>{{label}}</button>" });
模版字面量
模版字面量 ES6 語法,與字符串不同的是,我們可以進行多行書寫,相對單純字符串有很大優勢,體驗更優,但是可能瀏覽器兼容性會存在問題,需要進行轉譯為 ES5 語法。
Vue.component("my-content", { data: function () { return { label: "是兄弟就來砍我", content: "刀刀暴擊" } }, template: ` <div> <button>{{ label }}</button> <span>{{ content }}</span> </div> ` });
內聯模版(inline-template)
與 「X-template」模版定義方式被稱為模版定義的替代品,把內容定義在組件標簽元素的內部,而不是作為 slot 內容分發,方式比較靈活,但是給讓我們組件的模版與其他屬性分離開。
<my-label inline-template> <span>{{label}}</span> </my-label> Vue.component('my-label', { data: function () { return { label: "趕緊上車吧,兄die" } } })
X-template
定義一個 <script> 標簽,標記 text/x-template
類型,通過 id 鏈接。
<script type="text/x-template" id="label-template"> <span>{{label}}</span> </script> Vue.component('my-label', { template: "#label-template", data: function () { return { label: "趕緊上車吧,兄die" } } })
渲染函數
渲染函數需要 JavaScript 完全的編程能力,而且比模版更接近編譯,但需要我們非常熟悉 Vue的實例屬性,也會更加的抽象。像 v-if v-for
指令就可以用 JavaScript 語法輕松實現。
Vue.component('my-label', { data: function () { return { items: ['來就送!', '來就送!', '來就送!'] } }, render: function (createElement) { if (this.items.length) { return createElement('ul', this.items.map(function (item) { return createElement('li', item) })) } else { return createElement('p', '活動結束') } } })
JSX
相比渲染函數的抽象而言,JSX 比較容易一些,對于熟悉 React 的同學是比較友好的。
Vue.component('my-label', { data: function () { return { label: ["活動結束"] } }, render(){ return <div>{this.label}</div> } })
單文件組件
使用構建工具 cli 創建項目,綜合來看單文件組件應該是最好的定義組件的方式,而且不會帶來額外的模版語法的學習成本。
<template> <div> <ul> <li v-for="(item, index) in items" :key="index">{{item}}</li> </ul> </div> </template> <script> export default { data() { return { items: ["我砍", "我砍", "我砍"] }; } }; </script>
“Vue中如何定義組件模版”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。