關於Vue中 render: h => h(App) 的具體含義的理解


ps: 如果有任何問題可以評論留言,我看到后會及時解答,評論或關注,您的鼓勵是我分享的最大動力

轉載請注明出處:

https://blog.csdn.net/qq_40938301/article/details/104342113

 

一、問題:
https://github.com/vuejs-templates/webpack-simple/blob/master/template/src/main.js

import Vue from 'vue'
import App from './App.vue'
 
new Vue({
  el: '#app',
  render: h => h(App)
})


vue的代碼中有這么一段,令人第一眼對這個 h 函數十分困惑??

二、原因:
經過查找相關資料后發現:

render: h => h(App) 是下面內容的縮寫:

render: function (createElement) {
    return createElement(App);
}


進一步縮寫為(ES6 語法):

render (createElement) {
return createElement(App);
}
再進一步縮寫為:

render (createElement) {
    return createElement(App);
}


按照 ES6 箭頭函數的寫法,就得到了:

render: h => h(App);
其中 根據 Vue.js 作者 Even You 在 Vue 的 issue 中的回復,h 的含義如下:

It comes from the term "hyperscript", which is commonly used in many virtual-dom implementations. "Hyperscript" itself stands for "script that generates HTML structures" because HTML is the acronym for "hyper-text markup language".
它來自單詞 hyperscript,這個單詞通常用在 virtual-dom 的實現中。Hyperscript 本身是指 
生成HTML 結構的 script 腳本,因為 HTML 是 hyper-text markup language 的縮寫(超文本標記語言)

三、總結:
h 函數的本質是createElement 函數,這個函數的作用就是生成一個 VNode節點,render 函數得到這個 VNode 節點之后,返回給 Vue.js 的 mount 函數,渲染成真實 DOM 節點,並掛載到根節點上

而之所以要 叫 h,根據作者解釋是,來源於 hyper script,

........

個人覺得可讀性差了很多,就算是外國人不經解釋也很難理解這個 h 函數

不如直接 createElement 
————————————————
版權聲明:本文為CSDN博主「學霸的男人」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40938301/article/details/104342113


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM