iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
Modern Web

Web Component 網頁元件之路系列 第 24

[Day24] - 介紹 Svelte.js 如何使用

  • 分享至 

  • xImage
  •  

前幾天我們有說明 Virtual Dom 如何實作 ,

今天我們來介紹一個 反對 Virtual Dom 的工具 Svelte.js

Svelte.js LOGO

內文

Svelte.js 也是一個 Compiler 工具的 Web Component 編譯器( 框架 )

所以開頭就是用 CLI 建立專案拉 ~~

one 利用 Svelte REPL 建立新專案

Svelte 的 CLI 改名很多次 Svelte REPL . Svelte CLI . SvelteKit 都是指 CLI 工具

npx degit sveltejs/template my-svelte-project
cd my-svelte-project
# to use TypeScript run:
# node scripts/setupTypeScript.js

npm install
npm run dev

two 在設定檔中開啟 web component 的設定

rollup.config.js 檔中 加上 customElement: true

 plugins: [
    svelte({
      compilerOptions: {
        customElement: true,
        ...
      }
      ...
    }),
    ...
  ]

three 使用 <svelte:options tag="[tag-name]" /> 來定義 web component

App.svelte

<svelte:options tag="what-ever" />

<script>
  // make sure component Foo is available, but we don't import
  // it... we'll use it with it's tag <my-foo /> (see bellow)
  import './Foo.svelte'
  export let name = 'World'
</script>

<p>Hello, {name}!</p>

<my-foo {name} />

<style>
 p { color: skyblue; }
</style>

Foo.svelte

<svelte:options tag="my-foo" />

<script>
  export let name
</script>

<p>I am {name}</p>

four 註解 App 的掛載

main.js

// 雖然 App 的沒被使用 , 但是需要將 import App.svelte , 
// svelte 才知道要將 App.svelte 內設定的 svelte:options 轉換成 web component
import App from './App.svelte';

/*
// 註解 new App 避免 svelte 的掛載行為 , 我們只需要 web component
const app = new App({
	target: document.body,
	props: {
		name: 'world'
	}
});
 */

export default app;

成果

參考資料


上一篇
[Day23] - 介紹 Stencil.js 如何使用
下一篇
[Day25] - Vue 的 Html 字串處理 ( compiler 介紹 )
系列文
Web Component 網頁元件之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言