render: h => h(App) $mount 什麼意思

初始一個vue.js項目時,經常發現main.js裏有以下代碼:html

new Vue({
  render: h => h(App)
}).$mount('#app')

這什麼意思?那我本身作項目怎麼改?
其實render: h => h(App)vue

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

進一步縮寫爲(ES6 語法):webpack

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

ES6箭頭函數git

render: h => h(App);

其中 根據 Vue.js 做者 Even You 的回覆,h 的含義以下:es6

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 的縮寫(超文本標記語言)

在這裏推薦你們看官方文檔:github

渲染函數RenderFunction&JSX的

API之Mount方法

將 h 做爲 createElement 的別名是 Vue 生態系統中的一個通用慣例,實際上也是 JSX 所要求的,若是在做用域中 h 失去做用,在應用中會觸發報錯。

虛擬DOM / VNode

createElement 到底會返回什麼呢?其實不是一個實際的 DOM 元素。createElement更準確的名字多是 createNodeDescription,由於它所包含的信息會告訴 Vue 頁面上須要渲染什麼樣的節點,及其子節點。咱們把這樣的節點描述爲「虛擬節點 (Virtual Node)」,也常簡寫它爲「VNode」。「虛擬 DOM」是咱們對由 Vue 組件樹創建起來的整個 VNode 樹的稱呼。

整體來講,我帶着揣測認爲,Vue 在調用 render 方法時,會傳入一個 createElement 函數做爲參數,也就是這裏的 h 的實參是 createElement 函數,這個函數的做用就是生成一個 VNode節點,render 函數獲得這個 VNode 節點以後,調用了 mount 方法,渲染成真實 DOM 節點,並掛載到(一般是div app)??節點上。web

因此有時候你能夠這麼寫...mount在root上了,通常都是在app上
mount在root上api

我粗略的看了一下,這裏其實牽扯到了一堆,好比:
其實vue有兩種渲染方法,一種是經過模板<template>
一種是render function
https://github.com/pfan123/fr...babel

babel-plugin-transform-vue-jsxapp

沒搞懂..有空再填坑..

參考:
1.https://github.com/vuejs-temp...
2.https://cn.vuejs.org/v2/guide...

相關文章
相關標籤/搜索