一個(gè)后端架構(gòu)

2023-12-03    分類(lèi): 網(wǎng)站建設(shè)

const http = require('http');
http.createServer((request, response) => {
    // 請(qǐng)求的入口
}).listen(8080);
復(fù)制代碼

關(guān)于如何使用和對(duì)象來(lái)完成一個(gè)請(qǐng)求響應(yīng),大部分教程中都有提到。也可以查看Node的中文文檔。這里就不詳細(xì)介紹了。

處理靜態(tài)文件

這里我們使用-,使用npm安裝這個(gè)模塊,在項(xiàng)目根目錄下創(chuàng)建一個(gè)文件夾并放一些靜態(tài)頁(yè)面,創(chuàng)建一個(gè).js文件:

const http = require('http');
const serveStatic = require('serve-static');
const publicpath = 'public';
const staticHandler = serveStatic(publicpath);
http.createServer((request, response) => {
    staticHandler(request, response, () => {
        // 失敗回調(diào)
    })
}).listen(8080);
復(fù)制代碼

以上代碼是處理靜態(tài)文件最簡(jiǎn)單的配置。需要注意的是()是異步操作。您可以通過(guò)使用 Node.js 運(yùn)行 .js 來(lái)訪問(wèn)目錄中的文件。

簡(jiǎn)單路由

要實(shí)現(xiàn)路由,首先要獲取請(qǐng)求路徑。 Node內(nèi)置url模塊的引入可以幫助我們解決這個(gè)問(wèn)題

const url = require('url');
const http = require('http');
http.createServer((request, response) => {
    const path = url.parse(request.url).pathname;
    if (path === '/')
        response.end('path is /');
    else if (path === '/index')
        response.end('path is /index');
    else {
        response.statusCode = 404;
        response.end('Not Found');
    }
}).listen(8080);
復(fù)制代碼

這是最簡(jiǎn)單的路由實(shí)現(xiàn)之一。需要注意的是,無(wú)論如何都必須調(diào)用.end()來(lái)終止請(qǐng)求,否則瀏覽器會(huì)一直等待對(duì)應(yīng)的狀態(tài)

在實(shí)際開(kāi)發(fā)中,我們不會(huì)使用一系列的if...else來(lái)處理路由,一般創(chuàng)建一個(gè)路由映射表,加上靜態(tài)文件處理:

const url = require('url');
const http = require('http');
const serveStatic = require('serve-static');
const publicpath = 'public';
const staticHandler = serveStatic(publicpath);
const map = new Map([
    ['/', response => {
        response.end('path is /');
    }],
    ['/index', response => {
        response.end('path is /index');
    }]
]);
http.createServer((request, response) => {
    const path = url.parse(request.url).pathname;
    if (map.has(path)) {
        let handler = map.get(path);
        handler(response);
    } else
        staticHandler(request, response, () => {
            response.statusCode = 404;
            response.end('Not Found');
        });
}).listen(8080);
復(fù)制代碼

當(dāng)前服務(wù)的處理邏輯是:先找到對(duì)應(yīng)的路由,如果有,交給路由的回調(diào)處理,如果沒(méi)有,在目錄中尋找靜態(tài)文件,返回404錯(cuò)誤如果沒(méi)有

結(jié)論

我還是為這個(gè)系列多寫(xiě)了幾篇文章,但是我發(fā)現(xiàn)寫(xiě)的越多,對(duì)pHp越無(wú)所謂,所以打算放棄這個(gè)前綴,以后的文章會(huì)專(zhuān)注于Node的web發(fā)展

感謝閱讀php開(kāi)發(fā)筆記php開(kāi)發(fā)筆記,歡迎指出文中錯(cuò)誤,歡迎交流

接下來(lái)的幾篇文章將介紹一個(gè)基于我最近在研究的開(kāi)源框架的更復(fù)雜的后端架構(gòu)。尋求關(guān)注和star

本文名稱(chēng):一個(gè)后端架構(gòu)
文章轉(zhuǎn)載:http://www.muchs.cn/news35/298335.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、虛擬主機(jī)Google、企業(yè)建站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)