Vue2.0 render:h => h(App)

new Vue({
  router,
  store,
  //components: { App }  vue1.0的寫法
  render: h => h(App)    vue2.0的寫法
}).$mount('#app')

注意參數(shù)是 App,這個在import里面是這樣的:
import App from './App.vue'

render函數(shù)是渲染一個視圖,然后提供給el掛載,如果沒有render那頁面什么都不會出來

相當(dāng)于就是將App.vue頁面渲染出來攻走,render 函數(shù)得到這個 VNode 節(jié)點之后,返回給 Vue.js 的 mount 函數(shù)此再,渲染成真實 DOM 節(jié)點昔搂,并掛載到根節(jié)點上,

根結(jié)點在index.html下面有一個#app的div上

最后的效果就是將:App.vue頁面渲染出來输拇,插入到index.html里面一個叫做

app的div塊上

<div id="app"></div>
<!-- built files will be auto injected -->

并且摘符,new 出來的vue,掛載到App.vue組件上策吠;

new Vue({
    // el是實例掛載點逛裤,會將根組件替換掉原文檔中id為 app 標(biāo)簽
    el: '#app',
    // 通過render函數(shù)渲染
    render: h => {
        // 這里App是根組件
        h(App)
    }
})

vue.2.0的渲染過程:

1.首先需要了解這是 es 6 的語法,表示 Vue 實例選項對象的 render 方法作為一個函數(shù)奴曙,接受傳入的參數(shù) h 函數(shù)别凹,返回 h(App) 的函數(shù)調(diào)用結(jié)果。

2.其次洽糟,Vue 在創(chuàng)建 Vue 實例時炉菲,通過調(diào)用 render 方法來渲染實例的 DOM 樹堕战。

3.最后,Vue 在調(diào)用 render 方法時拍霜,會傳入一個 createElement 函數(shù)作為參數(shù)嘱丢,也就是這里的 h 的實參是 createElement 函數(shù),然后 createElement 會以 APP 為參數(shù)進(jìn)行調(diào)用祠饺,關(guān)于 createElement 函數(shù)的參數(shù)說明參見:Element-Arguments

結(jié)合一下官方文檔的代碼便可以很清晰的了解Vue2.0 render:h => h(App)的渲染過程越驻。

1 render: function (createElement) {
2     return createElement(
3       'h' + this.level,   // tag name 標(biāo)簽名稱
4       this.$slots.default // 子組件中的陣列
5     )
6   }
render: function (createElement) {
    return createElement(App);
}

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

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

再進(jìn)一步縮寫為:

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

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

render: h => h(App);

其中 根據(jù) Vue.js 作者 Even You 的回復(fù)道偷,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 的實現(xiàn)中。Hyperscript 本身是指
生成HTML 結(jié)構(gòu)的 script 腳本勺鸦,因為 HTML 是 hyper-text markup language 的縮寫(超文本標(biāo)記語言)

理解:createElement 函數(shù)是用來生成 HTML DOM 元素的并巍,也就是上文中的 generate HTML structures,也就是 Hyperscript换途,這樣作者才把 createElement 簡寫成 h懊渡。

Vue.js 里面的 createElement 函數(shù),這個函數(shù)的作用就是生成一個 VNode節(jié)點军拟,render 函數(shù)得到這個 VNode 節(jié)點之后剃执,返回給 Vue.js 的 mount 函數(shù),渲染成真實 DOM 節(jié)點懈息,并掛載到根節(jié)點上肾档。

還有另外一種寫法效果是一樣的:

import App from './App'
new Vue({
    el: '#root',
    template: '<App></App>',
    components: {
        App
    }
})

直接解析template下的id為app的div

我的理解是這行代碼:直接給綁定節(jié)點渲染一個vue組件

createElement 到底會返回什么呢?其實不是一個實際的 DOM 元素漓拾。createElement更準(zhǔn)確的名字可能是 createNodeDescription阁最,因為它所包含的信息會告訴 Vue 頁面上需要渲染什么樣的節(jié)點,及其子節(jié)點骇两。我們把這樣的節(jié)點描述為“虛擬節(jié)點 (Virtual Node)”速种,也常簡寫它為“VNode”〉颓В“虛擬 DOM”是我們對由 Vue 組件樹建立起來的整個 VNode 樹的稱呼配阵。

總體來說,揣測認(rèn)為示血,Vue 在調(diào)用 render 方法時棋傍,會傳入一個 createElement 函數(shù)作為參數(shù),也就是這里的 h 的實參是 createElement 函數(shù)难审,這個函數(shù)的作用就是生成一個 VNode節(jié)點瘫拣,render 函數(shù)得到這個 VNode 節(jié)點之后,調(diào)用了 mount 方法告喊,渲染成真實 DOM 節(jié)點麸拄,并掛載到(通常是div app)??節(jié)點上派昧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拢切,隨后出現(xiàn)的幾起案子蒂萎,更是在濱河造成了極大的恐慌,老刑警劉巖淮椰,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件五慈,死亡現(xiàn)場離奇詭異,居然都是意外死亡主穗,警方通過查閱死者的電腦和手機(jī)泻拦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黔牵,“玉大人聪轿,你說我怎么就攤上這事爷肝』郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵灯抛,是天一觀的道長金赦。 經(jīng)常有香客問我,道長对嚼,這世上最難降的妖魔是什么夹抗? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮纵竖,結(jié)果婚禮上漠烧,老公的妹妹穿的比我還像新娘。我一直安慰自己靡砌,他們只是感情好已脓,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著通殃,像睡著了一般度液。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上画舌,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天堕担,我揣著相機(jī)與錄音,去河邊找鬼曲聂。 笑死霹购,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朋腋。 我是一名探鬼主播齐疙,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼兢仰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剂碴?” 一聲冷哼從身側(cè)響起把将,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忆矛,沒想到半個月后察蹲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡催训,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年洽议,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漫拭。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡亚兄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出采驻,到底是詐尸還是另有隱情审胚,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布礼旅,位于F島的核電站膳叨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痘系。R本人自食惡果不足惜菲嘴,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汰翠。 院中可真熱鬧龄坪,春花似錦、人聲如沸复唤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苟穆。三九已至抄课,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雳旅,已是汗流浹背跟磨。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留攒盈,地道東北人抵拘。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像型豁,于是被迫代替她去往敵國和親僵蛛。 傳聞我的和親對象是個殘疾皇子尚蝌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355