日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

跑分方面,這款 JavaScript 庫在全球框架榜單中的表現(xiàn)比 React 要好得多

來源: 責(zé)編: 時(shí)間:2024-01-22 08:41:54 294觀看
導(dǎo)讀2021 年 11 月 左右,Strve 第一個(gè)版本發(fā)布,社區(qū)的反饋大部分是支持,也有少部分小伙伴提出了質(zhì)疑,這都正常。你只要在社區(qū)發(fā)布一些作品,就必須接受其他人對你的作品的評價(jià)。當(dāng)初,開發(fā) Strve 的初衷只是受到 JSX 語法的影響,覺

TKH28資訊網(wǎng)——每日最新資訊28at.com

2021 年 11 月 左右,Strve 第一個(gè)版本發(fā)布,社區(qū)的反饋大部分是支持,也有少部分小伙伴提出了質(zhì)疑,這都正常。你只要在社區(qū)發(fā)布一些作品,就必須接受其他人對你的作品的評價(jià)。TKH28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)初,開發(fā) Strve 的初衷只是受到 JSX 語法的影響,覺得在 JavaScript 中編寫 HTML 很酷,所以想能不能自己也開發(fā)一個(gè)前端框架。我最初給自己的目標(biāo)就是能在 JavaScript 中寫 HTML,然后通過編寫 JavaScript 來改變頁面狀態(tài)。經(jīng)過兩個(gè)多周的調(diào)研,發(fā)現(xiàn)自己在原地打轉(zhuǎn)。JSX 語法不能直接在瀏覽器運(yùn)行,你必須通過類似 Babel 這種編譯工具編譯才能運(yùn)行。所以,我就打算在模版字段串內(nèi)編寫 HTML。但是,又遇到了另一個(gè)問題,如何精確更新 DOM。當(dāng)時(shí),第一個(gè)想法就是利用虛擬 DOM,所以就抽時(shí)間來學(xué)習(xí)前端框架中都是怎么利用虛擬 DOM 來精確更新。不懂得就去網(wǎng)上查資料,然后就記下來。可能有些小伙伴就會問,是什么力量讓你去做可能完成了也沒什么意義的事情。怎么說呢!當(dāng)時(shí),我就是想要做出點(diǎn)東西來,覺得自己能做出來。至于做出來有什么意義,我沒有多想。有時(shí)候我們做一件事情之前,考慮很多未必是好事,這往往會阻礙了我們做事情的腳步。TKH28資訊網(wǎng)——每日最新資訊28at.com

就這樣,靠著自己的熱情,第一個(gè)版本就這么問世了。TKH28資訊網(wǎng)——每日最新資訊28at.com

有很多小伙伴感覺 Strve 寫法很像lit-html。說實(shí)話,開發(fā) Strve 之前,我并不知道這個(gè)框架。后來看社區(qū)反饋,才到網(wǎng)上查看了有關(guān)的資料。雖然寫法像,但并不是它的復(fù)制品。就比如 Strve 內(nèi)部使用的是虛擬 DOM,這時(shí)的虛擬 DOM 還只是一個(gè)初版,只能說是簡單的比對。TKH28資訊網(wǎng)——每日最新資訊28at.com

全新的認(rèn)識

之前有看過我的文章的小伙伴,多多少少會知道 Strve。但是可能也只是停留在知道這個(gè)層面上,現(xiàn)在我通過幾點(diǎn)來重新介紹下 Strve。TKH28資訊網(wǎng)——每日最新資訊28at.com

Strve 是一個(gè)易用、快速、靈活且輕量級的 JavaScript 庫,用于構(gòu)建用戶界面。基于 tagged template 的 HTML 模板引擎,利用 ES6 的模板字符串來進(jìn)行模板的書寫,利用瀏覽器的原生的能力進(jìn)行模板渲染。TKH28資訊網(wǎng)——每日最新資訊28at.com

  • 更容易上手:只要你對 HTML、CSS 和 JavaScript 已經(jīng)基本熟悉,就可以直接上手。
  • 聲明式渲染:我們可以聲明式地描述最終輸出的 HTML 和 JavaScript 狀態(tài)之間的關(guān)系,開發(fā)者可以更加專注于業(yè)務(wù)邏輯的開發(fā),不需要過多地關(guān)心 DOM 操作的細(xì)節(jié)。
  • 順滑的用戶體驗(yàn):模板字符串來進(jìn)行模板的書寫,在一些場景中代碼智能提示、代碼格式化方面不是特別友好。所以,我們提供了新的一種編碼方式,我們可以使用 JSX 語法編寫 Strve,提升用戶開發(fā)體驗(yàn)。
  • 性能出色:采用了虛擬 DOM 的模式,虛擬 DOM 使用 diff 算法的方法來計(jì)算出真正需要更新的節(jié)點(diǎn),最大限度地減少了 DOM 操作以及 DOM 操作帶來的排版與重繪損耗,從而顯著提高了性能。另外,我們的 JavaScript 庫在全球知名的測評榜單(js-framework-benchmark)上贏得了優(yōu)秀的成績。
  • 組件化:一個(gè)函數(shù)就是一個(gè)組件,可以根據(jù)應(yīng)用規(guī)模任意組合。并且組件特有的 “孤島特性”,使得將虛擬 DOM 樹計(jì)算的級別控制在組件級別。
  • 靈活的應(yīng)用場景:有無構(gòu)建工具都可以使用,并且可以適配到其他前端框架開發(fā)的應(yīng)用項(xiàng)目中去。
  • 輕量級:壓縮后的文件大小不足 10k。另外,可以根據(jù)不同應(yīng)用場景,選擇不同類型的文件。

想要了解更多關(guān)于 Strve 的特性,可以到官方中文文檔中去探索。TKH28資訊網(wǎng)——每日最新資訊28at.com

TKH28資訊網(wǎng)——每日最新資訊28at.com

https://strvejs.gitee.io/strve-doc-zh。TKH28資訊網(wǎng)——每日最新資訊28at.com

貼心的優(yōu)化

2023 年我陸續(xù)發(fā)布了幾個(gè)大的版本,大部分時(shí)間都是在優(yōu)化底層代碼。包括虛擬 DOM 的算法優(yōu)化、減輕使用 API 時(shí) 心智負(fù)擔(dān)等等優(yōu)化措施。TKH28資訊網(wǎng)——每日最新資訊28at.com

下面我們來展開看下。TKH28資訊網(wǎng)——每日最新資訊28at.com

如果你不打算使用構(gòu)建打包工具開發(fā)項(xiàng)目,而是直接開發(fā)。推薦使用全局構(gòu)建版本,通過 CDN 使用 Strve 時(shí),不涉及“構(gòu)建步驟”,這使得設(shè)置更加簡單。TKH28資訊網(wǎng)——每日最新資訊28at.com

<script src="https://cdn.jsdelivr.net/npm/strve-js@6.6.6/dist/strve.full.prod.js"></script><script>  const { html, defineComponent } = Strve;  defineComponent(    {      mount: '#app',    },    ({ setData }) => {      let count = 0;      function add() {        setData(() => {          count++;        });      }      return () => html`<h1 onClick=${add}>${count}</h1>`;    }  );</script>

模板字符串來進(jìn)行模板的書寫,在一些場景中代碼智能提示、代碼格式化方面不是特別友好。所以,我們提供了一種新的編碼方式,我們可以使用 JSX 語法編寫 Strve 應(yīng)用,這樣就大大提升了用戶開發(fā)體驗(yàn)。TKH28資訊網(wǎng)——每日最新資訊28at.com

defineComponent(() => {  const state = {    msg: 'Hello',  };  return () => h1>{state.msg}</h1>;});

另外,我們底層采用了虛擬 DOM 的模式,虛擬 DOM 使用 diff 算法的方法來計(jì)算出真正需要更新的節(jié)點(diǎn),最大限度地減少了 DOM 操作以及 DOM 操作帶來的排版與重繪損耗,從而顯著提高了性能。TKH28資訊網(wǎng)——每日最新資訊28at.com

Strve 應(yīng)用程序是由 組件 組成的。一個(gè)組件是 UI(用戶界面)的一部分,它擁有自己的邏輯和外觀。組件可以小到一個(gè)按鈕,也可以大到整個(gè)頁面。TKH28資訊網(wǎng)——每日最新資訊28at.com

在 Strve 中,組件就是一個(gè)函數(shù)。TKH28資訊網(wǎng)——每日最新資訊28at.com

const MyComponent = defineComponent(({ setData }) => {  let count = 0;  function add() {    setData(() => {      count++;    });  }  return () => (    <div class='MyComponent'>      <p>{count}</p>      <button onClick={add}>MyComponent</button>    </div>  );});// 復(fù)用組件defineComponent(  {    mount: '#app',  },  ({ setData }) => {    let count = 0;    const add = () => {      setData(() => {        count++;      });    };    return () => (      <div class='App'>        <p>{count}</p>        <button onClick={add}>App</button>        <component $is={MyComponent} />      </div>    );  });

Strve 內(nèi)部的渲染系統(tǒng)是基于虛擬 DOM 構(gòu)建的,虛擬 DOM (Virtual DOM,簡稱 VDOM) 是一種編程概念,意為將目標(biāo)所需的 UI 通過數(shù)據(jù)結(jié)構(gòu)“虛擬”地表示出來,保存在內(nèi)存中,然后利用 Diff 算法來比對新老數(shù)據(jù),將真實(shí)的 DOM 與之保持同步。TKH28資訊網(wǎng)——每日最新資訊28at.com

如何虛擬 DOM 樹過于龐大,使得 Diff 計(jì)算時(shí)間大于 16.6ms,那么就可能造成性能的卡頓。組件有一個(gè)特性就是 ”孤島“。何為“孤島”,孤島就是在 Strve 應(yīng)用中我們可以理解成一個(gè)獨(dú)立的模塊。將一個(gè)龐大的虛擬 DOM 樹分解成很多獨(dú)立的模塊,這樣 Diff 計(jì)算時(shí)間就會控制在組件級別,大大縮減了計(jì)算的時(shí)間,提高了性能。TKH28資訊網(wǎng)——每日最新資訊28at.com

從 API 層面,我們盡可能的貼合易用的特性,將核心 API 縮減為 2 個(gè)。分別為defineComponent和setData。框架是需要容易使用的,太多繁瑣的設(shè)置或者操作很容易增重心智負(fù)擔(dān)。TKH28資訊網(wǎng)——每日最新資訊28at.com

豐富的生態(tài)

開發(fā)框架單單只有一個(gè)核心庫肯定是不夠的,你還需要其他生態(tài)工具來加以輔助。TKH28資訊網(wǎng)——每日最新資訊28at.com

你要有一套用于快速構(gòu)建項(xiàng)目的命令行工具,也就是說用戶可以通過輸入命令快速搭建項(xiàng)目。CreateStrveApp 是一套用于快速構(gòu)建 Strve 項(xiàng)目的命令行工具。CreateStrveApp 是使用 Vite 構(gòu)建的,這是一個(gè)新的前端構(gòu)建工具,可以顯著提升前端開發(fā)體驗(yàn)。它有幾個(gè)模版可供選擇:strve、strve-apps、strve-jsx、strve-jsx-apps。TKH28資訊網(wǎng)——每日最新資訊28at.com

我們開發(fā)項(xiàng)目需要跳轉(zhuǎn)多個(gè)頁面,那么就需要路由管理器。StrveRouter 是 Strve 的官方路由管理器。它與 Strve 的核心深度集成,輕松構(gòu)建單頁應(yīng)用程序。TKH28資訊網(wǎng)——每日最新資訊28at.com

另外,我們介紹兩款編譯時(shí)工具。BabelPluginStrve是一款 babel 插件,將 HTML 模板字符串轉(zhuǎn)化為 Virtual Dom。從之前的運(yùn)行時(shí)轉(zhuǎn)移到編譯時(shí),大幅度提高渲染性能。如果你想使用 JSX 語法,BabelPluginJsxToStrve這款插件是必不可少的,它是一款 babel 插件,將 JSX 轉(zhuǎn)換為與 Strve 一起使用的標(biāo)記模板。CreateStrveApp 項(xiàng)目腳手架工具已默認(rèn)安裝,選擇 strve-jsx 或者 strve-jsx-apps 模版即可。我們使用 CreateStrveApp 搭建完 Strve 項(xiàng)目你會發(fā)現(xiàn),同時(shí)安裝了 BabelPluginStrve、BabelPluginJsxToStrve,這是因?yàn)槲覀冃枰褂?BabelPluginJsxToStrve 將 JSX 轉(zhuǎn)換為標(biāo)簽?zāi)0妫笤偈褂?BabelPluginStrve 將標(biāo)簽?zāi)0孓D(zhuǎn)換為 Virtual DOM。TKH28資訊網(wǎng)——每日最新資訊28at.com

我們最后壓軸的一款生態(tài)工具可以說是近期更新力度最大的了。它被稱為獨(dú)立運(yùn)行的可響應(yīng)性 Strve,由 @vue/reactivity和 strve-js 提供支持的自定義元素 JavaScript 庫。TKH28資訊網(wǎng)——每日最新資訊28at.com

主要特性有以下幾個(gè):TKH28資訊網(wǎng)——每日最新資訊28at.com

  • Web Components
  • Hooks
  • Reactivity API
  • Props
  • Emit
  • Slot
  • Styles
  • Automatic registration component
  • Virtual DOM

Strve 結(jié)合 Vue 組合式 API 形成了一款新的 JavaScript 庫。只要你熟悉組合式 API,就可快速上手。TKH28資訊網(wǎng)——每日最新資訊28at.com

// MyComponent.jsximport { ref, defineComponent, reactive } from 'strve-reactivity';const MyComponent = defineComponent(() => {  const items = reactive([    {      id: 1,      tit: 'A',    },    {      id: 2,      tit: 'B',    },  ]);  const count = ref(4);  const increase = () => {    items.unshift({      id: count.value++,      tit: 'C',    });  };  return () => (    <fragment>      <button onclick={increase}>increase</button>      <ul>        {items.map((item) => (          <li key={item.id}>            <span>{item.id}</span>            <span>-</span>            <span>{item.tit}</span>          </li>        ))}      </ul>    </fragment>  );});

出色的跑分

我們只是口頭說 Strve 性能是非常不錯(cuò)的,沒有真憑實(shí)據(jù)那是說不過去的。跑分方面,Strve 在 js-framework-benchmark 中的表現(xiàn)比 React 要好得多。TKH28資訊網(wǎng)——每日最新資訊28at.com

圖片TKH28資訊網(wǎng)——每日最新資訊28at.com

https://krausest.github.io/js-framework-benchmark/current.html。TKH28資訊網(wǎng)——每日最新資訊28at.com

巨人的肩膀

前端框架最近幾年來層出不窮,出現(xiàn)這種情況好嗎?我覺得是個(gè)好現(xiàn)象。大家都在為前端社區(qū)貢獻(xiàn)自己的力量,使得前端的生態(tài)生機(jī)勃勃。TKH28資訊網(wǎng)——每日最新資訊28at.com

大家可能非常討厭跟知名框架比較,可能有些人會說蹭熱度。其實(shí)不妨換個(gè)角度想想,為什么會比較,是因?yàn)橐谩T趺礃硬拍芨茫侵荒懿粩嗟貎?yōu)化。那么在這優(yōu)化的過程中你不光是做出一個(gè) JavaScript 庫或者前端框架,更多的是你可以從中獲得你在平時(shí)工作中得不到的東西。比如,對設(shè)計(jì)一款框架需要考慮哪些方面。作者在設(shè)計(jì) API 時(shí)為什么會這么設(shè)計(jì)等等一些非工作業(yè)務(wù)上的事情。TKH28資訊網(wǎng)——每日最新資訊28at.com

我開發(fā)這款 JavaScript 庫,我是另辟蹊徑嗎?我感覺并不是,我只是學(xué)習(xí)其他優(yōu)秀框架中可以借鑒的思想,并按照自己想要的方式去展現(xiàn)它。只有站在巨人的肩膀上才能望得更遠(yuǎn)!TKH28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-65871-0.html跑分方面,這款 JavaScript 庫在全球框架榜單中的表現(xiàn)比 React 要好得多

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 接口性能優(yōu)化的 15 個(gè)技巧

下一篇: Prettier + ESLint + Rust = ?? 快,真是太快了!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久夜精品| 亚洲国产另类精品专区| 欧美日韩福利视频| 欧美三级在线视频| 国产精品一级| 在线播放中文字幕一区| 亚洲激情校园春色| 亚洲一区免费在线观看| 欧美一区二区三区四区高清| 久久免费高清视频| 欧美日韩在线另类| 国产日产欧美一区| 亚洲激情专区| 久久精品国产一区二区三区免费看 | 国产精品免费电影| 国产九区一区在线| 在线看国产一区| 夜夜嗨av一区二区三区中文字幕 | 久久国产主播精品| 欧美精品入口| 国产欧美日韩一区二区三区在线 | 国产日韩精品一区二区三区| 激情国产一区| 亚洲午夜精品在线| 美日韩精品免费| 欧美日韩久久久久久| 国产日韩视频一区二区三区| 亚洲精品一区在线观看香蕉| 欧美亚洲免费| 欧美激情一区二区三区高清视频| 国产精品一区二区三区久久| 1769国产精品| 欧美一级在线播放| 欧美日韩免费高清| 伊人激情综合| 亚洲欧美一区二区在线观看| 欧美二区在线| 国产一区二区三区av电影| 一本久久综合亚洲鲁鲁五月天| 久久久久久网址| 国产精品成人播放| 亚洲三级毛片| 久久久久久亚洲精品中文字幕| 国产精品成人在线观看| 亚洲激情网站| 久久久999| 国产乱码精品一区二区三区不卡| 日韩一区二区精品葵司在线| 久久久久久久综合日本| 国产精品每日更新| 亚洲精品一区二区在线观看| 久久精品最新地址| 国产精品午夜av在线| 99精品视频网| 欧美成人免费视频| 在线观看91精品国产麻豆| 亚洲黄色精品| 久久精品中文字幕一区| 国产精品欧美精品| 一区二区久久| 欧美日韩国产经典色站一区二区三区 | 国产精品美女久久福利网站| 亚洲高清av| 久久精品人人做人人综合| 国产精品视频久久久| 中文日韩在线| 欧美日韩中文字幕日韩欧美| 亚洲人在线视频| 欧美成人一区二区三区片免费| 激情综合中文娱乐网| 欧美在线亚洲| 国产午夜久久| 欧美一区二区三区视频| 国产精品裸体一区二区三区| 正在播放欧美视频| 欧美日韩亚洲精品内裤| 亚洲美女毛片| 欧美日韩国产二区| 一本色道久久88精品综合| 欧美高清视频在线播放| 亚洲级视频在线观看免费1级| 久久影院亚洲| 亚洲高清自拍| 欧美大片专区| 亚洲精品小视频| 欧美黄色成人网| 日韩一级免费观看| 欧美视频一区二区| 亚洲私人影吧| 国产精品中文在线| 午夜精品99久久免费| 国产欧美一区二区精品仙草咪| 小黄鸭视频精品导航| 国产欧美日韩亚洲精品| 欧美一区二区成人6969| 国产一区二区三区av电影 | 欧美影院在线| 国内精品久久久久国产盗摄免费观看完整版| 欧美一级淫片aaaaaaa视频| 国产日产欧产精品推荐色 | 亚洲综合首页| 国产精品三上| 欧美在线视频播放| 极品少妇一区二区| 欧美成人午夜免费视在线看片| 亚洲美女91| 国产精品久久国产精麻豆99网站| 亚洲欧美日韩中文播放| 国产亚洲精品久久久| 久久夜色精品一区| 亚洲精品在线免费观看视频| 欧美日韩国产在线一区| 亚洲欧美日韩在线观看a三区| 好男人免费精品视频| 欧美电影免费观看网站| 宅男66日本亚洲欧美视频| 国产欧美日韩一区二区三区在线观看| 久久精品视频亚洲| 亚洲啪啪91| 国产精品乱码久久久久久| 久久久www| 亚洲毛片视频| 国产精品尤物福利片在线观看| 久久久久久久久久久成人| 亚洲三级免费| 国产欧美精品一区| 欧美成人高清| 亚洲综合电影| 亚洲国产高清自拍| 国产精品日韩| 牛牛国产精品| 亚洲免费视频在线观看| 在线不卡中文字幕| 欧美三级视频| 久久久综合精品| 亚洲婷婷在线| 国产在线不卡精品| 欧美日韩免费观看一区二区三区| 欧美尤物巨大精品爽| 亚洲精品国产精品国自产观看| 国产精品少妇自拍| 欧美激情免费在线| 久久国产精品久久精品国产| 99av国产精品欲麻豆| 国内成+人亚洲| 欧美香蕉视频| 久久影院午夜片一区| 亚洲影院免费| 亚洲国语精品自产拍在线观看| 国产精品午夜久久| 欧美精品一区二区三区四区 | 欧美亚州韩日在线看免费版国语版| 久久久中精品2020中文| 亚洲免费视频一区二区| 亚洲欧洲日产国产网站| 国产一区二区三区在线观看网站| 欧美日韩a区| 六月丁香综合| 欧美一区二区三区在线观看视频 | 欧美综合77777色婷婷| 一本一本久久a久久精品综合妖精| 国产在线精品自拍| 国产精品卡一卡二| 亚洲国产成人不卡| 国产美女精品在线| 欧美日韩精品在线| 美女国产一区| 久久九九国产精品| 香蕉成人伊视频在线观看| 99re这里只有精品6| 在线观看成人av| 国产伦精品一区二区三| 欧美日韩精品一二三区| 欧美国产精品劲爆| 久热这里只精品99re8久| 欧美在线观看视频一区二区三区| 国产精品99久久不卡二区 | 亚洲欧美视频| 亚洲一区二区在线视频| 日韩亚洲欧美在线观看| 亚洲国产高清自拍| 国产自产在线视频一区| 国产区亚洲区欧美区| 国产精品美女999| 国产精品成人一区二区三区夜夜夜| 欧美国产一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久久久久一区二区| 久久www成人_看片免费不卡| 午夜日韩电影| 亚洲欧美日韩国产成人| 亚洲一区二区免费在线| 在线视频亚洲欧美| 宅男精品视频| 99视频+国产日韩欧美| 亚洲美女区一区| 99成人在线| 99综合电影在线视频| 日韩特黄影片| 日韩图片一区| 一区二区三区不卡视频在线观看 | 欧美揉bbbbb揉bbbbb| 欧美日韩在线免费视频| 欧美视频在线观看一区|