Vue extends 屬性的用法示例詳解
引言
最近在看抖音——《小山與 bug》,看到一個很神奇的 Vue 繼承組件的方法,後來專門去翻瞭 element 和 iview 的源碼,發現這個屬性的用法好像在這些框架裡還沒有用到過,懷著試一試的態度,我就自己搭建瞭個測試項目,發現其實還是挺好用的,甚至有望代替目前我們前端框架業務代碼混入的底層實現。話不多說,直接上代碼:
App.vue
<template> <div> <Son></Son> </div> </template> <script> import Son from "./components/Son"; export default { components: { Son, }, }; </script> <style scoped></style>
Son.vue
<template> </template> <script> import HelloWorld from "./HelloWorld.vue"; export default { extends: HelloWorld, data() { return { aa: 10, }; }, }; </script>
HelloWorld.vue
<template> <div> <h1>{{ aa }}</h1> <h1>{{ bb }}</h1> </div> </template> <script> export default { data() { return { aa: 0, bb: 123, }; }, mounted() { this.init(); }, methods: { init() { this.aa += 10; }, }, }; </script> <style scoped></style>
小結
可以看到,Son 組件繼承瞭 HelloWorld 組件,並且修改瞭 aa 的初始值,運行代碼我們可以看到,界面上顯示的 aa 變成瞭 20,不再是 10,那麼這個 extends 屬性到此其實已經初見端倪——其實 Vue 中所有的組件雖然沒有寫成 React 那種 class 的形式,但是實際來說也是一個類,這個時候,我們可以用 extends 實現對父組件的繼承,同時也支持對這個類進行重寫,這也是面向對象最為關鍵的一步,真沒想到作為前端心心念念的面向對象,其實一直都在自己身邊,隻不過自己沒發現。
基於上述情況,我們就可以得出一套 Vue 前端框架實現思路,就是我們先針對標準的業務邏輯開發一套代碼,然後作為底層架構,然後我們在關鍵的地方,比如數據加載前,彈窗打開前等等有可能會編寫不同的業務邏輯的地方,封裝一些操作前,操作後方法,默認這些方法為空,啥都不幹,當我們配置好瞭框架,針對每個菜單,去編寫對應的組件,這些組件都要繼承通用的模板,然後可以針對這些操作前,操作後方法進行重寫,比如在操作前方法裡加個校驗,對框架的某個組件進行重寫定義等等,這樣就可以實現不同的業務場景復用一套代碼瞭。
以上就是Vue extends 屬性的用法示例詳解的詳細內容,更多關於Vue extends 屬性的資料請關註WalkonNet其它相關文章!