国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Qwik簡介:一個超快的JavaScript框架

譯文
開發 前端
Qwik對代碼拆分和延遲加載的創新方法為前端JavaScript提供了一種新的發展方式。本文將對Qwik進行簡要介紹。

譯者 | 李睿

審校| 孫淑娟

Qwik對響應式用戶界面(UI)的工作方式進行了大膽的反思。其核心前提是框架從頭開始構建,以使用最少的JavaScript交付HTML,只要足夠的JavaScript就可以根據需要逐步引入交互性。

Qwik使用一種細粒度的模型來隔離應用程序的分段,這些分段根據需要進行水合。通過從基本原則出發,Qwik可以實現其他無法實現的性能,并代表了前端JavaScript的另一種發展路徑。  

Qwik的狀態  

Qwik仍處于早期版本中,但它已經推出了一段時間。在StackBlitz中有一個功能完整的示例,一個REPL游樂場和一個命令行工具。Qwik也已經發展到支持對開發人員更友好的、類似響應的語法。其底層仍然是一個高級的、獨一無二的響應式引擎,它定義了狀態、模板和偵聽器的響應邊界。

(1)可恢復性

Qwik使用了巧妙的服務器端和客戶端渲染的組合,以避免當代框架在兩次(一次在服務器上,一次在客戶端上)執行水合工作時重復。

正如Qwik的創建者Misko Hevery所寫:Qwik的基本思想是它是可恢復的。它可以在服務器停止的地方繼續。在客戶端上只需要執行最少的代碼。

或者換一種方式:讓服務器設置一個功能盡可能完整的HTML頁面,并允許客戶端執行盡可能少的工作,以便繼續或恢復用戶的進程。

帶有服務器端渲染(SSR)的響應式框架中的典型流程是,首先在服務器上生成應用程序的版本,然后將其發送到客戶端,客戶端渲染架式應用程序。在這一點上,客戶端應用程序接管了任務,基本上必須再次引導同一應用程序,以便將一個正常運行的客戶端連接在一起。

這個過程被稱為水合作用。有幾種巧妙的方法可以提高水合作用的效率,但Qwik放棄了這些方法,采用了一種名為“可恢復性”的新方法。  

可恢復性意味著客戶機可以從服務器中斷的地方開始,而不必在客戶機上重新構建應用程序。

(2)交互時間  

Qwik努力提升的指標是交互時間(TTI)。這是指用戶向網頁發出請求和網頁響應用戶交互之間的時間間隔。

加載時間(TTL)跟蹤客戶端完成接收所有所需數據所需的時間(因此是一個主要由文件大小和網絡速度決定的指標),交互時間(TTI)考慮了現代JS框架的一個突出事實:一旦下載了數據,客戶端就必須解壓縮,并執行所需的JavaScript代碼,以使頁面具有交互性。

響應式引擎需要做很多工作。引擎必須分解/解析所有標記(如JSX),這些標記通過變量和表達式來根據狀態的變化修改所顯示的內容,以及根據代碼的行為。  

另一端是一個簡單的HTML頁面。一旦瀏覽器掌握了它,頁面就可以開始移動了。這就是谷歌的PageSpeed Insights給Reddit.com這樣的頁面打32分(滿分100分),而原始HTML打100分的原因。

(3)閉包和偵聽器

Hevery將快速TTI的技術障礙描述為“死于封閉”。簡而言之,每個閉包必須維護封閉的信息世界這一事實意味著運行時應用程序是一個急切加載代碼的“千層餅”。  

Qwik采用的解決方案是使用與序列化監聽器交互的全局事件監聽器。換句話說,通用事件偵聽器用于編排按需實現的偵聽器,而不是下載并封裝在閉包中(不管它們是否實際執行)。  

Qwik的目標是提供與HTML一致的響應性,使其可序列化。根據標記中封裝的信息,只需要一個很小的可執行文件就可以在運行時顯示響應性。  

(4)代碼拆分并進行微調  

從另一個角度來看,Qwik正在執行微調的代碼拆分。當用戶需要時,它會根據需要加載交互代碼。如果有必要,捆綁器可以將這些塊打包成更大的塊。  

Qwik從頭構建,有三個獨立的函數,用于創建狀態、模板和偵聽器。這允許框架只加載手頭任務所需的內容。

狀態、模板和偵聽器這三個邊界一度由開發人員直接編碼。多虧了一個新的優化器工具,它可以將類響應式語法轉換為這些幕后邊界,可以得到一個相當熟悉的DX。優化器的工作是將實際代碼轉換為一組微小的存根,以便在必要時以小塊恢復應用程序。  

在優化器中,模板和偵聽器用美元符號表示,而狀態由useStore鉤子處理。稍后將看到這個語法。  

Qwik代碼的最終輸出看起來與其他框架不同,但是將Qwik與優化器一起使用可以使其與其他框架相媲美。Qwik還推出了QwikCity,這是一套更高級的功能(例如路由),可以讓構建完整的應用程序更容易。  

使用Qwik進行操作

現在已經理解了Qwik背后的概念,以下了解一下如何使用它進行編碼。清單1顯示了用Qwik編寫的一個簡單組件。(這個例子來自Qwik FAQ。)  

(1)清單1.簡單的Qwik組件  

import { component$ } from '@builder.io/qwik';
export const App = component$(() => {
console.log('render');
return <p onClick$={() => console.log('hello')}>Hello Qwik</p>;
});

清單1顯示了Qwik中的一個組件被定義為一個匿名函數,從Qwik庫傳遞到組件$函數中。每當在Qwik中看到美元符號$時,這是在讓優化器知道它需要做一些工作。Qwik將在應用程序的美元符號部分設置其細粒度延遲加載邊界。  

清單1中的onClick$是Qwik特殊語法的另一個例子。Qwik將使用一些技巧,在實際需要時只加載支持該功能所需的JavaScript。  

清單1中的代碼將被優化器分解為幾個片段,如清單2所示。  

(2)清單2.編譯后的Qwik組件  

/ The app.js file itself
import { componentQrl, qrl } from "@builder.io/qwik";
const App = /*#__PURE__*/
componentQrl(qrl(()=>import('./app_component_akbu84a8zes.js'), "App_component_AkbU84a8zes"));
export { App };
// app_component_akbu84a8zes.js
import { jsx as _jsx } from "@builder.io/qwik/jsx-runtime";
import { qrl } from "@builder.io/qwik";
export const App_component_AkbU84a8zes = ()=>{
console.log('render');
return /*#__PURE__*/ _jsx("p", {
onClick$: qrl(()=>import("./app_component_p_onclick_01pegc10cpw"), "App_component_p_onClick_01pEgC10cpw"),
children: "Hello Qwik"
});
};

// app_component_p_onclick_01pegc10cpw.js
export const App_component_p_onClick_01pEgC10cpw = ()=>console.log('hello');

在清單2中可以看到,Qwik沒有包含實際的組件功能,而是使用庫中的componentQrl()函數包含了一個引用。這個函數接受一個qrl()函數,該函數使用匿名函數導入生成的組件文件。組件之間的這種關聯都是由優化器在后臺管理的。開發人員不需要直接考慮這個問題。  

QRL代表Qwik URL,這是Qwik引用將被延遲加載的方式。基本上,只要框架需要延遲加載某些內容,它就會插入一個QRL,由特定于QRL的消費者包裝(比如組件、狀態或模板函數)。  

例如,組件QRL可以在子組件中找到的代碼的正確時刻加載,而父組件可以快速顯示其布局。與onClick處理程序類似:當單擊發生時,可以對它進行計算。

(3)Qwik CLI  

該命令行工具可從npm獲得,具有所期望的基本功能,包括創建、開發模式和生產構建。Qwik CLI使用Vite作為構建工具。可以使用npm create啟動新應用程序qwik@latest,這將啟動一個交互式提示。

如果創建一個簡單的應用程序并運行產品構建,會得到一個dist目錄,在那里可以看到前面描述的所有獨立的可惰性加載的應用程序塊。  

Qwik調整  

了解Qwik語法的一個有趣的地方是Qwik Cheat Sheet,它提供了Qwik和React代碼的并排比較。人們可能會發現,這并不是一個很難的過渡。有些領域非常相似,有些則主要需要思維的轉變。更大的收獲是,Qwik中的響應式系統與類響應式框架完全不同,盡管優化器實現了相似的語法。  

Qwik對代碼拆分和延遲加載的創新方法為前端JavaScript提供了一種新的發展方式,而了解事情的發展將會很有趣。

原文標題:??Intro to Qwik: A superfast JavaScript framework??,作者:Matthew Tyson

責任編輯:華軒 來源: 51CTO
相關推薦

2021-05-06 10:52:09

Java Spring Bo框架

2013-01-14 09:44:58

JavaScriptJSJS框架

2011-06-21 13:31:13

JavaScript

2023-02-28 11:59:59

2022-09-01 11:48:45

JavaScript框架

2012-01-04 13:55:23

Canvas

2024-01-15 00:35:23

JavaScript框架HTML

2023-05-04 10:43:42

Qwik前端框架

2016-11-29 13:31:52

JavaScriptsetTimeout定時執行

2023-06-13 08:01:27

qwikSolidJS?reactive

2021-08-16 08:53:07

Go 插件系統

2009-10-01 09:19:45

PHP框架ZendFramewoCake

2021-06-08 07:32:01

框架Mock測試

2024-09-14 14:14:26

Dubbo框架微服務

2020-09-29 15:08:47

Go UI框架開發

2014-02-14 09:37:01

JavascriptDOM

2018-09-18 10:11:21

前端vue.jsjavascript

2015-03-10 11:21:44

JavaScript組JavaScript

2014-06-16 09:11:29

快數據大數據

2014-08-15 10:34:42

快數據大數據
點贊
收藏

51CTO技術棧公眾號

精品乱码一区二区三四区视频| 电影亚洲精品噜噜在线观看| 丁香婷婷综合五月| 5g国产欧美日韩视频| 国产一区在线电影| 欧美成人合集magnet| 99久久综合国产精品二区| 亚洲激情第一页| 黄色动漫在线| 欧美日韩国产电影| 四虎久久免费| 日韩一区二区免费电影| 91se在线| 欧美日韩在线播放三区四区| 亚洲女人视频| 色综合久久中文字幕| 四虎影视精品成人| 91久久精品一区二区三| av小片在线| 日韩欧美综合在线| 亚洲精品福利电影| 中文字幕亚洲专区| 欧洲大片精品免费永久看nba| 欧美激情一级欧美精品| 老牛影视av一区二区在线观看| 777777777亚洲妇女| 精品久久久久中文字幕小说| 亚洲999一在线观看www| 黄色日韩在线| 影音先锋亚洲视频| 99久久国产综合精品色伊| 中文字幕国内自拍| 亚洲国产日韩精品| √天堂资源地址在线官网| 精品国产91洋老外米糕| 97成人超碰| 26uuu亚洲伊人春色| 婷婷亚洲图片| 午夜欧美性电影| 岛国一区二区在线观看| 欧美日本视频在线观看| 亚洲人亚洲人成电影网站色| 粉嫩av一区| 亚洲精品中文字幕女同| 人人爱人人干婷婷丁香亚洲| 国产精品日韩欧美大师| 久久香蕉精品| 欧美成人黑人猛交| 亚欧色一区w666天堂| 欧美人与性动交α欧美精品济南到 | 成人看片app| 亚洲超碰精品一区二区| 日韩av地址| 亚洲精品自拍第一页| 成人性生交大片免费看中文视频| 欧美孕妇性xx| 青青青爽久久午夜综合久久午夜| 欧美成人免费观看| 性欧美gay| 欧美日韩国产精品一区| 国产欧美日韩亚洲| 红桃成人av在线播放| 一本色道久久综合狠狠躁篇怎么玩| 7878视频在线观看| 亚洲成av人片一区二区密柚| 97视频在线看| 久操视频在线观看| 国产成人在线观看| 日韩一区二区电影在线观看| 少妇av在线| 欧美综合社区国产| 亚洲成人自拍视频| 伊人久久大香线蕉综合四虎小说| 国语精品中文字幕| 成人美女视频在线观看18| 欧美福利网站| 精品国产网站在线观看| 97久久超碰| 日本视频一区二区在线观看| 国产精品国产精品国产专区不蜜 | 国产欧美一区| www亚洲国产| 亚洲在线观看免费视频| 日韩不卡免费高清视频| 97超碰在线播放| 国产精品无码永久免费888| 精品精品导航| 成人黄色激情网| 欧美激情一区二区三区不卡| bl视频在线免费观看| 亚洲综合在线小说| 国产欧美综合在线| 欧美人与性动交xxⅹxx| 精品国产一二| 一区二区欧美国产| 久久在线观看| 人人妻人人澡人人爽欧美一区| 国产精品18久久久久久vr| 久草免费在线| 欧美大片顶级少妇| 中文字幕人成乱码在线观看| 亚洲成年人影院在线| 国产精品69xx| 在线看国产一区| 国产 欧美 日本| 亚洲国产另类av| 亚洲精选一二三| 深夜福利在线观看直播| 欧美成人激情视频| 日韩国产在线一| 最近最好的中文字幕2019免费| 日韩少妇与小伙激情| 久久青草久久| 久草视频视频在线播放| 91av在线不卡| 91亚洲大成网污www| 国产一级精品在线| 免费高清在线一区| 欧美一区国产一区| 1769国产精品| 国外成人在线视频| 欧美精品v日韩精品v韩国精品v| 国产白丝精品91爽爽久久| 成人一区二区| 99精品国产在热久久婷婷| 亚洲黄页在线观看| 忘忧草在线日韩www影院| 三级视频在线播放| 欧美日韩成人影院| 欧美日韩国产高清| aa亚洲一区一区三区| 国产精品一区在线免费观看| 欧美成人免费全部观看天天性色| 亚洲免费高清视频在线| 日本免费新一区视频| 女人丝袜激情亚洲| 国产精品麻豆| 日本欧美在线| 国产区美女在线| 天堂在线中文字幕| 久久久福利视频| 欧美精品久久一区二区| 色老汉一区二区三区| 国产精品综合| 巨大荫蒂视频欧美另类大| 成人毛片高清视频观看| 日韩精品电影网站| 亚洲一区二区免费| 日韩激情第一页| 久久久精品蜜桃| 欧美综合久久| 欧美日本视频在线观看| 亚洲深夜福利在线| ...中文天堂在线一区| 欧美mv和日韩mv国产网站| 亚洲大胆视频| 日韩国产精品久久| 国产一区二区三区在线观看免费视频 | 1区2区3区在线观看| 在线视频1区| 91麻豆精品国产91久久久更新资源速度超快| 日韩av不卡一区| 国产麻豆午夜三级精品| 综合在线观看色| 俺去了亚洲欧美日韩| 99在线高清视频在线播放| 亚洲黄色小视频在线观看| 色是在线视频| 国产影视一区| 日韩精品一区第一页| 免费在线成人网| 国产精品麻豆一区二区| 欧美午夜精品在线| 欧美一区二区久久| 久久av在线看| 国产日韩欧美夫妻视频在线观看| 国产精品高清一区二区三区| 免费看黄色a级片| av黄色在线观看| 91精选在线| 欧美电影三区| 不卡av在线网| 欧美丰满嫩嫩电影| 欧美性xxxxxx少妇| 欧美疯狂性受xxxxx喷水图片| 精品福利免费观看| 在线播放日韩导航| 亚洲一区二区中文| 国产一二区在线| 黄色国产精品| 国产农村妇女毛片精品久久莱园子 | 涩涩视频在线播放| 欧美综合一区| 亚洲日本护士毛茸茸| 成人黄色理论片| 怕怕欧美视频免费大全| av在线不卡网| 中文字幕av一区中文字幕天堂| 国产精品久久久久7777| 电影一区二区三|