
Vue.jsにはrender関数というものがあります。Hello Worldの表示はVueインスタンスにdataを指定して、それを表示させるというシンプルな構造でした。templateとrenderにはそれぞれ特徴があるので両方学んでおくと良いですね。
render関数に触れてみる
Vue-cliをインストールするとrender関数に触れることができます。
Vue-cliのインストールは下記記事からどうぞ。
[Vue.js] Vue-CLIの使い方
[基本的なVue.jsのソース]
<html> <head> <meta charset="utf-8"> <title>vue hello world!</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app">{{ message }}</div> <script> const app = new Vue({ el: '#app', data: { message: 'Hello World' } }) </script> </body> </html>
Vue-cliのmain.jsファイルのVueインスタンスを見てみると、dataではなく、renderが出てきます。
ソースを見てみると、関数の形をしているようです。
[Vue-cliのmain.js]
new Vue({ render: h => h(App), }).$mount('#app')
renderとは
Vueインスタンスは
new Vue()で記載し、その中にオプションオブジェクトを指定してきますね。
dataやpropsなどもオプションオブジェクトです。
renderも同様です。
renderはHTMLをビルドする描画用の関数になっています。
<html> <head> <meta charset="utf-8" /> <title>vue hello world!(component ver)</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <hello-world></hello-world> </div> <script> Vue.component('hello-world', { template: '<h1>Hello World</h1>', }); var app = new Vue({ el: '#app', data: {}, }); </script> </body> </html>
<html> <head> <meta charset="utf-8" /> <title>vue render </title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <body> <div id="app"></div> <script> var app = new Vue({ el: '#app', render: function(createElement){ return createElement('h1','Hello World') } }) </script> </body> </html>
今度はrenderとdataを連動させてみます。
[renderとdata]
<html> <head> <meta charset="utf-8" /> <title>vue render </title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <body> <div id="app"></div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello World' }, render: function(createElement){ return createElement('h1',this.message) } }) </script> </body> </html>