10 月 27 日舉辦的稀土開(kāi)發(fā)者大會(huì)上,字節(jié)跳動(dòng) Web Infra 正式發(fā)起 Modern.js 開(kāi)源項(xiàng)目,希望推動(dòng)現(xiàn)代 Web 開(kāi)發(fā)范式的普及,發(fā)展完整的現(xiàn)代 Web 工程體系,突破應(yīng)用開(kāi)發(fā)效率的瓶頸。
傳統(tǒng)的 Web 開(kāi)發(fā)是“服務(wù)器端為中心”的開(kāi)發(fā)范式,近年來(lái),已經(jīng)越來(lái)越多的轉(zhuǎn)移到“客戶端為中心”的現(xiàn)代 Web 開(kāi)發(fā)范式,開(kāi)發(fā)門(mén)檻不斷降低,效率不斷提升。產(chǎn)品研發(fā)可以更少的關(guān)注底層技術(shù)細(xì)節(jié),更專注在用戶需求和市場(chǎng)價(jià)值上。而傳統(tǒng)的前端技術(shù)棧難以解決“開(kāi)發(fā)者體驗(yàn)”和“用戶體驗(yàn)”的矛盾,越來(lái)越成為提效的瓶頸。
字節(jié)跳動(dòng) Web Infra 一直在字節(jié)內(nèi)部支持“現(xiàn)代 Web 開(kāi)發(fā)”的實(shí)踐,發(fā)展了完整的字節(jié)前端研發(fā)體系,Modern.js 項(xiàng)目就是來(lái)自其中的現(xiàn)代 Web 工程體系。
Modern.js 將以往海量的前端工程模板,收斂成三大工程類型:應(yīng)用、模塊、Monorepo,每種類型都只需要同一套模板、同一套工程方案。其中“應(yīng)用”工程方案又被稱作“MWA”(現(xiàn)代 Web 應(yīng)用),基于一套客戶端為中心、前后端一體化的應(yīng)用開(kāi)發(fā)框架,實(shí)現(xiàn)了強(qiáng)大的“Universal App”模式。即一套應(yīng)用源代碼,能同時(shí)在客戶端、服務(wù)器端、編譯時(shí)里運(yùn)行,能以靜態(tài) Web(SPA、MPA、SSG)、動(dòng)態(tài) Web(SSR、SPR)、微前端、桌面應(yīng)用、小程序等不同模式運(yùn)行,同時(shí)支持低門(mén)檻、全功能、一體化的 BFF (針對(duì)特定界面的服務(wù)器端 API)開(kāi)發(fā)。
“MWA” 是 Serverless 優(yōu)先的,內(nèi)置產(chǎn)品級(jí) Web Server。它能在開(kāi)發(fā)、調(diào)試、部署、運(yùn)行等所有環(huán)節(jié)做到盡可能“無(wú)服務(wù)器化”,同時(shí)確?!伴_(kāi)發(fā)者體驗(yàn)”和“用戶體驗(yàn)”,讓更多“前端開(kāi)發(fā)者”成為獨(dú)立、全面的“應(yīng)用開(kāi)發(fā)者”和“產(chǎn)品開(kāi)發(fā)者”。Modern.js 也原生支持微前端、Electron 桌面應(yīng)用、Monorepo 等研發(fā)場(chǎng)景。
Modern.js 從最初就設(shè)計(jì)為 ESM 優(yōu)先,在“編譯時(shí)”環(huán)節(jié)能更好的支持 Unbundled 開(kāi)發(fā)、非 JS 語(yǔ)言的編譯器等第三代 JS 工具的發(fā)展。在“運(yùn)行時(shí)”環(huán)節(jié),Modern.js 提供開(kāi)箱即用的應(yīng)用架構(gòu),提供在“應(yīng)用”工程方案、“模塊”工程方案里都能無(wú)縫使用的 Runtime API 標(biāo)準(zhǔn)庫(kù)。在“編寫(xiě)時(shí)”環(huán)節(jié),Modern.js 鼓勵(lì)盡可能讓機(jī)器來(lái)生成源碼的智能編程。 字節(jié)跳動(dòng) Web Infra 負(fù)責(zé)人表示:“希望 Modern.js 項(xiàng)目能幫助業(yè)界更快更好的發(fā)展基于前端技術(shù)的成熟 GUI 應(yīng)用軟件研發(fā)體系,讓前端技術(shù)棧的開(kāi)發(fā)者們能夠‘責(zé)任越大,能力越強(qiáng)’?!?/p>
Modern.js 官網(wǎng):modernjs.dev/?
Github 地址:github.com/modern-js-d…