日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Midway Serverless 2.0,一体化让前端研发再次提效

發布時間:2024/9/3 HTML 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Midway Serverless 2.0,一体化让前端研发再次提效 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:2021 年 3 月,Midway Serverless 推出了第二個大版本。就像兩年前說的一樣,開源只是開始,終態遠沒有到來。Midway 體系希望能夠在當前的十字路口,不斷向前演進,讓前端可以去發展,朝著應用工程師前進。

作者 | 張挺
來源 | Serverless 公眾號

自去年 Midway Serverless 1.0 發布之后,許多業務開始嘗試其中,并利用 Serverless 容器的彈性能力,減少了大量研發人員對基礎設施和運維的關注。對前端開發者而言,他們只需寫幾個函數即可實現后端業務邏輯,推動業務快速上線。正如去年所說,使用了 Serverless 架構,可以讓整個前端研發效能提升。

2021 年 3 月,Midway Serverless 推出了第二個大版本。就像兩年前說的一樣,開源只是開始,終態遠沒有到來。Midway 體系希望能夠在當前的十字路口,不斷向前演進,讓前端可以去發展,朝著應用工程師前進。

Midway Serverless 2.0 的內部代號是 “Hercules”,是希臘神話以及漫威中的大力士,藉由半神半人的出生,初步邁向成神之路。而藉由用戶在 v1.0 的使用情況,我們看到了不少問題,這一次 v2.0 的迭代重構,我們希望去解決這些問題,讓用戶體驗和開發效率更進一步。

  • Github:https://github.com/midwayjs/midway
  • 歡迎到 Github 幫 v2.0?點個 Star~

一、Midway Serverless 的演進

Midway Serverless 是 Midway 產出的一套面向 Serverless 云平臺的開發方案。其內容主要包括函數框架 @midwayjs/faas ,以及一系列跟平臺配套的工具鏈、啟動器等。

在 2020 年初發布之后,同年 6 月,又發布了前后端一體化方案,可以方便地在前端代碼直接調用函數端代碼,一體化方案應用到集團的中后臺項目后,效果顯著。

同年 9 月,Midway Serverless?發布了全新的 Midway 應用框架的第二個版本,引入了組件生態,之后 swagger、typeorm、mongo、gRPC 等組件不斷地孵化,大大擴充了 Midway 的能力。

2021 年 3 月,Midway Serverless 2.0 正式發布,在原有的基礎上,Midway Serverless 和 Midway 的能力將復用,有著相同的 CLI 工具鏈、編譯器、裝飾器等等。

二、Midway Serverless 2.0 的最大變化

就像前面提到的一樣,Midway Serverless 是一套面向 Serverless 的解決方案,它包括框架、運行時、工具鏈、配置規范幾個部分,這幾部分的組合之后,提供了一些面向 Serverless 體系的特有能力。

傳統 v1.0 時,Midway Serverless?主打:

  • 平臺間遷移更容易,讓代碼在不同的平臺相同;
  • 讓應用更易維護和擴展,提供了標準的云平臺函數出入參事件定義;
  • 讓傳統應用無縫部署到 Serverless 環境。
  • 而 v2.0,Midway Serverless 主打的是應用函數一體,前端和后端一體,體驗更佳,開發效率更高。

    原有的 v1.0 底層是通過編譯,包含一個令人煩惱的 .faas_debug_tmp 目錄,不少開發的同學都踩過它的坑,一旦出錯,難以排查。

    這本質上,是由于沒有采用和應用相同的進程重啟方案,也是因為函數開發和傳統不同、技術選型差異造成的。函數的執行和緩存,造成了 v1.0 數據可能不更新,經常出現改了代碼無效的情況。

    在新的 v2.0 中,Midway Serverless?徹底拋棄了原有的編譯方式,采用了和應用相同的實現方式,同時又對函數場景做了優化,對用戶來說,在某些場景下(HTTP),開發函數和開發應用是相同的結構和體驗,函數和應用只有部署時有差異。

    可以看看優化后的開發情況,不僅和應用一樣,速度還比較快,也不會生成臨時目錄,修改實時生效。

    這是 v2.0 和 v1.0 的根本性變化,也是整體架構升級帶來的巨大優勢。

    當然,這一塊并不是功能的新增,除了架構升級之外,Midway Serverless?2.0 還提供了更多的能力。主要分成下面四大方面。

    三、v2.0 純函數增強

    首先,Midway Serverless?2.0 在純函數開發的場景下,對 HTTP 場景的函數,包括(HTTP 觸發器、API 網關等)做了額外的增強支持。

    v2.0 升級 - 裝飾器統一

    v1.0 時期,Midway Serverless 將觸發器的各個參數定義在 f.yml 中,雖然在云原生看來是標準的,但是實際在編寫代碼的時候,用戶覺得非常繁瑣,特別是加上我們的依賴注入容器中 @Func 裝飾器和類的命名,函數名 + handler 名 + 類名 + 方法名用戶需要命名多遍。

    v2.0 版本開始,Midway Serverless 直接沿用應用的開發方式,使用原有的 @Controller 裝飾器應用到 HTTP 函數的開發中。

    同時,原有 f.yml 里的 functions 字段將不再需要填寫,我們的發布工具會自動從代碼中分析路由,注冊函數。

    除了 @Controller 裝飾器,Midway Serverless?2.0?也支持傳統應用的參數裝飾器,比如 @Query 、 @Body 等常用的從請求中獲取參數的裝飾器,也支持例如 SetHeader 、 ContentType 等對響應操作的裝飾器。

    除了裝飾器統一之外,Midway Serverless?2.0 將原有的 @midwayjs/faas 框架也接入到了新的 Framework 體系,現在 @midwayjs/faas 成為了函數 Framework,它也擁有和應用相同的 Application 、 Context 定義。比如下面的 app 方法,和應用完全一致。

    為了更好地支持函數式的寫法,Midway Serverless?2.0?對入口的 configuration.ts 增加了函數式寫法,這樣在一體化等函數式場景也可以選擇函數是寫法來編寫。

    v2.0 升級 - 工具鏈升級

    從 Midway v2.0 開始,使用 @midwayjs/cli 作為基礎 cli 工具,原有的函數 cli(@midwayjs/faas-cli)將逐步完成它的歷史使命,也將統一到 @midwayjs/cli 中。

    傳統的 cli 是把所有的功能都組合成一個大包,放到一個 npm 包下,這樣每個應用都要裝一份,比較占用硬盤空間和資源。新版本中做了一個按需加載能力,按照場景進行區分,比如函數和應用場景安裝的 cli 工具就會不同。

    這樣的好處是,新版本的 cli 安裝的包比較少,自然速度就快。同時,也能夠自由地去組合其中的插件,將其更合理地應用到不同的場景中。

    v2.0 升級 - 單元測試

    針對原有函數的單元測試的情況,Midway Serverless?2.0?也做了調整。

    原來的 invoke 方法,雖然簡單,但是很難跟創建應用的流程結合,每次 invoke 都是一次完整的初始化邏輯和調用,而且在 HTTP 的場景下,要填寫的參數眾多,難以模擬實際的效果。

    新版本沿用了應用的思路,既然能用應用模式啟動,那自然也能使用應用的開發方式,使用 supertest 來做測試,比原來簡單自然多了。

    v2.0 升級 - Web 模式

    在 v1.0 時期,Midway Serverless 針對業界常用的 egg/koa/express,做了將應用代碼無縫遷移到 Serverless 環境的功能,這三種框架都可以在 f.yml 中增加 deployType 的方式,通過構建自動化生成入口,支持傳統應用上彈性容器的訴求。

    之前也有用戶問道,如果我不希望代碼再跑在函數環境了怎么辦?v2.0 的答案是,你可以將那些代碼,通過應用的模式部署到自己的傳統容器,或者 Docker。

    部署的方式很簡單,由于使用了 @midwayjs/serverless-app (上面測試提到過),和應用一樣的編碼模式,就可以啟動一個 HTTP 應用了。

    四、v2.0 一體化能力增強

    去年 6 月,Midway Serverless?向社區開放了一體化編碼的方案,使用函數式編碼,類 React Hooks 的編碼方式,讓前端開發的同學無比熟悉。

    在 v2.0 之中,進一步增強了這套一體化方案,讓前端開發的體驗進一步提升。從下面四個方面一一為大家介紹。

    一體化增強 - 極速啟動

    首先是極速模式,傳統的 React/Vue 開發/構建的時間大家也都了解,Webpack 的工作時間往往接近 20s,而得益于最近新出的 vite,經過我們的測試和使用,傳統的 20s 縮減到了 2s 以下,可以說前端再一次得以飛躍。

    而 vite 良好的兼容性,可以包容非常多的前端框架,雖然 vite 剛出不久,相信過不了多久,就會在全前端場景鋪開。

    一體化增強 - 單元測試

    第二個方面是單測,傳統的一體化,由于編譯的存在,我們的單測十分困難,有用戶不止一次問我們,怎么做單測,怎么優雅地做前后端調用。

    在新的 v2.0 中,采用了兩種方案做測試。

    既可以使用 supertest 來執行傳統的 HTTP 行為模擬做單測,也可以使用我們提供的 runFunction 函數來做單測。

    一體化增強 - 支持應用

    第三個特性是非常令人驚喜的,一體化項目除了能在函數場景下使用,如今,Midway Serverless 2.0? 也將其沿用到了應用開發上。傳統的 Midway 項目也可以使用一體化方案開發了。

    一體化增強 - 運行時升級

    在 v1.0 時期,由于編譯器的限制,我們的入口函數編寫時有著諸多限制,但是在 v2.0 的時候,我們將運行時換成了原生框架以及原生的 node 模塊,這樣以前的種種限制都不存在了。

    同時,你也可以編寫自己的 hooks 模塊,將業務邏輯輕松地組合到一起。

    五、未來

    Midway Serverless 2.0 提供了諸多能力的升級,但是還遠遠不夠,我們依舊在不斷提供新的能力,讓不同的場景都豐富起來,讓前端可以游刃有余地享受到新體系的紅利。

    未來,是 Serverless 和云的時代。

    原文鏈接:https://developer.aliyun.com/article/782637?

    版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

    總結

    以上是生活随笔為你收集整理的Midway Serverless 2.0,一体化让前端研发再次提效的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。