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
