亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Svelte調(diào)試模式j(luò)s級(jí)別差異和細(xì)化后的體積差異詳解

 更新時(shí)間:2022年12月23日 11:14:57   作者:黎燃  
這篇文章主要為大家介紹了Svelte調(diào)試模式j(luò)s級(jí)別差異和細(xì)化后的體積差異詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

js級(jí)別的差異

主要來(lái)自兩個(gè)方面:hook系統(tǒng)(不考慮類)和ecma-ast差異hook系統(tǒng)。 鉤子系統(tǒng)的api更多地用于純函數(shù)組件注入狀態(tài)和生命周期。在這兩個(gè)方面,Svelte提供的解決方案是不同的。 由于預(yù)運(yùn)行編譯,Svelte編譯器掃描所有與UI相關(guān)的狀態(tài)并注入黑魔法,使得狀態(tài)的使用與變量聲明和賦值一樣簡(jiǎn)單。 基本上,開(kāi)發(fā)人員不需要太在意所謂的副作用;因此,一些鉤子接口在Svelte框架上是冗余的。然而,考慮到大量的鉤子接口,我們選擇了內(nèi)置的svelte鉤子來(lái)簡(jiǎn)化轉(zhuǎn)換過(guò)程中的轉(zhuǎn)換邏輯。SVelte鉤子是一組基于SVelte的鉤子接口,通過(guò)對(duì)react鉤子進(jìn)行基準(zhǔn)測(cè)試來(lái)實(shí)現(xiàn),這些鉤子在使用中基本相同。

<script>
	import Nested from './Nested.svelte';
</script>
<style>
	p {
		color: purple;
		font-family: 'Comic Sans MS', cursive;
		font-size: 2em;
	}
</style>
<p>These styles...</p>
<Nested/>

ecma ast差異

ecma ast difference babel提供的解析是基于estree的,但同時(shí)一些類型也在此基礎(chǔ)上進(jìn)行了改進(jìn)。有關(guān)具體差異,請(qǐng)參閱此處的babel解析器[1]。細(xì)化的數(shù)據(jù)類型有助于我們進(jìn)行轉(zhuǎn)換推斷,因此我們沒(méi)有使用babel來(lái)提供estree插件,并且在轉(zhuǎn)換之后,ast再次被平滑。 CSS轉(zhuǎn)換比上述兩部分的轉(zhuǎn)換簡(jiǎn)單得多。React樣式是標(biāo)準(zhǔn)css,Svelte樣式也是標(biāo)準(zhǔn)css。但是,它將增加一定的編譯能力。可以理解,它是標(biāo)準(zhǔn)css的超集,可以直接使用。然而,為了平滑jsx和Svelte html在自定義組件的類選擇器中的差異,我們?nèi)匀辉诰幾g階段進(jìn)行了一些轉(zhuǎn)換,這里不再展開(kāi)。

<script>
	let count = 0;
	function handleClick() {
		count += 1;
	}
</script>
<button on:click={handleClick}>
	Clicked {count} {count === 1 ? 'time' : 'times'}
</button>

細(xì)化后的體積差異

<script>
	import { quintOut } from 'svelte/easing';
	import { fade, draw, fly } from 'svelte/transition';
	import { expand } from './custom-transitions.js';
	import { inner, outer } from './shape.js';
	let visible = true;
</script>
<style>
	svg {
		width: 100%;
		height: 100%;
	}
	path {
		fill: white;
		opacity: 1;
	}
	label {
		position: absolute;
		top: 1em;
		left: 1em;
	}
	.centered {
		font-size: 20vw;
		position: absolute;
		left: 50%;
		top: 50%;
		transform: translate(-50%,-50%);
		font-family: 'Overpass';
		letter-spacing: 0.12em;
		color: #676778;
		font-weight: 400;
	}
	.centered span {
		will-change: filter;
	}
</style>
{#if visible}
	<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103 124">
		<g out:fade="{{duration: 200}}" opacity=0.2>
			<path
				in:expand="{{duration: 400, delay: 1000, easing: quintOut}}"
				style="stroke: #ff3e00; fill: #ff3e00; stroke-width: 50;"
				d={outer}
			/>
			<path
				in:draw="{{duration: 1000}}"
				style="stroke:#ff3e00; stroke-width: 1.5"
				d={inner}
			/>
		</g>
	</svg>
	<div class="centered" out:fly="{{y: -20, duration: 800}}">
		{#each 'SVELTE' as char, i}
			<span
				in:fade="{{delay: 1000 + i * 150, duration: 800}}"
			>{char}</span>
		{/each}
	</div>
{/if}
<label>
	<input type="checkbox" bind:checked={visible}>
	toggle me
</label>
<link  rel="external nofollow"  rel="stylesheet">

不可能100%準(zhǔn)確地將運(yùn)行時(shí)jsx編譯成靜態(tài)html,弱類型語(yǔ)言的變量跟蹤不可靠,非本地邏輯控制語(yǔ)法不能在編譯器中逐一枚舉; 目前,在轉(zhuǎn)換工作中仍然存在許多與編譯相關(guān)的問(wèn)題,但這些問(wèn)題可以通過(guò)一些插件來(lái)補(bǔ)充并逐步改進(jìn)。大型項(xiàng)目包裝量的現(xiàn)狀不容樂(lè)觀。 Svelte可以通過(guò)預(yù)運(yùn)行編譯按需打包整個(gè)框架來(lái)有效地減少包容量,但編譯產(chǎn)品本身沒(méi)有優(yōu)勢(shì)。頁(yè)面的UI交互越復(fù)雜,編譯產(chǎn)品就越大。 此外,對(duì)框架的依賴程度越高,整體包裝量的優(yōu)勢(shì)就會(huì)消失;此外,我們的轉(zhuǎn)換器為編譯增加了一定的復(fù)雜性,以平滑差異,因此仍有很大的空間來(lái)優(yōu)化編譯產(chǎn)品的數(shù)量。沒(méi)有性能,沒(méi)有前端。我們?nèi)匀蝗狈﹃P(guān)于性能的數(shù)據(jù),但我們也從一些第三方文章中了解到,Svelte的整體性能并不是瓶頸。 理論上,通過(guò)編譯實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的DOM是簡(jiǎn)單而有效的。理論上,脫離虛擬DOM也會(huì)提高內(nèi)存性能;但是,我們將單獨(dú)查看性能。預(yù)運(yùn)行編譯的思想不僅適用于框架,也適用于組件,這也會(huì)帶來(lái)很多好處。

調(diào)試模式

它可以與{@debug…}一起使用以替換控制臺(tái)。log(…)。每當(dāng)指定變量的值發(fā)生變化時(shí),它都會(huì)記錄這些變量的值。如果打開(kāi)devtools,代碼執(zhí)行將在{@debug…}語(yǔ)句的位置暫停。 它接受單個(gè)變量名:

<script>
	let user = {
		firstname: 'Ada',
		lastname: 'Lovelace'
	};
</script>
{@debug user}
<h1>Hello {user.firstname}!</h1>

on:事件名

可以使用的修改器有: PreventDefault:調(diào)用事件。preventDefault()在程序運(yùn)行之前 StopPropagation:調(diào)用事件StopProparation()以防止事件到達(dá)下一個(gè)標(biāo)記 被動(dòng):提高了觸摸/滾輪事件的滾動(dòng)性能(Svelte將在適當(dāng)?shù)那闆r下自動(dòng)添加) capture:表示其程序是在捕獲階段觸發(fā)的,而不是通過(guò)冒泡 一次:程序運(yùn)行一次后刪除自身 可以連接修飾符,例如:?jiǎn)螕魘once|capture={…}。 如果未為使用的on:命令事件指定特定值,則意味著組件將負(fù)責(zé)轉(zhuǎn)發(fā)事件,這意味著組件的用戶可以監(jiān)聽(tīng)事件。

<form on:submit|preventDefault={handleSubmit}>
</form>

svelte:options

<svelte:options>標(biāo)記為組件提供編譯器選項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱。選項(xiàng)包括: Immutable={true}-從不使用變量數(shù)據(jù),因此編譯器可以很容易地檢查等式以確定值是否已更改。 不可變={false}-默認(rèn)選項(xiàng)。Svelte在處理可變對(duì)象值更改時(shí)趨于保守。 Accessors={true}-向組件的屬性添加getter和setter。 訪問(wèn)器={false}-默認(rèn)值。 命名空間=“…”-讓組件使用命名空間。最常見(jiàn)的是“svg”。 Tag=“…”-將此組件編譯為自定義標(biāo)記時(shí)使用的名稱。

<svelte:options tag="my-custom-element"/>

此onMount函數(shù)用作回調(diào),在組件安裝到DOM后立即執(zhí)行。它必須在組件初始化期間調(diào)用(但不一定在組件內(nèi)部;可以從外部模塊調(diào)用)。 OnMount不在內(nèi)部運(yùn)行。

<script>
	import { onMount } from 'svelte';
	onMount(() => {
		const interval = setInterval(() => {
			console.log('beep');
		}, 1000);
		return () => clearInterval(interval);
	});
</script>

setContext

使用指定的鍵將任何上下文對(duì)象與當(dāng)前組件相關(guān)聯(lián)。然后,通過(guò)getContext函數(shù)將上下文應(yīng)用于組件的子級(jí)(包括帶有槽的內(nèi)容)。與生命周期函數(shù)一樣,它必須在組件初始化期間調(diào)用。

<script>
	import { setContext } from 'svelte';
	setContext('answer', 42);
</script>

以上就是Svelte調(diào)試模式j(luò)s級(jí)別差異和細(xì)化后的體積差異詳解的詳細(xì)內(nèi)容,更多關(guān)于Svelte調(diào)試模式j(luò)s級(jí)別差異的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • ResizeObserver 監(jiān)視 DOM大小變化示例詳解

    ResizeObserver 監(jiān)視 DOM大小變化示例詳解

    這篇文章主要為大家介紹了ResizeObserver 監(jiān)視 DOM大小變化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 微信小程序 Image API實(shí)例詳解

    微信小程序 Image API實(shí)例詳解

    這篇文章主要介紹了微信小程序 Image API實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • JS前端性能指標(biāo)定位FMP使用詳解

    JS前端性能指標(biāo)定位FMP使用詳解

    這篇文章主要為大家介紹了JS前端性能指標(biāo)定位FMP使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • JavaScript深拷貝方法structuredClone使用

    JavaScript深拷貝方法structuredClone使用

    這篇文章主要為大家介紹了JavaScript深拷貝方法structuredClone使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 微信小程序 navbar實(shí)例詳解

    微信小程序 navbar實(shí)例詳解

    這篇文章主要介紹了微信小程序 navbar實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Javascript繼承(上)——對(duì)象構(gòu)建介紹

    Javascript繼承(上)——對(duì)象構(gòu)建介紹

    Javascript中除了基本數(shù)據(jù)(Undefined、Null、Boolean、Number、String),其他都是對(duì)象(Object)
    2012-11-11
  • axios?攔截器管理類鏈?zhǔn)秸{(diào)用手寫(xiě)實(shí)現(xiàn)及原理剖析

    axios?攔截器管理類鏈?zhǔn)秸{(diào)用手寫(xiě)實(shí)現(xiàn)及原理剖析

    這篇文章主要為大家介紹了axios?攔截器管理類鏈?zhǔn)秸{(diào)用手寫(xiě)實(shí)現(xiàn)及原理剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 最新評(píng)論