LoginSignup
11
12

More than 5 years have passed since last update.

Riot.js入門-2

Last updated at Posted at 2016-09-29

今回はRiot.jsの基本構造の紹介です。

基本構造

sample.tag
<sample>
    <!-- HTML:Template -->
    <h1>hello world</h1>

    <!-- CSS:Style -->  
    <style>
        h1 {
            color: #f00;
        }
    </style>

    <!-- Javascript:Logic -->
    <script>
        console.log('Riot.js入門');
    </script>
</sample>

コンポーネントは、このように上から順にテンプレート→スタイル→ロジックと定義していきます(この順番は厳密なものではありません)。

何も珍しいことはないですね。見慣れたHTMLそのものです。

スコープ

これで問題なく動くのですが、このままだとスタイルがページ全体に適応されてしまいます。

コンポーネントは 『内部で完結していて、外部に影響を与えないこと』 が大事なので、影響範囲をコンポーネントの内部のみに適応する書き方をします。

<style scoped>
    :scope {
        display: block;
    }

    h1 {
        color: #f00;
    }
</style>

この scoped アトリビュートを記述することで、同一ページにある他の h1 タグには影響を与えず、sample.tag の中の h1 にのみスタイルを適応できます。

ついでに :scope<sample /> 自身のスタイルを定義できます(この場合は <sample /> はブロック要素になる)。

プリプロセッサ

デフォルトのままだと style の中にはCSS、script の中にはes5標準のJavascriptしか書けませんが、

type アトリビュートを用いることで、好きなプリプロセッサを利用することができます。

<style type="text/scss">
    .hogehoge {
        .fugafuga {
            /* hogehoge */
        }
    }
</style>

<script type="text/babel">
    const TITLE = 'Riot.js入門';
</script>

Rito.jsが公表でサポートしているのは以下の通りです。

CSS

  • less
  • sass
  • scss
  • stylus

JS

  • livescript
  • typescript
  • es6 - (babel-coreまたはbabelを使用)
  • babel - (babel-core v6.x またはes2015プリセットを使用)
  • coffee または coffeescript
11
12
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
11
12