svelte教程(1)簡介

什么是svelte?

Svelte是用于構(gòu)建快速Web應用程序的工具。

它類似于React和Vue這樣的JavaScript框架。但是有一個關(guān)鍵的區(qū)別:Svelte在構(gòu)建時將您的svelte代碼轉(zhuǎn)換為理想的JavaScript 代碼,而不是在運行時解釋您的代碼。想要詳細了解請查看svelte簡介。
注:本教程中使用了Sapper框架進行svelte程序的開發(fā)。學習語法環(huán)節(jié)不需要掌握sapper框架的使用,想要了解的話請查看sapper文檔
本教程的所有代碼均上傳到github有需要的同學可以參考 https://github.com/sullay/svelte-learn。

組件 components

在Svelte中,一個應用程序由一個或多個組件組成。組件是可重用的獨立代碼塊,它封裝在一起的HTML,CSS和JavaScript,并寫入.svelte文件中。

添加數(shù)據(jù)

在組件中聲明一個變量name并在html中進行引用?!皗}”內(nèi)可以使用任何JavaScript代碼。

<script>
    let name = 'world';
</script>

<h1>Hello {name}!</h1>
<h1>Hello {name.toUpperCase()}!</h1>

如果變量名于屬性名相同的情況下,可以簡寫例如src={src}。

<script>
    let name = 'world';
    let src ="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1570390818923&di=1b477739d17e14e5d8ee39b19cb40748&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F012e3b5954ee3da8012193a387c830.png%401280w_1l_2o_100sh.png"
</script>

<img {src} alt="Hello {name}!">

樣式style

組件中可以使用<style>添加樣式并且這些css規(guī)則只適用于當前組件。
實現(xiàn)方式是給組件內(nèi)的所有css選擇器都添加一個相同的class選擇器并且與其他組件不相同,例如:

h1{
 text-align: center;
}

h1.svelte-17zljpa{
 text-align: center;
}

同時也給所有的標簽添加一個相同的class屬性。

<style>
h1{
    text-align: center;
}
img{
    width: 100%;
}
</style>

<script>
    let name = 'world';
    let src ="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1570390818923&di=1b477739d17e14e5d8ee39b19cb40748&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F012e3b5954ee3da8012193a387c830.png%401280w_1l_2o_100sh.png"
</script>

<h1>Hello {name}!</h1>
<h1>Hello {name.toUpperCase()}!</h1>
<img {src} alt="Hello {name}!">

如果希望css規(guī)則能夠全局生效可以使用:global關(guān)鍵字。
實現(xiàn)方式是global修飾的選擇器不會添加class選擇器。

<style>
/* 所有h1標簽 */
:global(h1){
    color: red;
}
/* main標簽內(nèi)的所有h1標簽 */
main :global(h1){
    color: red;
}
</style>

引入子組件

注意:自定義組件變量名首字母需為大寫字母。并且父組件中的樣式不會對子組件生效,反之也一樣。

// sullay.svelte
<h1>I am sullay!</h1>

// index.svelte
<script>
    import Sullay from '../components/sullay.svelte'
</script>
<Sullay/>

原樣顯示

在Svelte中,您可以使用特殊{@html ...}標簽進行原樣顯示。

<style>
.html h1{
    color: chartreuse;
}
</style>

<script>
    let html="<h1>I am sullay!</h1>"
</script>

<div class="html">{@html html}</div>

測試發(fā)現(xiàn)上面代碼中的color: chartreuse;并沒有生效。
原因是因為{@html ...}中的標簽并沒有添加對應此組件的class屬性。
修改一下上面的代碼,如下:

<style>
.html :global(h1){
    color: chartreuse;
}
</style>

<script>
    let html="<h1>I am sullay!</h1>"
</script>

<div class="html">{@html html}</div>

閱讀本文后相信你對svelte的使用已經(jīng)有一個簡單的認識,后續(xù)還會更多svelte教程的內(nèi)容。部分內(nèi)容來自于官方教程,有興趣的可以結(jié)合起來一起看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,678評論 0 7
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,801評論 0 3
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,368評論 0 6
  • 又是嫌棄自己的一天 又是感覺自己什么都不行 他們參加比賽都是一種非常有勇氣的選擇 挑戰(zhàn) 冒險 其實就令我欽佩 現(xiàn)在...
    愛元若哥哥閱讀 52評論 0 0
  • 在太陽漸漸走到中天的時候,有一個瘸著腿的男人正從便利店前走過,弓著腰,佝僂著身子,如同一只剛剛走過沙漠的駱駝。 他...
    雨傘先生閱讀 414評論 0 1

友情鏈接更多精彩內(nèi)容