国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架

這篇具有很好參考價值的文章主要介紹了Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

Yunfly 一款高性能 Node.js WEB 框架, 使用 Typescript 構建我們的應用。
使用 Koa2 做為 HTTP 底層框架, 使用 routing-controllers 、 typedi 來高效構建我們的 Node 應用。

Yunfly 在 Koa 框架之上提升了一個抽象級別, 但仍然支持 Koa 中間件。在此基礎之上, 提供了一套強大的插件系統(tǒng), 給開發(fā)者提供更強大更靈活的能力。

github地址:https://github.com/yunke-yunfly/yunflyjs
文檔地址:https://yunke-yunfly.github.io/doc.github.io/document/introduction/introduce

框架技術棧

  • Koa2 node.js http 框架, async await異步編程 參考文檔
  • find-my-way 一款高性能的 http 路由器 參考文檔
  • typescript 微軟開發(fā)的自由和開源的編程語言, 它是JavaScript的一個超集, 添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊?參考文檔
  • routing-controllers 使用裝飾器的方式來進行路由的開發(fā) 參考文檔
  • typedi: 依賴注入插件工具 參考文檔
  • grpc: 一個高性能、開源和通用的 RPC 框架 參考文檔
  • winston: javascript 的 log 日志插件 參考文檔

與社區(qū)框架差異

能力 yunfly eggjs nestjs
Typescript ? ?[支持但不友好] ?
cluster ? ? ?
openapi ? ? ?
框架約束 部分約束 約束 自由
擴展模型 插件 插件 模塊

性能

yunfly 框架底層 web 庫為 koa, 路由開發(fā)模型庫為 routing-controllers, 路由命中庫為 find-my-way。

koa 對于寫業(yè)務來說性能是足夠優(yōu)異的,routing-controllers 使用裝飾器的方式來進行路由的開發(fā),對于開發(fā)者來說是很提效的。

框架剔除了低效的 koa-router 更換為高效的 find-my-way。框架未內(nèi)插件,開發(fā)者可以根據(jù)自己的需求定制插件。

性能壓測

以下性能測試為同一臺機器同樣的容器場景下壓測3分鐘得出的結果。

容器環(huán)境

1G1核 Docker 容器

hello world 場景

web框架 qps 備注
yunfly 6400 使用 koa 為底層庫
eggjs 3950 使用 koa 為底層庫
nestjs 2900 使用 express 為底層庫
nestjs 7200 使用 fastify 為底層庫

1000 個路由場景

web框架 qps 備注
yunfly 6100 使用 koa 為底層庫
eggjs 1680 使用 koa 為底層庫
nestjs 2050 使用 express為底層庫
nestjs 6550 使用 fastify為底層庫

以上壓測結果不同的機器得出的結果會略有不同。

開始使用

當前提供了2種快速上手模式

  • 使用框架提供的腳手架快速初始化 詳細參考文檔
  • 使用手動模式逐步搭建 詳細參考文檔

編寫一個簡單的Controller

import { Get, JsonController, BodyParam, Post, QueryParam } from '@yunflyjs/yunfly';
/**
 * 測試案例controller
 *
 * @export
 * @class TestController
 */
@JsonController('/example')
export default class ExampleController {
  /**
   * 簡單案例 - get
   *
   * @param {string} name 姓名
   * @return {*}  {string}
   * @memberof ExampleController
   */
    @Get('/simple/get')
    simple(
        @QueryParam('name') name: string,
    ): string {
        return name || 'success';
    }
    /**
    * 簡單案例 -post
    *
    * @param {string} name 姓名
    * @return {*}  {string}
    * @memberof ExampleController
    */
    @Post('/simple/post')
    simple1(
        @BodyParam('name') name: string,
    ): string {
        return name || 'success';
    }
}
  • 訪問應用
http://127.0.0.1:3000/example/simple/get?name=xxx

當前支持的一些特性

支持多進程模型

若應用需要開啟node多進程,只需要在 config 中配置啟用即可,單多進程模型隨意切換

Cluster 配置

// src/config/config.default.ts
/**
 * cluster config
 */
config.cluster = {
  enable: true,
};
  • 自定義啟動進程數(shù)
// src/config/config.default.ts
config.cluster = {
  enable: true,
  count: 4,
};
  • 備注:在 docker 容器場景下,會優(yōu)先獲取容器分配的cpu核數(shù), 優(yōu)先級:容器核數(shù) > config.cluster.count

隨意定制你的框架

yunfly web框架是由基礎包+一個個插件組合而成,框架自身提供了很多插件,支持開發(fā)者自定義插件。

備注:yunfly 的插件部分理念實現(xiàn)參考了eggjs的插件模型

開發(fā)者可以把常規(guī)插件+自定義插件打包成一個集合組裝成一個新的框架。

Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架,node,node.js,前端
此處能力可以參考:Yunfly 框架開發(fā)

支持生成openapi

框架提供了輔助插件 routing-controllers-to-openapi, 能把所有路由與Typescript代碼轉(zhuǎn)換為openapi, 進而你可以通過openapi生成接口文檔信息。

  • 支持 typescript 生成 jsonschema
  • 支持注釋(行內(nèi)注釋,代碼塊上方注釋,塊級注釋)
  • ts 類型描述的越全,接口生成的越詳細
  • 支持所有的 routing-controllers api方法

關于ts生成openapi更詳細的文檔請參考:框架生成OpenAPI數(shù)據(jù)

支持生成前端request代碼

框架提供輔助插件openapiv3-gen-typescript, 能通過openapi 生成前端request代碼
Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架,node,node.js,前端

  • 因此可以通過routing-controllers-to-openapi 生成openapi, 再通過openapi生成前端request代碼

關于openapi生成request代碼詳細文檔:openapi 生成前端 request 代碼

限流插件

為了防止流量洪峰時應用的崩潰,我們可以采取限流的方式來保護我們的應用,限流有多種規(guī)則

限流規(guī)則

  • Node.js應用 整體限流,即: 應用在某一段時間內(nèi)所有接口的總流量限制
  • 具體 path 路徑限流, 即: 應用在某一段時間內(nèi)某個具體的 path 路徑的流量限制
  • 具體 path+具體用戶限流, 即: 應用在某一段時間內(nèi)某個 path 單個用戶的流量限制

支持規(guī)則動態(tài)變更實時生效

配置化的限流規(guī)則是不夠靈活的,對業(yè)務來說不能實時生效,基于此插件提供動態(tài)更新的 api

import { updateRateLimiterRules } from '@yunflyjs/yunfly-plugin-rate-limiter'
 
// 例如:EtchChange為規(guī)則變更監(jiān)聽函數(shù),當規(guī)則變更時通過 updateRateLimiterRules api 實時更新限流規(guī)則
EtchChange().then((data: NeedRateLimiterOption)=>{
  updateRateLimiterRules(data)
})

限流插件使用文檔請參考:https://yunke-yunfly.github.io/doc.github.io/document/secruity/rate-limiter

node 性能排查,v8profiler插件

  • 實時獲取 cpuprofile 插件, 用于性能瓶頸分析。
    當應用出現(xiàn)性能瓶頸時,排查是一件比較復雜的事情,框架提供了@yunke/yunfly-plugin-v8-profiler 用于cpu性能排查。
    Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架,node,node.js,前端
    性能瓶頸插件詳細使用文檔:https://yunke-yunfly.github.io/doc.github.io/document/plugin/cpuprofile

數(shù)據(jù)庫操作插件prisma

對于數(shù)據(jù)庫的操作,框架提供了prisma插件,它是新一代 orm 工具, 支持 MySql SQLite SQL Server MongoDB PostgreSQL。

  • prisma插件詳細使用文檔:https://yunke-yunfly.github.io/doc.github.io/document/technology/prisma

Redis 插件

redis 是BFF服務或服務端開發(fā)經(jīng)常用到的內(nèi)存數(shù)據(jù)庫,框架提供了redis插件 @yunflyjs/yunfly-plugin-redis

  • redis插件詳細使用文檔:https://yunke-yunfly.github.io/doc.github.io/document/technology/redis

其他插件

框架還提供了一下常用的其他插件,例如:文章來源地址http://www.zghlxwxcb.cn/news/detail-609447.html

  • socket插件:https://yunke-yunfly.github.io/doc.github.io/document/technology/socket
  • prometheus插件:https://yunke-yunfly.github.io/doc.github.io/document/technology/prometheus
  • jwt插件:https://yunke-yunfly.github.io/doc.github.io/document/secruity/jwt
  • apollo插件:https://yunke-yunfly.github.io/doc.github.io/document/plugin/apollo
  • 安全插件:https://yunke-yunfly.github.io/doc.github.io/document/plugin/secruity
  • 內(nèi)存檢查插件:https://yunke-yunfly.github.io/doc.github.io/document/plugin/memory-check
  • etcd插件: https://yunke-yunfly.github.io/doc.github.io/document/plugin/etcd
  • alinode插件:https://yunke-yunfly.github.io/doc.github.io/document/plugin/alinode
  • 熔斷:https://yunke-yunfly.github.io/doc.github.io/document/secruity/fusing
  • grpc: https://yunke-yunfly.github.io/doc.github.io/document/technology/grpc

到了這里,關于Yunfly 一款高效、性能優(yōu)異的node.js企業(yè)級web框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [開源]一款企業(yè)級物聯(lián)網(wǎng)平臺低代碼開發(fā)框架,代碼精簡,開箱即用

    [開源]一款企業(yè)級物聯(lián)網(wǎng)平臺低代碼開發(fā)框架,代碼精簡,開箱即用

    基于Go 1.20前后端分離架構,代碼精簡,開箱即用,前端緊隨前沿 Vue3.0 + TypeScript + vite3 + Element-plus技術 對前后端進行了大部分功能的封裝,后端自封裝go-restful,使用起來更加簡潔,功能邏輯清晰,能快速上手學習,并用在生產(chǎn)中。 報表大屏設計器: 我們只需要拖拉拽即可綁定

    2024年02月04日
    瀏覽(23)
  • AnyLink:一款基于ocserv的 SSL VPN 企業(yè)級解決方案

    AnyLink:一款基于ocserv的 SSL VPN 企業(yè)級解決方案

    AnyLink 是一款 SSL VPN 軟件,它可以兼容 AnyConnect 以滿足對企業(yè)內(nèi)網(wǎng)的接入。另外你也可以像 x-ui 那樣分配用戶組以及規(guī)則,總之在 Clash 紛紛刪庫后使用三層VPN當梯子確實是個退而求其次的方案。本文以CentOS 7為例,簡單介紹 AnyLink 的部署及使用技巧。 CentOS 7 服務器(AnyLink 服

    2024年03月19日
    瀏覽(44)
  • 一款超好用的企業(yè)級URL采集軟件(Msray-plus)

    一款超好用的企業(yè)級URL采集軟件(Msray-plus)

    Msray,是一款使用GO語言研發(fā)的企業(yè)級新一代多功能信息采集軟件。具有高效率、低占用、功能強大、定制靈活、上手簡單、支持webhook等特點。 主要運用于全網(wǎng)域名/URL網(wǎng)址/IP信息檢索、聯(lián)系方式信息采集、指定批量數(shù)據(jù)采集、網(wǎng)絡推廣與分析、內(nèi)容源收集,以及為各種

    2024年02月08日
    瀏覽(21)
  • 【Ubuntu】簡潔高效企業(yè)級日志平臺后起之秀Graylog

    【Ubuntu】簡潔高效企業(yè)級日志平臺后起之秀Graylog

    Graylog 是一個用于集中式日志管理的開源平臺。在現(xiàn)代數(shù)據(jù)驅(qū)動的環(huán)境中,我們需要處理來自各種設備、應用程序和操作系統(tǒng)的大量數(shù)據(jù)。Graylog提供了一種方法來聚合、組織和理解所有這些數(shù)據(jù)。它的核心功能包括流式標記、實時搜索、儀表板可視化、告警觸發(fā)、內(nèi)容包快速

    2024年02月12日
    瀏覽(22)
  • 實現(xiàn)高效消息傳遞:使用RabbitMQ構建可復用的企業(yè)級消息系統(tǒng)

    實現(xiàn)高效消息傳遞:使用RabbitMQ構建可復用的企業(yè)級消息系統(tǒng)

    RabbitMQ是一個在 AMQP(高級消息隊列協(xié)議)基礎上完成的,可復用的企業(yè)消息系統(tǒng),是當前最主流的消息中間件之一。 由erlang開發(fā)的AMQP(Advanced Message Queue 高級消息隊列協(xié)議 )的開源實現(xiàn),由于erlang 語言的高并發(fā)特性,性能較好,本質(zhì)是個隊列,F(xiàn)IFO 先入先出,里面存放的內(nèi)容

    2024年02月11日
    瀏覽(23)
  • 京東開源的、高效的企業(yè)級表格可視化搭建解決方案:DripTable

    京東開源的、高效的企業(yè)級表格可視化搭建解決方案:DripTable

    DripTable 是京東零售推出的一款用于企業(yè)級中后臺的動態(tài)列表解決方案,項目基于 React 和 JSON Schema,旨在通過簡單配置快速生成頁面動態(tài)列表來降低列表開發(fā)難度、提高工作效率。 DripTable 目前包含以下子項目:drip-table、drip-table-generator。 drip-table :動態(tài)列表解決方案的核心庫

    2024年02月14日
    瀏覽(22)
  • 探索 Office UI Fabric Core:構建高效企業(yè)級應用的新時代框架

    項目地址:https://gitcode.com/OfficeDev/office-ui-fabric-core Office UI Fabric Core 是由微軟開發(fā)的一個開源前端框架,用于構建具有微軟統(tǒng)一設計語言(Microsoft Fluent Design System)風格的企業(yè)級 Web 應用。它提供了豐富的 UI 組件、CSS 樣式和圖標資源,幫助開發(fā)者快速創(chuàng)建出與 Microsoft Office 和

    2024年04月23日
    瀏覽(30)
  • 企業(yè)級SQL開發(fā):如何審核發(fā)布到生產(chǎn)環(huán)境的SQL性能

    企業(yè)級SQL開發(fā):如何審核發(fā)布到生產(chǎn)環(huán)境的SQL性能

    自從上世紀 70 年代數(shù)據(jù)庫開始普及以來,DBA 們就不停地遭遇各種各樣的數(shù)據(jù)庫管理難題,其中最為顯著的,可能就是日常的開發(fā)任務中,研發(fā)人員們對于核心庫進行變更帶來的一系列風險。由于針對數(shù)據(jù)庫的數(shù)據(jù)變更是一項非常常見的任務,幾乎所有開發(fā)者都會涉及對核心

    2024年02月03日
    瀏覽(21)
  • 《DevOps企業(yè)級CI/CD實戰(zhàn)》:一站式掌握DevOps核心方法論,實現(xiàn)高效自動化部署

    《DevOps企業(yè)級CI/CD實戰(zhàn)》:一站式掌握DevOps核心方法論,實現(xiàn)高效自動化部署

    DevOps是一組實踐,由人、工具和文化理念組成。DevOps的核心是實現(xiàn)軟件開發(fā)團隊和IT運維團隊之間的流程自動化。自2018年起,筆者參與了大型企業(yè)中多個項目的DevOps項目實施和改進,從中積累了豐富的實踐經(jīng)驗。于是將實踐思考與開發(fā)經(jīng)驗整理成一本書分享給同路人共同學習

    2024年04月14日
    瀏覽(27)
  • Vue.js 3.0 企業(yè)級管理后臺開發(fā)實戰(zhàn) 基于Element Plus

    Vue.js 3.0 企業(yè)級管理后臺開發(fā)實戰(zhàn) 基于Element Plus

    本書內(nèi)容 本書共 13 章,各章簡介如下。 第 1 章“項目啟動” 介紹新項目啟動時和項目有關的內(nèi)容,如項目原型和項目 UI。讀者從 中能夠清楚地了解項目的業(yè)務邏輯、具體要開發(fā)的功能,以及要呈現(xiàn)給用戶的界面效果和交互 效果。此外,本章還會討論項目開發(fā)過程的原型評

    2023年04月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包