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

Vue渲染器設(shè)計(jì)實(shí)現(xiàn)流程詳細(xì)講解

 更新時(shí)間:2023年01月03日 16:23:17   作者:知奕奕  
在瀏覽器平臺(tái)上,用它來渲染其中的真實(shí)DOM元素。渲染器不僅能夠渲染真實(shí)的DOM元素,它還是框架跨平臺(tái)能力的關(guān)鍵。所以在設(shè)計(jì)渲染器的時(shí)候一定要考慮好自定義的能力

渲染器+響應(yīng)系統(tǒng)

最簡(jiǎn)渲染函數(shù)

使用以下函數(shù)渲染靜態(tài)字符串或者動(dòng)態(tài)拼接內(nèi)容

// 渲染函數(shù)
function renderer(domString, container) {
  container.innerHTML = domString;
}
// 渲染dom
renderer("<p>123</p>", document.getElementById("main"));

vuereactivity

@vue/reactivity 包包含了副作用函數(shù) effect 以及響應(yīng)式 ref

渲染器基本原理

渲染器 renderer,渲染 render

虛擬節(jié)點(diǎn)(vnode) === 虛擬 DOM(vdom)

渲染器把虛擬 DOM 節(jié)點(diǎn)渲染為真實(shí) DOM 節(jié)點(diǎn)的過程叫作掛載(mount)

第一次渲染稱為掛載

后續(xù)渲染稱為打補(bǔ)丁(patch),也即更新 dom

DIY 渲染器

createRenderer 函數(shù)

這是一個(gè)構(gòu)建渲染器的函數(shù),特別留意其中的打補(bǔ)丁 patch 函數(shù)的編寫!

patch 的三個(gè)參數(shù)分別指:舊 vnode,新 vnode,掛載位置

function createRenderer() {
  // dom更新函數(shù)
  function patch(n1, n2, container) {}
  // 渲染函數(shù)
  function render(vnode, container) {
    // 如果虛擬DOM存在,則執(zhí)行更新程序
    // 如果不存在,就掛載它
    if (vnode) {
      patch(container._vnode, vnode, container);
    } else {
      if (container._vnode) {
        container.innerHTML = "";
      }
    }
    container._vnode = vnode;
  }
}

構(gòu)建一個(gè) vnode 然后渲染它

const vnode = {
  type: "h1",
  children: "helloworld",
};
const renderer = createRenderer();
renderer.render(vnode, document.querySelector("#main"));

兼容所有瀏覽器渲染需求

可以將配置項(xiàng)交予渲染者進(jìn)行定義,而不寫死,這樣就可以適配多瀏覽器了!

首先在渲染器函數(shù)內(nèi)定義三大配置項(xiàng):

function createRenderer() {
  // 定義三大配置項(xiàng)
  const { createElement, insert, setElementText } = options;
  function mountElement(){...}
}

定義 mountElement

// 掛載元素函數(shù)
function mountElement(vnode, container) {
  // 判斷元素類型
  const ele = createElement(vnode.type);
  // 如果類型為string,那么設(shè)置文本
  if (typeof vnode.children === "string") {
    setElementText(ele, vnode.children);
  }
  // 將新元素插入到指定掛載點(diǎn)
  insert(ele, container);
}

到此這篇關(guān)于Vue渲染器設(shè)計(jì)實(shí)現(xiàn)流程詳細(xì)講解的文章就介紹到這了,更多相關(guān)Vue渲染器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue 掛載路由到頭部導(dǎo)航的方法

    vue 掛載路由到頭部導(dǎo)航的方法

    本篇文章主要介紹了vue 掛載路由到頭部導(dǎo)航的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • vue v-on傳遞參數(shù)和事件修飾符的使用

    vue v-on傳遞參數(shù)和事件修飾符的使用

    本文主要介紹了vue v-on傳遞參數(shù)和事件修飾符的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • vue學(xué)習(xí)筆記之slot插槽用法實(shí)例分析

    vue學(xué)習(xí)筆記之slot插槽用法實(shí)例分析

    這篇文章主要介紹了vue學(xué)習(xí)筆記之slot插槽用法,結(jié)合實(shí)例形式對(duì)比分析了vue使用slot插槽的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Vue格式化數(shù)據(jù)后切換頁(yè)面出現(xiàn)NaN問題及解決

    Vue格式化數(shù)據(jù)后切換頁(yè)面出現(xiàn)NaN問題及解決

    這篇文章主要介紹了Vue格式化數(shù)據(jù)后切換頁(yè)面出現(xiàn)NaN問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue基于element的區(qū)間選擇組件

    vue基于element的區(qū)間選擇組件

    這篇文章主要介紹了vue基于element的區(qū)間選擇組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue-cli3.0+element-ui上傳組件el-upload的使用

    vue-cli3.0+element-ui上傳組件el-upload的使用

    這篇文章主要介紹了vue-cli3.0+element-ui上傳組件el-upload的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue之將echart封裝為組件

    vue之將echart封裝為組件

    這篇文章主要介紹了vue之將echart封裝為組件,本文將會(huì)以雷達(dá)圖為案例,一步步講解在vue項(xiàng)目中如何使用echart,如何將其封裝為能重復(fù)調(diào)用的組件
    2018-06-06
  • 詳解van-cell如何使用插槽

    詳解van-cell如何使用插槽

    這篇文章主要為大家介紹了van-cell如何使用插槽詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 基于Vue3自定義實(shí)現(xiàn)圖片翻轉(zhuǎn)預(yù)覽功能

    基于Vue3自定義實(shí)現(xiàn)圖片翻轉(zhuǎn)預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了如何基于Vue3自定義實(shí)現(xiàn)簡(jiǎn)單的圖片翻轉(zhuǎn)預(yù)覽功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,有需要的小伙伴可以參考一下
    2023-10-10
  • 詳解elementUI中input框無法輸入的問題

    詳解elementUI中input框無法輸入的問題

    這篇文章主要介紹了詳解elementUI中input框無法輸入的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論

永嘉县| 泊头市| 南汇区| 若尔盖县| 如东县| 罗山县| 泰和县| 双牌县| 沧州市| 保山市| 额敏县| 宁波市| 仪征市| 合阳县| 仁寿县| 蒲江县| 宜章县| 松滋市| 南康市| 赤峰市| 元朗区| 罗定市| 泉州市| 乌兰浩特市| 蓬安县| 高州市| 云和县| 丰县| 五寨县| 宕昌县| 重庆市| 临澧县| 湖北省| 岑巩县| 阳江市| 凯里市| 泉州市| 兰州市| 镇平县| 安吉县| 栾川县|