1. このページの目的
vue.js の学習001 と Vue コンポーネントの基本 を Web Components で実装する。
Web標準仕様でどこまでできるか?
2. デモ
app
innerHTML
or textContent
を使えばよい。
app-2
title
属性を使えばよい。
app-3
<app-3></app-3>
<script type="module">
import App3 from './app3.js';
window.customElements.define('app-3', App3);
</script>
- app3.js を参照
app-4
<app-4></app-4>
<script type="module">
import App4 from './app4.js';
window.customElements.define('app-4', App4);
</script>
- app4.js を参照
app-5
<app-5></app-5>
<script type="module">
import App5 from './app5.js';
window.customElements.define('app-5', App5);
</script>
- app5.js を参照
app-6
<app-6></app-6>
<script type="module">
import App6 from './app6.js';
window.customElements.define('app-6', App6);
</script>
- app6.js を参照
app-7
少し面倒そうなのでとばす。
app-8
Vue.js の Computed Properties という機能だが、さすがに Web Components にこれはない。
Vue コンポーネントの基本
<button is="button-counter"></button>
<button is="button-counter" count="5"></button>
<button is="button-counter" count="10"></button>
<script type="module">
import ButtonCounter from './button-counter.js';
window.customElements.define('button-counter', ButtonCounter, {extends: 'button'});
</script>
count
属性を追加して、カウンター初期値をセットできるようにした。
3. メモ
- Vue.js はHTML要素を JavaScriptオブジェクトから操作できるが、Web Components は HTMLElement として操作する感じ。
- Vue.js より記述量は増えるが、コードの意味が分かりやすいと感じる。
- https://validator.w3.org/nu/ でチェックすると、
count
属性がエラーになっている。
4. 参考
- 特になし