最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0實現(xiàn)插件封裝

 更新時間:2020年12月14日 10:07:20   作者:慕斯不想說話  
這篇文章主要介紹了vue3.0實現(xiàn)插件封裝的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

  最近公司有一個新的項目,項目框架是我來負(fù)責(zé)搭建的,所以果斷選擇了Vue3.x+ts。vue3.x不同于vue2.x,他們兩的插件封裝方式完全不一樣。由于項目中需要用到自定義提示框,所以想著自己封裝一個。vue2.x提供了一個vue.extend的全局方法。那么vue3.x是不是也會提供什么方法呢?果然從vue3.x源碼中還是找到了。插件封裝的方法,還是分為兩步。

1、組件準(zhǔn)備

  按照vue3.x的組件風(fēng)格封裝一個自定義提示框組件。在props屬性中定義好。需要傳入的數(shù)據(jù)流。

<template>
  <div v-show="visible" class="model-container">
   <div class="custom-confirm">
    <div class="custom-confirm-header">{{ title }}</div>
    <div class="custom-confirm-body" v-html="content"></div>
    <div class="custom-confirm-footer">
     <Button @click="handleOk">{{ okText }}</Button>
     <Button @click="handleCancel">{{ cancelText }}</Button>
    </div>
   </div>
  </div>
</template>
<script lang="ts">
import { defineComponent, watch, reactive, onMounted, onUnmounted, toRefs } from "vue";
export default defineComponent({
 name: "ElMessage",
 props: {
  title: {
   type: String,
   default: "",
  },
  content: {
   type: String,
   default: "",
  },
  okText: {
   type: String,
   default: "確定",
  },
  cancelText: {
   type: String,
   default: "取消",
  },
  ok: {
   type: Function,
  },
  cancel: {
   type: Function,
  },
 },
 setup(props, context) {
  const state = reactive({
   visible: false,
  });
  function handleCancel() {
   state.visible = false;
   props.cancel && props.cancel();
  }
  function handleOk() {
   state.visible = false;
   props.ok && props.ok();
  }
  return {
   ...toRefs(state),
   handleOk,
   handleCancel,
  };
 },
});
</script>

2、插件注冊

  這個才是插件封裝的重點。不過代碼量非常少,只有那么核心的幾行。主要是調(diào)用了vue3.x中的createVNode創(chuàng)建虛擬節(jié)點,然后調(diào)用render方法將虛擬節(jié)點渲染成真實節(jié)點。并掛在到真實節(jié)點上。本質(zhì)上就是vue3.x源碼中的mount操作。

import { createVNode, render } from 'vue';
import type {App} from "vue";
import MessageConstructor from './index.vue'
const body=document.body;
const Message: any= function(options:any){
 const modelDom=body.querySelector(`.container_message`)
  if(modelDom){
   body.removeChild(modelDom)
  }
  options.visible=true;
  const container = document.createElement('div')
  container.className = `container_message`
  //創(chuàng)建虛擬節(jié)點
  const vm = createVNode(
   MessageConstructor,
   options,
  )
  //渲染虛擬節(jié)點
  render(vm, container)
  document.body.appendChild(container);
} 
export default {
  //組件祖冊
  install(app: App): void {
    app.config.globalProperties.$message = Message
  }
}

  插件封裝完整地址。源碼位置————packages/runtime-core/src/apiCreateApp中的createAppAPI函數(shù)中的mount方法。

以上就是vue3.0實現(xiàn)插件封裝的詳細(xì)內(nèi)容,更多關(guān)于vue 插件封裝的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何解決vue在ios微信

    如何解決vue在ios微信"復(fù)制鏈接"功能問題

    這篇文章主要介紹了如何解決vue在ios微信"復(fù)制鏈接"功能問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue導(dǎo)入新工程?“node_modules依賴”問題

    vue導(dǎo)入新工程?“node_modules依賴”問題

    這篇文章主要介紹了vue導(dǎo)入新工程?“node_modules依賴”問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 使用vite項目打包資源分配目錄

    使用vite項目打包資源分配目錄

    這篇文章主要介紹了使用vite項目打包資源分配目錄方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue中的組件注冊方法及注意事項

    Vue中的組件注冊方法及注意事項

    在Vue中,組件是構(gòu)建頁面的基本單位。通過組件化開發(fā),可以提高代碼的復(fù)用性和可維護(hù)性。組件的注冊方法包括全局注冊和局部注冊兩種方式。同時,需要注意組件名的命名規(guī)范、組件選項的定義方式、組件之間的通信等問題,以實現(xiàn)更好的組件復(fù)用和開發(fā)效率
    2023-05-05
  • vue的hash值原理也是table切換實例代碼

    vue的hash值原理也是table切換實例代碼

    這篇文章主要介紹了vue的hash值原理也是table切換,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • vue實踐---vue不依賴外部資源實現(xiàn)簡單多語操作

    vue實踐---vue不依賴外部資源實現(xiàn)簡單多語操作

    這篇文章主要介紹了vue實踐---vue不依賴外部資源實現(xiàn)簡單多語操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue動態(tài)綁定class選中當(dāng)前列表變色的方法示例

    vue動態(tài)綁定class選中當(dāng)前列表變色的方法示例

    這篇文章主要介紹了vue動態(tài)綁定class選中當(dāng)前列表變色的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 在Vue+Ts+Vite項目中配置別名指向不同的目錄并引用的案例詳解

    在Vue+Ts+Vite項目中配置別名指向不同的目錄并引用的案例詳解

    這篇文章主要介紹了在Vue+Ts+Vite項目中配置別名指向不同的目錄并引用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 這15個Vue指令,讓你的項目開發(fā)爽到爆

    這15個Vue指令,讓你的項目開發(fā)爽到爆

    這篇文章主要介紹了這15個Vue指令,讓你的項目開發(fā)爽到爆,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-10-10
  • vue組合式API淺顯入門示例詳解

    vue組合式API淺顯入門示例詳解

    這篇文章主要為大家介紹了vue組合式API淺顯入門示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評論

仁化县| 青铜峡市| 蓬安县| 潍坊市| 喀什市| 教育| 锦州市| 怀远县| 金坛市| 晋城| 且末县| 通海县| 永胜县| 义马市| 黑龙江省| 怀来县| 教育| 德安县| 长阳| 阳新县| 普兰县| 桦川县| 抚宁县| 津南区| 徐州市| 望城县| 宣恩县| 迭部县| 孝义市| 武川县| 河北区| 永德县| 雅江县| 上蔡县| 长兴县| 庐江县| 昌江| 巫山县| 乐平市| 哈巴河县| 平顶山市|