vue實例的選項總結
一、數(shù)據(jù)
API:https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE
1. data
類型:Object | Function
限制:組件的定義只接受 function
詳細:Vue 實例的數(shù)據(jù)對象。Vue 將會遞歸將 data 的屬性轉換為 getter/setter,從而讓 data 的屬性能夠響應數(shù)據(jù)變化。對象必須是純粹的對象 (含有零個或多個的 key/value 對)。當一個組件被定義,data 必須聲明為返回一個初始數(shù)據(jù)對象的函數(shù),因為組件可能被用來創(chuàng)建多個實例。如果 data 仍然是一個純粹的對象,則所有的實例將共享引用同一個數(shù)據(jù)對象!通過提供 data 函數(shù),每次創(chuàng)建一個新實例后,我們能夠調(diào)用 data 函數(shù),從而返回初始數(shù)據(jù)的一個全新副本數(shù)據(jù)對象。
var data = { a: 1 }// 直接創(chuàng)建一個實例var vm = new Vue({ data: data})vm.a // => 1vm.$data === data // => true// Vue.extend() 中 data 必須是函數(shù)var Component = Vue.extend({ data: function () { return { a: 1 } }})
2. computed
類型:{ [key: string]: Function | { get: Function, set: Function } }
詳細:計算屬性將被混入到 Vue 實例中。所有 getter 和 setter 的 this 上下文自動地綁定為 Vue 實例。計算屬性的結果會被緩存,除非依賴的響應式屬性變化才會重新計算。注意,如果某個依賴 (比如非響應式屬性) 在該實例范疇之外,則計算屬性是不會被更新的。
var vm = new Vue({ data: { a: 1 }, computed: { // 僅讀取 aDouble: function () { return this.a * 2 }, // 讀取和設置 aPlus: { get: function () { return this.a + 1 }, set: function (v) { this.a = v - 1 } } }})vm.aPlus // => 2vm.aPlus = 3vm.a // => 2vm.aDouble // => 4
3. methods
類型:{ [key: string]: Function }
詳細:methods 將被混入到 Vue 實例中。可以直接通過 VM 實例訪問這些方法,或者在指令表達式中使用。方法中的 this 自動綁定為 Vue 實例。
var vm = new Vue({ data: { a: 1 }, methods: { plus: function () { this.a++ } }})vm.plus()vm.a // 2
4. watch
類型:{ [key: string]: string | Function | Object | Array }
詳細:一個對象,鍵是需要觀察的表達式,值是對應回調(diào)函數(shù)。值也可以是方法名,或者包含選項的對象。Vue 實例將會在實例化時調(diào)用 $watch(),遍歷 watch 對象的每一個屬性。
5. props
類型:Array<string> | Object
詳細:props 可以是數(shù)組或對象,用于接收來自父組件的數(shù)據(jù)。props 可以是簡單的數(shù)組,或者使用對象作為替代,對象允許配置高級選項,如類型檢測、自定義驗證和設置默認值。
你可以基于對象的語法使用以下選項:
1 type: 可以是下列原生構造函數(shù)中的一種:String、Number、Boolean、Array、Object、Date、Function、Symbol、任何自定義構造函數(shù)、或上述內(nèi)容組成的數(shù)組。會檢查一個 prop 是否是給定的類型,否則拋出警告。Prop 類型的更多信息在此。
2 default: any 為該 prop 指定一個默認值。如果該 prop 沒有被傳入,則換做用這個值。對象或數(shù)組的默認值必須從一個工廠函數(shù)返回。
3 required: Boolean 定義該 prop 是否是必填項。在非生產(chǎn)環(huán)境中,如果這個值為 truthy 且該 prop 沒有被傳入的,則一個控制臺警告將會被拋出。
4 validator: Function 自定義驗證函數(shù)會將該 prop 的值作為唯一的參數(shù)代入。在非生產(chǎn)環(huán)境下,如果該函數(shù)返回一個 falsy 的值 (也就是驗證失敗),一個控制臺警告將會被拋出。你可以在這里查閱更多 prop 驗證的相關信息。
二、DOM
API:https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-DOM
1.el
類型:string | Element
限制:只在用 new 創(chuàng)建實例時生效。
詳細:
(1)提供一個在頁面上已存在的 DOM 元素作為 Vue 實例的掛載目標。可以是 CSS 選擇器,也可以是一個 HTMLElement 實例。
(2)在實例掛載之后,元素可以用 vm.$el 訪問。
(3)如果在實例化時存在這個選項,實例將立即進入編譯過程,否則,需要顯式調(diào)用 vm.$mount() 手動開啟編譯。
提供的元素只能作為掛載點。不同于 Vue 1.x,所有的掛載元素會被 Vue 生成的 DOM 替換。因此不推薦掛載 root 實例到 <html> 或者 <body> 上。
如果 render 函數(shù)和 template property 都不存在,掛載 DOM 元素的 HTML 會被提取出來用作模板,此時,必須使用 Runtime + Compiler 構建的 Vue 庫。
2.template
類型:string
詳細:一個字符串模板作為 Vue 實例的標識使用。模板將會替換掛載的元素。掛載元素的內(nèi)容都將被忽略,除非模板的內(nèi)容有分發(fā)插槽。
如果值以 # 開始,則它將被用作選擇符,并使用匹配元素的 innerHTML 作為模板。常用的技巧是用 <script type='x-template'> 包含模板。
出于安全考慮,你應該只使用你信任的 Vue 模板。避免使用其他人生成的內(nèi)容作為你的模板。
如果 Vue 選項中包含渲染函數(shù),該模板將被忽略。
3.render
類型:(createElement: () => VNode) => VNode
詳細:字符串模板的代替方案,允許你發(fā)揮 JavaScript 最大的編程能力。該渲染函數(shù)接收一個 createElement 方法作為第一個參數(shù)用來創(chuàng)建 VNode。
如果組件是一個函數(shù)組件,渲染函數(shù)還會接收一個額外的 context 參數(shù),為沒有實例的函數(shù)組件提供上下文信息。
Vue 選項中的 render 函數(shù)若存在,則 Vue 構造函數(shù)不會從 template 選項或通過 el 選項指定的掛載元素中提取出的 HTML 模板編譯渲染函數(shù)。
4.renderError
2.2.0 新增
類型:(createElement: () => VNode, error: Error) => VNode
詳細:只在開發(fā)者環(huán)境下工作。
當 render 函數(shù)遭遇錯誤時,提供另外一種渲染輸出。其錯誤將會作為第二個參數(shù)傳遞到 renderError。這個功能配合 hot-reload 非常實用。
示例:
new Vue({ render (h) { throw new Error(’oops’) }, renderError (h, err) { return h(’pre’, { style: { color: ’red’ }}, err.stack) }}).$mount(’#app’)
以上就是vue實例的選項總結的詳細內(nèi)容,更多關于VUE 實例選項的資料請關注好吧啦網(wǎng)其它相關文章!
相關文章:
1. 自定義Django默認的sitemap站點地圖樣式2. windows下安裝PHP性能分析工具 xhprof 筆記3. 基于Django集成CAS實現(xiàn)流程詳解4. springboot多模塊包掃描問題的解決方法5. 深入淺出 妙用Javascript中apply、call、bind6. Android Studio編寫AIDL文件后如何實現(xiàn)自動編譯生成7. 基于vue實現(xiàn)探探滑動組件功能8. iOS UIScrollView和控制器返回手勢沖突解決方法9. Python WebSocket長連接心跳與短連接的示例10. pycharm配置python 設置pip安裝源為豆瓣源
