こんにちは!
フロントエンドの技術進歩は目まぐるしく変化していますね。
JSフレームワークの一つ「Svelte」は一年前くらいから人気が高まっているようです。
こちらの海外サイトによると、2019年のReact, Vue.jsなど主要フレームワークの中で、
最も認知度が低く、最も関心度が高いJSフレームワークだそうです。
本記事用にJSフレームワーク「Svelte」で割り算ツールを作ってみました。
・Svelteがとっても簡単に書ける
・svelte-material-ui
はいい感じ♪
これらのことがお伝えできればいいなと思います。
環境構築
Svelteプロジェクト作成
npx degit sveltejs/template svelte-sample
cd svelte-sample
npm install
npm run dev
svelte-material-uiの導入
こちら手順は必須ではありません。
CSSを書くのが面倒くさかったので、導入しました。笑
手順については、@hisayukiさんの記事を参考にしていただければと思います。
https://qiita.com/hisayuki/items/11e625c647cc421cbe86
@hisayukiさんありがとうございます。
割り算ツールの作成
App.svelte
を開き、以下のように記述します。
<script>
// svelte-material-uiのコンポーネントをimport
import Button, {Labeln} from '@smui/button';
import Textfield, {Input} from '@smui/textfield';
import Card from '@smui/card';
import HelperText from '@smui/textfield/helper-text/index';
// 割られる数
let dividend = '';
// 割る数
let divisor = '';
// 結果
let result = '';
// CALUCULLATEボタンを押したときの処理
function handleClick() {
if (dividend && divisor) {
if (!isNaN(Number(dividend)) && !isNaN(Number(divisor))) { {
if (divisor != 0) {
result = dividend / divisor;
} else {
alert('0で割ってはいけません。');
}
} else {
alert('数字を入力してください。');
}
} else {
alert('入力値が空白です。');
}
}
</script>
<main>
<h1>割り算</h1>
<div style="display:flex; flex-wrap: wrap;">
<div>
<Textfield variant="outlined" dense bind:value={dividend} label="割られる数" input$aria-controls="helper-text-dense-c" input$aria-describedby="helper-text-dense-c" />
<HelperText id="helper-text-dense-c">例:1, 222, -33, 4321</HelperText>
</div>
<div style="padding: 15px;">
÷
</div>
<div style="display: inline-block">
<Textfield variant="outlined" dense bind:value={divisor} label="割る数" input$aria-controls="helper-text-dense-c" input$aria-describedby="helper-text-dense-c" />
<HelperText id="helper-text-dense-c">例:1, 222, -33, 4321</HelperText>
</div>
</div>
<Button on:click={() => {handleClick()}} variant="outlined"><Label>Caluculate</Label></Button><br/>
<h2>Result</h2>
<div class="card-number">
<Card style="width: 210px;" padded>{result}</Card>
</div>
</main>
svelte-material-uiはいい感じです!
詳しくは▶︎こちら
所感
今回はほとんどJSとReact, HTML, CSSの知識で作れてしまいました。
ReactのStateのようなSvelte特有の機能は使用しませんでした。
Reactを少し触ったことある方であれば、チュートリアルをやらずとも作れてしまうと思います。
(本当はチュートリアルはやった方がいいと思いますが、、)
参考URL
https://note.com/kawa1228/n/n3a45fab21f99#fWe6h
https://qiita.com/hisayuki/items/11e625c647cc421cbe86