Closed5
Svelteを触ってみる
ピン留めされたアイテム
目的
- 実験的に使える機会があったので、一通り触ってみる。
- ただ単に使ってみたかった。
技術
- Svelte
- TailwindCSS
- axios(通信)
- TypeScript
参考
画像ファイルのインポート
下記でいけるかと思ったら無理だった。
import icon from './assets/icon.png'
<ImageComponent src={icon} />
解決
- 静的な画像ファイルはpublicディレクトリに置く
<ImageComponent src={'/assets/icon.png'}
UMD形式しかないパッケージを使いたい時
やったこと
index.html
<head>
<script src="https://unpkg.com/myscript/myscript.min.js"></script>
</head>
@types/window.d.ts
interface Window {
myscript: any;
}
でもこれだと結局、↓みたいなことをする必要があって微妙
const myscript = window.myscript;
const foo = new myscript('foo');
解決?策
context="module"が使えそう(https://svelte.jp/docs#script_context_module)
App.svelteで定義。
App.svelte
<script context="module">
export const myscript = window.myscript;
</script>
使う側
Example.svelte
<script lang="ts">
import { myscript } from '../App.svelte'
const foo = new myscript('foo');
</script>
《2021/06/22 追記》
当然だよなぁって感じのWarning...
(!) Circular dependency
src/App.svelte -> src/components/Example.svelte -> src/App.svelte
他にもっといい方法があったら教えてください。
結局、Circular dependencyの問題は切り分けることで解決した。
解決前
Circular dependency
App.svelte
<script lang="ts" context="module">
export const myscript = window.myscript;
</script>
<script>
// Do something
</script>
子要素
Child.svelte
<script lang="ts">
import { myscript } from './App.svelte';
// Do something with myscript
</script>
解決
新規にsrc
配下に modules
ディレクトリを作成し、そこにmoduleを切り出す。
modules/Modules.svelte
<script lang="ts" context="module">
export const myscript = window.myscript;
// ここに追加していく。
</script>
Child.svelte
<script lang="ts">
import { myscript } from './modules/Modules.svelte';
// Do something with myscript
</script>
このスクラップは2021/07/07にクローズされました