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

第三章 Electron 使用Koa以及Koa-Router

這篇具有很好參考價(jià)值的文章主要介紹了第三章 Electron 使用Koa以及Koa-Router。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、Koa是什么?????????

據(jù)網(wǎng)上的資料顯示,Koa 是下一代的 Node.js 的 Web 框架。是express原班人馬打造,同樣用于構(gòu)建服務(wù)端web application的。旨在提供一個(gè)更小型、更富有表現(xiàn)力、更可靠的 Web 應(yīng)用和 API 的開(kāi)發(fā)基礎(chǔ)。扯這些沒(méi)用的,它就是提供給我們構(gòu)建API服務(wù)的。

二、Koa-Router是什么?????????

快捷式路由(app.get、app.put、app.post等), 命名URL參數(shù) 生成URL的命名路由,將路由與特定主機(jī)匹配,使用允許的方法響應(yīng)OPTIONS請(qǐng)求,不允許支持405方法,不支持501方法,多路由中間件,多個(gè)可嵌套路由器,支持async/await。顧名思義,其實(shí)就和我們前端vue-router差不多。只是它做接口層面的匹配處理。

三、安裝依賴?????????

yarn add koa koa-router

我當(dāng)前的版本號(hào)

第三章 Electron 使用Koa以及Koa-Router

環(huán)境

第三章 Electron 使用Koa以及Koa-Router

四、編寫路由?????????

非常的簡(jiǎn)單,我們只需要在方法里面進(jìn)行邏輯處理,然后通過(guò)ctx.body進(jìn)行一個(gè)響應(yīng)。

const Router = require('koa-router');
// 如果添加了prefix前綴的話,接口訪問(wèn)就變成******/likeMusic/**
const router = new Router({ prefix: "/likeMusic" });

// ******/likeMusic/list
router.get('/list', async (ctx, next) => {
    ctx.body = {data: {
        name: '張三'
    }, status: 200};
})

router.post('/add', async (ctx, next) => {
    // ctx.req里面可以獲取到我們前端丟過(guò)來(lái)的參數(shù)
    console.log('??????-----------------', ctx.req)
    ctx.body = {status: 200};
})

router.delete('/delete/:id', async (ctx, next) => {
    console.log('??????-----------------', ctx.params.id)
    ctx.body = {data: {message: '刪除成功!'}, status: 200};
})

module.exports = router;

五、編寫Koa?????????

koa的話也是非常簡(jiǎn)單。把剛剛編寫好的router通過(guò)app.use注冊(cè)以后。再配置一個(gè)404,就是沒(méi)有再路由配置的請(qǐng)求路徑都會(huì)返回404,最后通過(guò)app.listen進(jìn)行啟動(dòng),端口號(hào)是8088。

const Koa = require('koa');
const playlists = require('./playlists.ts')
const likeMusic = require('./like_music.ts') // 剛剛新增的likeMusic.ts文件
const app = new Koa();

function createKoaApp() {

    app.use(playlists.routes(), playlists.allowedMethods())
    app.use(likeMusic.routes(), likeMusic.allowedMethods()) // 注冊(cè)

    app.use(async (ctx, next) => {
        await next();
        ctx.response.body = {
            status: 404,
        }
    });

    app.listen(8088, () => {
        console.log('??????-----------------KOA服務(wù)器已啟動(dòng)成功,端口號(hào)為: 45455')
    });
}

exports.createKoaApp = createKoaApp

六、啟動(dòng)?????????

接在我們?cè)趀lectron的main.ts中在合適的位置進(jìn)行啟動(dòng),為什么說(shuō)合適,因?yàn)槭莇emo所以我隨意放置的,如果有需求做licenses的話,后期可以將Koa啟動(dòng)放置到授權(quán)通過(guò)的邏輯中。

const { app, BrowserWindow } = require('electron')
const path = require('path')
const remote = require("@electron/remote/main");
remote.initialize();
const { createKoaApp } = require('./router/koaApp.ts')
 
const NODE_ENV = process.env.NODE_ENV
let win
 
/**
 * @Description: electron程序入口
 * @Author: Etc.End
 * @Copyright: TigerSong
 * @CreationDate 2023-05-20 14:39:26
 */
const createWindow = () => {
    win = new BrowserWindow({
        icon: './public/logo.png',
        frame: false, // 去掉導(dǎo)航最大化最小化以及關(guān)閉按鈕
        width: 1200,
        height: 800,
        minWidth: 1200,
        minHeight: 800,
        center: true,
        skipTaskbar: false,
        transparent: false,
        webPreferences: {
            nodeIntegration: true,
            contextIsolation: false,
            webSecurity: false,
        }
    })
 
    win.loadURL(
        NODE_ENV === 'development' ? 'http://localhost:5173/' : `file://${path.join(__dirname, '../dist/index.html')}`
    )
 
    if (NODE_ENV === 'development') {
        win.webContents.openDevTools()
    }

    // 啟動(dòng)Koa
    createKoaApp()
 
    remote.enable(win.webContents);
}
 
app.whenReady().then(() => {
    createWindow()
})
 
/**
 * @Description: 限制只能打開(kāi)一個(gè)頁(yè)面
 * @CreationDate 2023-05-20 14:35:52
 */
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
    app.quit()
} else {
    app.on('second-instance', (event, commandLine, workingDirectory) => {
        if (win) {
            if (win.isMinimized()) win.restore()
            win.focus()
        }
    })
}
 
app.on('window-all-closed', function () {
    if(process.platform !== 'darwin') app.quit()
})

七、效果?????????

第三章 Electron 使用Koa以及Koa-Router

我是Etc.End。如果文章對(duì)你有所幫助,能否幫我點(diǎn)個(gè)免費(fèi)的贊和收藏??。

第三章 Electron 使用Koa以及Koa-Router

??? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-470300.html

到了這里,關(guān)于第三章 Electron 使用Koa以及Koa-Router的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++多線程編程(第三章 案例1,使用互斥鎖+ list模擬線程通信)

    C++多線程編程(第三章 案例1,使用互斥鎖+ list模擬線程通信)

    主線程和子線程進(jìn)行l(wèi)ist通信,要用到互斥鎖,避免同時(shí)操作 1、封裝線程基類XThread控制線程啟動(dòng)和停止; 2、模擬消息服務(wù)器線程,接收字符串消息,并模擬處理; 3、通過(guò)Unique_lock和mutex互斥方位list 消息隊(duì)列 4、主線程定時(shí)發(fā)送消息給子線程; 代碼包含了XThread類(基類)、

    2024年02月15日
    瀏覽(20)
  • 第三章 HL7 架構(gòu)和可用工具 - 使用 HL7 架構(gòu)結(jié)構(gòu)頁(yè)面

    第三章 HL7 架構(gòu)和可用工具 - 使用 HL7 架構(gòu)結(jié)構(gòu)頁(yè)面

    通過(guò) HL7 架構(gòu)頁(yè)面,可以導(dǎo)入和查看 HL7 版本 2 架構(gòu)規(guī)范。要顯示此頁(yè)面,請(qǐng)從主頁(yè)中選擇互操作性 互操作 HL7 v2.x HL7 v2.x 架構(gòu)結(jié)構(gòu)。有關(guān)使用此頁(yè)面的一般信息,請(qǐng)參閱在產(chǎn)品中使用虛擬文檔中的“使用架構(gòu)結(jié)構(gòu)頁(yè)面”。 HL7 模式頁(yè)面提供了一個(gè)附加選項(xiàng)卡:消息類型。此選

    2024年02月15日
    瀏覽(25)
  • 第三章 decimal模塊

    第三章 decimal模塊

    decimal 模塊是 Python 提供的用于進(jìn)行十進(jìn)制定點(diǎn)和浮點(diǎn)運(yùn)算的內(nèi)置模塊。使用它可以快速正確地進(jìn)行十進(jìn)制定點(diǎn)和浮點(diǎn)數(shù)的舍入運(yùn)算,并且可以控制有效數(shù)字的個(gè)數(shù)。 使用 decimal 模塊主要是因?yàn)樗c Python 自帶的浮點(diǎn)數(shù)相比,有以下優(yōu)點(diǎn) : 基于浮點(diǎn)模型,提供與數(shù)字計(jì)算相同

    2024年02月09日
    瀏覽(16)
  • 第三章:函數(shù)

    1.定義 設(shè) x , y 是兩個(gè)變量,x的變化范圍是實(shí)數(shù)集D,如果對(duì)于任何的x∈D,按照一定的法則都有唯一確定的y值與之對(duì)應(yīng)。則稱變量y是變量x的函數(shù)。記為 y = f(x) 。稱D為函數(shù)的 定義域 ,x為自變量,y為因變量。全體函數(shù)值的集合稱為函數(shù)y的 值域 。 2.函數(shù)的表示方法 1. 公式

    2024年02月01日
    瀏覽(29)
  • 第三章 選擇與循環(huán)

    第三章 選擇與循環(huán)

    程序員必備技能(思想):增量編寫法。每寫一部分代碼要及時(shí)運(yùn)行看結(jié)果是否正確,對(duì)于復(fù)雜程序很重要。 常用的運(yùn)算符優(yōu)先級(jí): 邏輯非 ! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 || 賦值運(yùn)算符 單目運(yùn)算符 邏輯非 ! 算術(shù)運(yùn)算符 +、-、×、/、% 關(guān)系運(yùn)算符 、、=、=、==、!= 邏輯運(yùn)算符 、|

    2024年02月09日
    瀏覽(32)
  • 第三章-上網(wǎng)行為安全

    第三章-上網(wǎng)行為安全

    1)寬帶濫用 2)上網(wǎng)難監(jiān)管 3)信息泄露 4)網(wǎng)絡(luò)違法 5)安全威脅 1)上網(wǎng)行為三要素:用戶、流量、行為 2)功能需求 (AC的功能)-- 重點(diǎn) 用戶認(rèn)證 應(yīng)用控制 網(wǎng)頁(yè)過(guò)濾 行為審計(jì) 流量管理 應(yīng)用選路 互聯(lián)網(wǎng)上網(wǎng)行為管控 一體化網(wǎng)關(guān) 無(wú)線Wi-Fi管控營(yíng)銷 無(wú)線防共享上網(wǎng) 全網(wǎng)上

    2024年01月23日
    瀏覽(32)
  • Linux第三章

    Linux第三章

    無(wú)論是Windows、MacOS、Linux均采用多用戶的管理模式進(jìn)行權(quán)限管理。在Linux系統(tǒng)中,擁有最大權(quán)限的賬戶名為:root(超級(jí)管理員) root用戶擁有最大的系統(tǒng)操作權(quán)限,而普通用戶在許多地方的權(quán)限是受限的(普通用戶的權(quán)限,一般在其HOME目錄內(nèi)是不受限的,一旦出了HOME目錄,大

    2023年04月26日
    瀏覽(32)
  • 【計(jì)組】第三章練習(xí)

    【計(jì)組】第三章練習(xí)

    4、設(shè)有一個(gè)具有20位地址和32位字長(zhǎng)的存儲(chǔ)器,問(wèn): (1)該存儲(chǔ)器能存儲(chǔ)多少個(gè)字節(jié)的信息? 220 × 32 bits = 1M × 4B = 4MB (220是2的20次方,上標(biāo)打不出來(lái)…) (2)如果存儲(chǔ)器由512K * 8位SRAM芯片組成,需要多少片? (1024K * 32)/(512K * 8) = 8 片 (3)需要多少位地址做芯片選擇? 存

    2024年02月04日
    瀏覽(55)
  • 第三章nginx詳解

    第三章nginx詳解

    特點(diǎn): 1,穩(wěn)定性高。(沒(méi)有apache穩(wěn)定) 2,系統(tǒng)資源消耗地較低。(處理http請(qǐng)求的并發(fā)能力非常高,單臺(tái)物理服務(wù)器可以處理30000-50000個(gè)并發(fā)請(qǐng)求) 穩(wěn)定:一般在企業(yè)中,為了保持服務(wù)器的穩(wěn)定,并發(fā)量的設(shè)置在20000個(gè)左右。占用內(nèi)存2M左右。 nginx主要功能: 1,靜態(tài)文件服

    2024年02月12日
    瀏覽(23)
  • 第三章-運(yùn)輸層

    第三章-運(yùn)輸層

    運(yùn)輸層協(xié)議為運(yùn)行在不同主機(jī)上的進(jìn)程之間提供邏輯通信,即從應(yīng)用程序角度看兩個(gè)主機(jī)好像直連一樣,實(shí)際可能相隔萬(wàn)里 運(yùn)輸層協(xié)議是在端系統(tǒng)上實(shí)現(xiàn)的,而不是路由器,為什么這么強(qiáng)調(diào),因?yàn)檫\(yùn)輸層會(huì)將應(yīng)用報(bào)文劃分為較小的塊然后加上一個(gè)運(yùn)輸層首部來(lái)生成運(yùn)輸層報(bào)文

    2024年02月14日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包