ut.code(); Learnへ戻る

作ったサイトを公開してみよう

タイトル画像

Vite + TS(準備中)

Astro(準備中)

SvelteKit

プロジェクト作成

GitHub Pagesにデプロイする

Cloudflare Pagesにデプロイする

Svelteことはじめ

stateを使ってみる

コンポーネントを利用する

Eachブロック、Ifブロック

ページ遷移、画像の使い方

自作コンポーネントの入れ子

ちょっとした小技

Svelteことはじめ

ここまでの内容で、Webサイトをデプロイする方法はわかったと思います。ここからは、実際にSvelteを使ってWebページをデザインする方法を見ていきましょう。ここからのページの内容は、Svelteの公式サイトの内容を元に書かれています。また、公式チュートリアルでは、より丁寧に解説されているので、こちらもぜひやってみてください。

Svelteとは

(以下、私としてもよくわかっていないところとなります。正確なところが気になるなら自分で調べてみてください。)Svelteとは、一言で言えばコンパイラです(多分)。Svelteの文法(といってもほぼHTML、CSS、JavaScriptそのままに近いですが)で書いたコードを、実際にブラウザで動くコードに変換してくれます。こいつを利用してWebアプリケーションを開発するためのフレームワークがSvelteKitとなり、これまで頑張って導入したものです。個人的に、生のHTML、CSS、JavaScriptを書くのと近い感覚で書けるので、お手軽でいいなと感じます。

とりあえず書いてみよう

なんだかんだ言われてもなにがなんだか分からないと思うので、とりあえずなんか書いていこうと思います。先程作ったプロジェクトの、src/routes/+page.svelteを開いてください。そしたら、次の内容が書かれていると思います。

<h1>Welcome to SvelteKit</h1>
<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>

お気付きの通り、皆さんの知っているHTMLのままだと思います。では次に、これにスタイルをあてていきましょう。このコードの続きに、以下の内容を追加してください。

<style>
    h1{
        color: red;
    }
    p{
        color: blue;
    }
</style>

文字の色が変わったと思います。このように、Svelteでは、CSSはstyleタグの中に書いていく形となります。

また、特定のHTMLタグだけにCSSを適用したい場合は、style属性を直接書き込むことができます。HTMLの部分に、以下のコードを追加してみてください。

<h1 style="color: green;">直接style属性を当てています</h1>

緑色の文字が追加されたと思います。

では、次はJavaScriptを書いていきましょう。といっても、今後TypeScriptのほうが何かと役に立つと思うので、このサンプルではTypeScriptで書いていきます。(ここで扱う範囲では大して違いはないはずです。)では、次のコードを追加してみてください。

<script lang="ts">
    console.log("Hello!");
</script>

追加してからこのページを開いて開発者ツールで見てみると、Hello!と出力されていると思います。このように、Svelteでは、スクリプトはscriptタグの中に書いていきます。ちなみに、TypeScriptではなくJavaScriptで書きたければ、lang="ts"の記述を消してください。

関数も、同様にscriptタグの中に記述していきます。次の関数を、scriptタグの中に追加してください。

function hello(){
    console.log("Hello!!");
}

この関数は、普通に呼び出してもいいですが、ここではボタンを使って呼び出してみましょう。HTMLの部分に、以下を追加してください。

<button onclick={hello}>ボタン</button>

ボタンを押したら、開発者ツールのコンソールにHello!!と出力されると思います。

上の例のように、Svelteでは、{}で囲んだ部分はJavaScript(TypeScript)として扱われます。後ほども紹介しますが、これは非常に重要であるため覚えておいてほしいです。

ちなみに、alertなどの一部の関数は、ボタンなどから呼び出す関数内では使用できますが、それ以外の場所では使用できません。console.logをalertに変えてみると、ボタンの方ではうまくいくと思いますが、そうでない方ではうまく行かないと思います。

さいごにもう一つ、{}内はスクリプトとして扱われるため、以下のようなボタンもしっかり動作します。やってみてください。

<button onclick={()=>{alert("Hello!!!")}}>ボタン2</button>

※ちなみに()=>{}というのはアロー関数式と言って、普通の関数とだいたい同じです。(少し違うらしいです。)

前へ
次へ

サードパーティライセンス