component 的用法
component 的使用方式可以是
一、全域註冊
<html> <head> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <component-layout></component-layout> </div> <script> Vue.component("component-layout", { template: `<div></div>`, data() { return { myText: '全域註冊' } } }); let vm = new Vue({ el: "#app" }); </script> </body> </html>
說明:
在任何一個由 Vue 所做成的實體裡面如果有用到客製的 component 元件的 tag 時,
則會使用該 component 元件。
二、局部註冊
<html> <head> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <component-layout></component-layout> </div> <script> let vm = new Vue({ el: "#app", components: { 'component-layout': { template: `<div></div>`, data() { return { myText: '局部註冊' } } } } }); </script> </body> </html>
說明:
1、只有該 Vue 所做成的實體裡面如果有用到客製的 component 元件的 tag 時,
才會使用該 component 元件。
2、在 Vue 實體 中,data 可以是 物件(Object) 或 函式(Function),但元件的 data 只能是函式(Function)。
三、範例 - 使用 render 方式來秀出 component
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> </div> <script> let MyComponent = { template: `<div>子組件</div>` } let vm = new Vue({ el: '#app', render: h => h(MyComponent) }) </script> </body> </html>
四、把 component 分成另外一個檔案之範例
來看外部讀取 component 做法,如下例,使用到的檔案有 index.html、my-vuefile.vue,
兩檔案同階層。
index.html
<html> <head> </head> <body> <div id="app"> <my-component></my-component> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://unpkg.com/http-vue-loader"></script> <script> Vue.component( "my-component", httpVueLoader('my-vuefile.vue') ); let vm = new Vue({ el: "#app" }); </script> </body> </html>
my-vuefile.vue
<template> <div class="red"></div> </template> <script> module.exports = { data: function () { return { who: "Hello world", }; }, }; </script> <style> .red { background-color: #f00; } </style>
注意:此種作法不能在 file protocol 跑,而是需要在 http protocol 跑。