vue插件開發(fā)調用render函數

定義vue插件

很多同學看不懂export default關鍵詞,特意寫明導出方式
具體es6語法export default

  • 方法1(工作中常用)
// getModules.js
import Vue from 'vue'
export default{
  install(Vue, options) {
    // 1.添加實例方法
    Vue.prototype.setImgSize = function (param) { ... }
    // 2.添加全局方法或者屬性
    Vue.Method = function() { ... }
    // 3.注冊全局組件
    Vue.component('modules',  {...})
    // ...
  }
}
// getModules.js
// 參數1是Vue構造器禽笑,參數2是可選對象
MyPlugin.install = function (Vue, options) {
  // 1.添加實例方法
  // 2.添加全局方法或者屬性
  // ...
}
export default MyPlugin

調用vue插件

import Vue from 'vue'
import modules from './getModules.js'
Vue.use(modules)

注意點:
1坯墨、通過Vue.use(MyPlugin)使用封恰,本質上是調用MyPlugin.install(Vue)
2温赔、使用插件必須在new Vue()啟動應用之前完成拄衰,實例化之前就要配置好它褪。
3、如果使用Vue.use多次注冊相同插件翘悉,那只會注冊成功一次茫打。

案例:如何展示首頁?首頁由多個模塊組合,比如輪播圖老赤、熱門推薦轮洋、秒殺模塊等等,后臺允許配置重復模塊抬旺,首頁展示須按照后臺返回模塊順序展示弊予,這時候推薦結合render函數動態(tài)渲染首頁,與以往的分類开财、搜索列表頁不一致汉柒,它們是靜態(tài)的。

  • 第一步:根據首頁展示拆分模塊责鳍,各個模塊對應一個vue文件碾褂,各自vue文件中處理各自的邏輯;比如:moduleBanner.vue历葛、moduleMayLike.vue正塌、moduleNoticeBoard.vue對應有輪播圖、猜你喜歡恤溶、廣告通知模塊等等
  • 第二步:調用接口獲取數據乓诽、同步到狀態(tài)管理器
// 設置 首頁組件
import moduleBanner from '@/views/index/moduleBanner.vue'
import moduleMayLike from '@/views/index/moduleMayLike.vue'
import moduleNoticeBoard from '@/views/index/moduleNoticeBoard.vue'

// 首頁用到的組件同步到vuex
this.$store.commit("commonComponents", [moduleBanner, moduleMayLike, moduleNoticeBoard]);
// 發(fā)送請求
indexApi.cmsFloor(this.$route.query.json_id)
    .then((res) => {
        if(res.result.code == 200) {
            // 接口返回數據同步到vuex
            this.$store.commit("floorData", res.rows) 
        }
    })
    .catch((error) => {
        console.log(error);
    })
  • 第三步:狀態(tài)管理器getters方法中定義componentsSort函數,獲取首頁模塊組件數組
const getters = {
    componentsSort(state){
      let data = state.indexData;
      let componentsArray = state.commonComponents;
        let componentList=[]
        // 遍歷循環(huán)接口返回數據咒程,封裝return組件數組
        for(var i=0;i<data.length;i++){
            for(var j=0;j<componentsArray.length;j++){
                if(data[i].moduleName == componentsArray[j].name){
                    componentList.push(componentsArray[j]);
                    break;
                }
            }
        }
        return componentList
    }
}

第四步:定義插件鸠天,用于注冊全局組件modules,這個組件包含首頁所有的模塊

export default {
    install(Vue) {
        // 注冊全局組件modules
        Vue.component('modules', {
            render: function(createElement, context) {
                if(!this.componentList) return
                return createElement("div",
                    // 遍歷數組孵坚,動態(tài)生成組件
                    this.componentList.map(function(item, index) {
                        return createElement(item, {
                            attrs: {level: index}
                        })
                    })
                )
            },
            computed: {
                // 獲取組件數組
                componentList() {
                    return this.$store.getters.componentsSort
                }
            }
        })
    }
}

第五步:調用插件粮宛、使用全局組件modules

// 調用插件
import modules from './util/getModules.js'
Vue.use(modules)

// 使用全局組件modules
<template>
  <div class="index">
    <SearchHeader></SearchHeader>
    <modules></modules>
   <GoTop></GoTop>
 </div>
</template>
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卖宠,隨后出現的幾起案子巍杈,更是在濱河造成了極大的恐慌,老刑警劉巖扛伍,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷畦,死亡現場離奇詭異,居然都是意外死亡刺洒,警方通過查閱死者的電腦和手機鳖宾,發(fā)現死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逆航,“玉大人鼎文,你說我怎么就攤上這事∫蚶” “怎么了拇惋?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵周偎,是天一觀的道長。 經常有香客問我撑帖,道長蓉坎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任胡嘿,我火速辦了婚禮蛉艾,結果婚禮上,老公的妹妹穿的比我還像新娘衷敌。我一直安慰自己勿侯,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布缴罗。 她就那樣靜靜地躺著罐监,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞒爬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天沟堡,我揣著相機與錄音侧但,去河邊找鬼。 笑死航罗,一個胖子當著我的面吹牛禀横,可吹牛的內容都是我干的。 我是一名探鬼主播粥血,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼柏锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了复亏?” 一聲冷哼從身側響起趾娃,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缔御,沒想到半個月后抬闷,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡耕突,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年笤成,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眷茁。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡炕泳,死狀恐怖,靈堂內的尸體忽然破棺而出上祈,到底是詐尸還是另有隱情培遵,我是刑警寧澤浙芙,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站荤懂,受9級特大地震影響茁裙,放射性物質發(fā)生泄漏。R本人自食惡果不足惜节仿,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一晤锥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊宪,春花似錦矾瘾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至傅寡,卻和暖如春放妈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荐操。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工芜抒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人托启。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓宅倒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屯耸。 傳聞我的和親對象是個殘疾皇子拐迁,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容

  • # 傳智播客vue 學習## 1. 什么是 Vue.js* Vue 開發(fā)手機 APP 需要借助于 Weex* Vu...
    再見天才閱讀 3,560評論 0 6
  • 相關概念 混合開發(fā)和前后端分離 混合開發(fā)(服務器端渲染) 前后端分離后端提供接口,前端開發(fā)界面效果(專注于用戶的交...
    他愛在黑暗中漫游閱讀 2,803評論 4 45
  • 前言 您將在本文當中了解到,往網頁中添加數據,從傳統的dom操作過渡到數據層操作,實現同一個目標,兩種不同的方式....
    itclanCoder閱讀 25,816評論 1 12
  • 北京中山公園里的格言亭疗绣。 又稱樂言亭线召、樂石亭,始建于一九一五年。原石柱內側刻有孔子多矮、孟子灶搜、朱熹、子思工窍、岳飛割卖、王陽明...
    退休人老高閱讀 606評論 0 1
  • 冬至未見大雪至, 今日梨花落窗邊患雏。 終是天公留不住鹏溯, 恰如織女戀人間。 紅梅掛素兩爭俏淹仑, 玉蝶思春舞翩躚丙挽。 大千揮...
    福緣善慶1閱讀 368評論 5 16