初始一個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
將 h 做爲 createElement 的別名是 Vue 生態系統中的一個通用慣例,實際上也是 JSX 所要求的,若是在做用域中 h 失去做用,在應用中會觸發報錯。
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上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...