6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Riot.jsAdvent Calendar 2017

Day 14

Riotタグの外側にコードを書く

Last updated at Posted at 2017-12-13

Riotのタグファイルを作る際に、実はタグの外側にもコードを書けます。

タグファイルとJavaScript

ふつう、Riotのタグファイルといえば、以下のようなものをイメージするでしょう。

典型的タグファイル
<tag-name>
  <div>
    <!-- 略 -->
  </div>

  <style>
    /* 略 */
  </style>

  <script>
    // 略
  </script>
</tag-name>

実は、Riotのコンパイラは、タグの外側にJavaScriptを書くことも認めています(テストケースと、その期待される結果)。

JavaScriptを外側に書いた例
alert('foo')

<test-tag>
</test-tag>
コンパイル後の結果
alert('foo')

riot.tag2('test-tag', '', '', '', function(opts) {
});

何に使う?

ブラウザ内コンパイルで使うようなRiotタグだと使いづらいかもしれませんが、Webpackなどに組み込んだ系では、けっこう使いみちがあります(この場合、外側に書いたコードもWebpackの1モジュールとして、無名関数でスコープが切られます)。

  • タグ内から別のタグを呼び出している場合に、そのタグをrequireすることで、依存関係を明確にする
  • タグ内で使う別な関数を、事前にrequireしておく
  • キャッシュなど、全てのタグインスタンスで共有できるデータ

なお、タグ内に書いたJavaScriptコードは、タグのマウントのたびに実行されるのに対して、外側に書いたコードはコード自体の読み込み時(作り方によって違ってきますが、DOMContentLoadedより前ということも考えられます)に動くので、そのあたりには注意が必要です。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?