成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

每個前端同學(xué)都可以擁有自己的框架,然后去完善它—Strvejs@3.1.0正式發(fā)布

開發(fā) 前端
Strve.js@3.1.0是 3.x 正式版本中第一個版本,也是之前 2.x 版本之后的第一次重大升級。算是給自己在 2022 年第一個禮物吧!

不忘初心

從 Strve.js 正式發(fā)布到現(xiàn)在已經(jīng)將近半年了,收到很多建議,也收到很多贊揚,謝謝大家!平時抽空的時候,我也在不斷地完善這個框架,希望可以更加的健壯。

我提到很多次,大家也經(jīng)常問我。為什么要開發(fā)這個框架?你的初衷是什么?其實,我的動機特別簡單,完全受 JSX 語法的影響。剛接觸 JSX 語法的時候,就被它那種魔法深深地吸引住了,可以在 JS 中寫 HTML。所以,我就想我自己可不可以也搞一個類似 JSX 語法的庫或者框架呢!一方面可以鍛煉自己的代碼能力,另一方面體驗開發(fā)框架的整個流程,也方便我以后更全面的學(xué)習(xí)其他框架(Vue.js、React.js 等)。

我剛開始開發(fā) Strve.js 時,借鑒了一個迷你 JSX 的庫,但是做著做著就覺得做不下去了。感覺還是偏離了方向,我決定用簡單的方式去實現(xiàn)我所想要的效果。

在 JS 中可以寫 HTML,除了借助 Babel 來轉(zhuǎn)譯 JSX 語法外,還有一種就是利用 ES6 語法中 的模板字符串。利用模板字符串可以做到直接渲染到頁面中,如果是改變數(shù)據(jù)的話,也能實現(xiàn)。但是問題是,它并不那么靈活,并且需要操作大量 DOM 節(jié)點。

減少操作真實 Dom 帶來的性能代價,目前合理的方案是利用虛擬 Dom,將 HTML 標(biāo)簽對象化,轉(zhuǎn)化成一個 JS 對象。最后利用 Diff 算法進(jìn)行新舊 Dom 對比,來更新差異。雖然這樣也會操作真實 Dom,但是比起之前的量級少了太多。

虛擬 Dom 的量級也得控制一定范圍,不然計算量太大,頁面也會卡頓。Vue2 相比于 Vue1 引入了虛擬 Dom,組件內(nèi)利用虛擬 Dom 來進(jìn)行更新數(shù)據(jù),把虛擬 Dom 的量級控制在組件級別;而 React.js 則引入 Fiber 架構(gòu),借鑒了操作系統(tǒng)時間分片的概念,利用空閑時間計算 Diff。所以,針對于 Strve.js,如果引入虛擬 Dom 的話,虛擬 Dom 的量級必須在考慮范圍之內(nèi)。

Strve.js@3.x之前的版本都沒有解決虛擬 Dom 量級的問題,都是全量的對比。另外,如果想操作 Dom,必須要為其創(chuàng)建一個 Dom 對象,綁定到虛擬 Dom 上,這樣才能調(diào)用 Dom API,之前的版本都是為每一個 Dom 節(jié)點都創(chuàng)建一個 Dom 對象,一些靜態(tài)節(jié)點沒有必要,還有它也不會進(jìn)行 Diff 算法。

Strve.js@3.1.0是 3.x 正式版本中第一個版本,也是之前 2.x 版本之后的第一次重大升級。算是給自己在 2022 年第一個禮物吧!之前聽過尤大的一次分享,他說:“做開源從 90%到 100%這個過程中,是特別難的”。是的,這次我親身體會到了。Strve.js 我會繼續(xù)維護(hù)下去,但是我不會逼自己去一定要做成什么樣,保持一顆初心就夠了。

Strve.js@3.1.0升級了什么

這次大方面一方面是修改了 API,更簡短也容易記,減輕了心智負(fù)擔(dān);另一方面是上面提到了 Diff 算法的優(yōu)化。

以下是更新日志:

  • 修改 API:

  • 調(diào)整createAppAPI;
  • useFkey標(biāo)記改為useFirstKey;
  • 添加標(biāo)記$key、$name;
  • 加入組件標(biāo)簽、空節(jié)點標(biāo)簽;
  • 調(diào)整setDataAPI;
  • 優(yōu)化 Diff 算法;
  • TypeScript 重構(gòu)代碼;

官方文檔又更新了

此次對文檔內(nèi)容進(jìn)行了大的改動,主要是對使用項。

除了對文檔中內(nèi)容的改寫,還加入了實時代碼的功能,你可以在線編輯代碼,看到自己想看到的效果。

Strve Router 也更新了

Strve Router 這次更新也算是大版本升級,升級到 2.1.0,可以通過下面這個示例簡單了解下 Strve Router。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>strve-router</title>
</head>
<body>
<div id="app"></div>
<script type="module">
import {
h,
createApp,
setData,
} from 'https://cdn.jsdelivr.net/npm/strvejs@3.1.0/dist/strve.esm.min.js';
import {
initRouter,
linkTo,
} from 'https://cdn.jsdelivr.net/npm/strve-router@2.1.0/dist/strve-router.esm.js';
class Home {
constructor() {
this.state = {
count: 0,
};
}
useAdd = () => {
setData(() => {
this.state.count++;
});
};
goAbout = () => {
linkTo('/about');
};
render = () => {
return h`
<button onClick=${this.goAbout}>goAbout</button>
<h1 onClick=${this.useAdd} $key>${this.state.count}</h1>
`;
};
}
class About {
constructor() {
this.state = {
msg: 'About',
};
}
render = () => {
return h`
<button onClick=${this.goHome}>goHome</button>
<h1 onClick=${this.useChange} $key>${this.state.msg}</h1>
`;
};
useChange = () => {
setData(() => {
this.state.msg = 'Changed';
});
};
goHome = () => {
linkTo('/');
};
}
const router = initRouter(
[
{
path: '/',
template: [Home, 'render'],
},
{
path: '/about',
template: [About, 'render'],
},
],
setData
);

function App() {
return h`
<div class="main">
${router.view()}
</div>
`;
}

const app = createApp(App);
app.mount('#app');
</script>
</body>
</html>

其他詳情更新

還有很多更新,詳情內(nèi)容可以訪問下面官方文檔地址:

https://maomincoding.gitee.io/strvejs-doc/zh/。

責(zé)任編輯:姜華 來源: 前端歷劫之路
相關(guān)推薦

2021-12-16 23:40:33

部署ReactTypeScript

2021-12-19 07:22:16

Create前端工具

2019-09-19 09:02:52

開發(fā)者技能工具

2021-12-23 06:07:21

前端技術(shù)編程

2016-07-05 16:30:10

碳云智能數(shù)字化生命

2022-03-07 10:27:03

Linux開源社區(qū)

2019-08-09 10:52:58

Linux內(nèi)核Spark

2018-02-25 09:00:00

LinuxQ4OS開源

2023-06-24 22:14:23

2023-04-03 09:44:18

2014-08-22 09:14:57

2023-02-09 23:03:22

前端后端json

2025-04-29 06:53:36

2022-03-31 08:15:59

遞歸代碼非遞歸

2023-05-04 10:43:42

Qwik前端框架

2014-07-04 11:00:02

IPv6IP

2009-11-12 09:51:11

Visual C++項

2014-09-24 13:04:13

微信企業(yè)號
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩欧美在 | 超碰欧美 | 久久久久国产 | 亚洲三区在线观看 | 青青草综合 | 日屁视频 | 在线观看中文字幕一区二区 | 在线成人一区 | 国产在线观看一区二区三区 | 亚洲精品欧美一区二区三区 | 涩色视频在线观看 | 高清成人免费视频 | 欧美综合一区二区 | 美女高潮网站 | h片在线免费观看 | 国产精品一区二区av | 国产在线二区 | 亚洲精品免费在线观看 | 国产一区日韩在线 | 欧美一区二区 | 国产区高清 | 日韩在线三级 | 欧美精品1区 | 大久| 人妖一区 | 人妖videosex高潮另类 | 国产91中文 | av免费网站在线 | 国产精品一区二区视频 | 国产欧美精品一区 | 国产精品五区 | 午夜精品一区 | 欧美中文字幕在线 | 亚洲国产欧美精品 | 午夜日韩视频 | 亚洲综合日韩精品欧美综合区 | 欧美一级大片免费观看 | 国产伦精品一区二区三区精品视频 | 婷婷丁香在线视频 | 国产日韩欧美一区二区 | 欧美成人aaa级毛片在线视频 |