Contenu connexe
Similaire à Vue.jsをhaxeで (20)
Vue.jsをhaxeで
- 2. 自己紹介:terurou
• デンキヤギ(株) 代表取締役
• NGK2017B実行委員、DSTokai管理人
• 主に基盤チームおじさん
• Transiru(自社開発)に最近やっと携われるように…
• プレゼン(スライド+音声)をWeb配信
• ビジネス面での転換もあり、Haxe/JS + Vue.jsで作り直し中
- 5. Vue.jsとは
• 三大Web Frontend Frameworkの一角(2017年末時点)
• Vue.js以外はReact(+Redux), Angular
• 学習コストが低い(vs Angular, React/Redux)
• 原理主義すぎない, Webは泥臭い(vs React)
• オールインワンではない(vs Angular)
• 他より手軽で、開発規模が小さくても適用しやすいが、
プロジェクト統制力が若干劣る
- 6. Haxeとは
• オブジェクト指向+関数型
• ActionScript 3(ECMAScript4の構文+OCaml)
• マルチプラットフォームをターゲットにコンパイル
• JS, Flash, C++, C#, Java, PHP, Lua, …
• ゲームでの実績が多い
• Haxe創始者はShiro Games(Indie Game開発)のCTO
• 日本国内の著名なユーザー企業はヌーラボ社
- 12. Single File Components(SFC)とは
• JS(NPMモジュール), HTML Template, CSS Modulesを
1ファイルにまとめて、コンポーネント管理しやすく
• 性能面も有利
• Webpack (vue-loader)等でのビルドが必要となるが、
Template文字列が事前コンパイルされる
• Vue.js自体を軽量版(Template Compiler抜き)にできる
• 開発ツールサポートあり(VS Code Plugin: vetur)
- 19. そもそもSFCを使うと何が嬉しいんだっけ?
• JS(NPMモジュール), HTML Template, CSS Modulesを
1ファイルにまとめて、コンポーネント管理しやすく
• 性能面も有利
• Webpack (vue-loader)等でのビルドが必要となるが、
Template文字列が事前コンパイルされる
• Vue.js自体を軽量版(Template Compiler抜き)にできる
• 開発ツールサポートあり(VS Code Plugin: vetur)
- 20. そもそもSFCを使うと何が嬉しいんだっけ?
• JS(NPMモジュール), HTML Template, CSS Modulesを
1ファイルにまとめて、コンポーネント管理しやすく
• 性能面も有利
• Webpack (vue-loader)等でのビルドが必要となるが、
Template文字列が事前コンパイルされる
• Vue.js自体を軽量版(Template Compiler抜き)にできる
• 開発ツールサポートあり(VS Code Plugin: vetur)
- 25. Vue.hxというものを作り始めた
• Haxe extern for Vue.js
• Vue.js extern自体は他にも存在するが敢えて新規開発
• SFCの扱い方に新規性がある
• GitHub
• https://github.com/DenkiYagi/vue.hx
• この発表の時点では「ソースが置いてあるだけ」の状態
- 30. Vue.hxでのコンポーネント定義イメージ
// Hello.hx
import vuehx.IVueComponent;
class Hello implements IVueComponent {
// vue.jsのオプションを記述
var _ = {
data: function () {
return { name: "terurou" };
}
}
}
<!– Hello.vue -->
<template>
<p class="$styles.hello">Hello
{{name}}!</p>
</template>
<style modules>
.hello { font-size: 20px; }
</style>
IVueComponentを継承するとマクロが
自動でSFCをコンパイル+結合する。
Single Fileとは何だったのか。
- 32. Webpackを捨てた影響
• Hot Module Replacement(HMR)が利用不能に
• Haxe/JSはビルドが超高速なので、影響なしでは???
• そもそも「モダンJS開発のビルド遅すぎで開発効率が低い」
問題に対するワークアラウンドがHMRという認識
• HMRでは開発ビルドと本番ビルドと大きな差異が発生する
• Browsersync等でのオートリロードで必要十分
• むしろ生産性は向上したのでは???