国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

用 Node.js 搭建本地服務(wù)器

Crazy_Coder / 3414人閱讀

摘要:服務(wù)器端在響應(yīng)兩種請(qǐng)求方式時(shí),響應(yīng)數(shù)據(jù)格式參考官方文檔。關(guān)于熱部署啟動(dòng)服務(wù)器時(shí)是將腳本放入內(nèi)存,以后都會(huì)直接訪問(wèn)內(nèi)存,避免重復(fù)載入。參考學(xué)習(xí)筆記用搭建一個(gè)簡(jiǎn)單的本地服務(wù)器熱部署代碼,實(shí)現(xiàn)動(dòng)態(tài)調(diào)試,可以實(shí)現(xiàn)熱更新

原文:https://zhictory.github.io/bl...

網(wǎng)友 bottle_ 提供搭建一個(gè)簡(jiǎn)單本地服務(wù)器的思路為下:

我們需要一個(gè) HTTP 服務(wù)器

對(duì)于不同的請(qǐng)求,根據(jù)請(qǐng)求的 URL,我們的服務(wù)器需要給予不同的響應(yīng),因此我們需要一個(gè)路由,用于把請(qǐng)求對(duì)應(yīng)到請(qǐng)求處理程序(request handler)

當(dāng)請(qǐng)求被服務(wù)器接收并通過(guò)路由傳遞之后,需要可以對(duì)其進(jìn)行處理,因此我們需要最終的請(qǐng)求處理程序

我們需要從 HTML 文件里提取數(shù)據(jù)以及展示服務(wù)器傳入的數(shù)據(jù),因此需要將 HTML 和服務(wù)器結(jié)合起來(lái)

index.js

引用模塊

const fs = require("fs"); // 系統(tǒng)文件及目錄進(jìn)行讀寫(xiě)操作
const http = require("http"); // 封裝了高效的 HTTP 服務(wù)器和 HTTP 客戶端
const url = require("url"); // URL 處理

路由

/**
* 路由
* @param {Function} handle 請(qǐng)求處理程序
* @param {String} pathname 路徑
* @param {Object} response 響應(yīng)數(shù)據(jù)
* @param {Object} postData 請(qǐng)求參數(shù)
*/
function route(handle, pathname, response, postData) {
  if (typeof handle[pathname] === "function") {
    handle[pathname](response, postData);
  } else {
    response.writeHead(404, { "Content-Type": "text/plain" });
    response.write("404 Not Found");
    response.end();
  }
}

服務(wù)器

/**
* 服務(wù)器
* @param {Function} route 路由
* @param {Function} handle 請(qǐng)求處理程序
*/
function start(route, handle) {
  function onRequest(request, response) {
    const pathname = url.parse(request.url).pathname;
    let postData = "";
    switch (request.method) {
      case "GET":
        postData += url.parse(request.url).query;
        request.setEncoding("utf8");
        route(handle, pathname, response, postData);
        break;
      case "POST":
        request.addListener("data", function (postDateChunk) {
          postData += postDateChunk;
        });
        request.addListener("end", function () {
          route(handle, pathname, response, postData);
        });
        break;
    };
  }

  http.createServer(onRequest).listen(8080);
  console.log("Server has started");
}

請(qǐng)求處理程序

// 請(qǐng)求處理程序
const handle = {
  // index 接口
  "/public/index.html": function (response, postData) {
    const pathname = __dirname + "/public/index.html";
    fs.readFile(pathname, function (err, data) {
      response.end(data);
    });
  },
  // download 接口
  "/download": function (response, postData) {
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write(JSON.stringify({
      code: 200,
      data: {
        "time": new Date().toLocaleString("en-US")
      }
    }));
    response.end();
  },
  // upload 接口
  "/upload": function (response, postData) {
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write("You have sent: " + JSON.parse(postData).value);
    response.end();
  }
};

啟動(dòng)服務(wù)器

// 啟動(dòng)服務(wù)器 = 路由處理 + 接口處理
start(route, handle);

index.html





  
  
  
  Document



  
  
  

關(guān)于 GET 和 POST 方式的請(qǐng)求參數(shù)

GET 的請(qǐng)求參數(shù)是以查詢參數(shù)形式放在 URL 后面的,服務(wù)器可以從 URL 上獲取參數(shù):url.parse(request.url).query

POST 的請(qǐng)求參數(shù)則需要作為 xhr.send() 的參數(shù)并轉(zhuǎn)換為字符串來(lái)傳遞,本文使用 JSON.stringify() 來(lái)轉(zhuǎn)換,再在服務(wù)器端用 JSON.parse() 轉(zhuǎn)換。

服務(wù)器端在響應(yīng)兩種請(qǐng)求方式時(shí),響應(yīng)數(shù)據(jù)格式參考官方文檔。

關(guān)于服務(wù)器響應(yīng)頭中的 Content-Type

一般網(wǎng)站的做法是:當(dāng)返回 HTML 頁(yè)面時(shí)為 text/html,當(dāng)使用 JSONP 時(shí)為 text/javascript,當(dāng)使用 CORS 時(shí)為 application/json。

關(guān)于 Node.js 熱部署

Node.js 啟動(dòng)服務(wù)器時(shí)是將腳本放入內(nèi)存,以后都會(huì)直接訪問(wèn)內(nèi)存,避免重復(fù)載入。這種設(shè)計(jì)雖然有利于提高性能,卻不利于開(kāi)發(fā)調(diào)試,導(dǎo)致修改 Node.js 代碼后需要手動(dòng)終止進(jìn)程并重啟才會(huì)生效。

網(wǎng)友 會(huì)奔跑的胖子 提出方案:

你只需要在修改文件后保存,它就能自動(dòng)替你發(fā)布,這就是所謂的熱部署。

supervisor 就是一個(gè) Node.js 的開(kāi)源熱部署工具:

npm i supervisor -g
supervisor server.js

該網(wǎng)友還提到另一個(gè)開(kāi)源熱部署工具 hotcode,但經(jīng)測(cè)試 hotcode 若使用 express 4.x 則會(huì)報(bào)錯(cuò),因?yàn)?hotcode 使用的 express.createServer() 已經(jīng)被廢棄。

參考:
學(xué)習(xí)筆記:用Nodejs搭建一個(gè)簡(jiǎn)單的本地服務(wù)器
NodeJS”熱部署“代碼,實(shí)現(xiàn)動(dòng)態(tài)調(diào)試(hotnode,可以實(shí)現(xiàn)熱更新)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94445.html

相關(guān)文章

  • Node.js 搭建本地HTTP務(wù)器并應(yīng)node-http-proxy解決ajax跨域問(wèn)題

    摘要:搭建本地服務(wù)器參考了的搭建本地服務(wù)器做轉(zhuǎn)發(fā)使用實(shí)現(xiàn),官方文檔配置服務(wù)器和轉(zhuǎn)發(fā)接口地址判斷如果是接口訪問(wèn),則通過(guò)轉(zhuǎn)發(fā)這里參考的源碼,補(bǔ)充了幾個(gè)字體文件的。 起因:公司的產(chǎn)品更換前端框架,接口的訪問(wèn)原本是通過(guò)nginx配置反向代理實(shí)現(xiàn)的,本地沒(méi)有安裝nginx,就用node.js做一個(gè)。 node.js搭建本地http服務(wù)器參考了shawn.xie的《nodejs搭建本地http服務(wù)器》...

    binaryTree 評(píng)論0 收藏0
  • 如何在務(wù)器搭建hexo博客

    原文鏈接 隨著Vateral主題的開(kāi)發(fā)接近了尾聲,在對(duì)主題速度優(yōu)化的時(shí)候發(fā)現(xiàn)之前用的githubpage問(wèn)題多多:首先就是因?yàn)樵趪?guó)內(nèi)的原因,訪問(wèn)速度本身就很慢,曾經(jīng)有次加載一張16kb的圖標(biāo)時(shí)間耗費(fèi)了26s!!?其次,在對(duì)資源做CDN托管加速時(shí),域名是需要備案的,顯然githubpage也是做不了的;所以果斷舍棄了這個(gè)把hexo搭建到了我的阿里云服務(wù)器上 總體來(lái)說(shuō)還是比把hexo搭建到github...

    MycLambert 評(píng)論0 收藏0
  • 【實(shí)戰(zhàn)】 express+MongoDB 搭建一個(gè)完整的前端項(xiàng)目

    摘要:前言要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。基本了解的概念就好,主要是安裝上數(shù)據(jù)庫(kù),并進(jìn)行簡(jiǎn)單的增刪操作。 前言:要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。本文給的例子很簡(jiǎn)單,也貼出來(lái)源碼,只要一步步下來(lái),就可以跑起來(lái)啦~~~ 思考一個(gè)需求:做一個(gè)登錄頁(yè)面,自己搭建服務(wù)和數(shù)據(jù)庫(kù),將用戶輸入的登錄信息保存到數(shù)據(jù)庫(kù)如何完成呢:首先選擇...

    Steve_Wang_ 評(píng)論0 收藏0
  • webpack從零開(kāi)始搭建多頁(yè)面(一):webpack起步到運(yùn)行一個(gè)簡(jiǎn)單的demo

    摘要:文件夾用來(lái)存放供瀏覽器讀取的文件,這個(gè)是打包成的文件。在文件下手動(dòng)建立一個(gè)文件,并寫(xiě)入下面的代碼。配置出口文件的地址在版本后,支持多出口配置。可以防止不同操作系統(tǒng)之間的文件路徑問(wèn)題,并且可以使用相對(duì)路徑按照預(yù)期工作。 搭建webpack_demo1項(xiàng)目,使其運(yùn)行起來(lái) webpack的強(qiáng)大就不介紹了,我們直接動(dòng)手做起來(lái),我們從零開(kāi)始一步步搭建一個(gè)多頁(yè)面的系統(tǒng),多參考webpack中文文檔...

    EsgynChina 評(píng)論0 收藏0
  • nodejs搭建本地http務(wù)器

    摘要:然后找了個(gè)例子,都成功實(shí)現(xiàn)了,一個(gè)是自已寫(xiě)代碼,要處理好多問(wèn)題,比如我的網(wǎng)頁(yè)是,是搞了半天裝了個(gè)庫(kù)安裝編碼轉(zhuǎn)換結(jié)果可以運(yùn)行了,中文路徑的問(wèn)題也搞定了,但是圖片問(wèn)題還沒(méi)搞定,也變成了文字讀取。 初學(xué)NODEJS,從網(wǎng)站下載了一個(gè)單文件的node.exe,簡(jiǎn)單JS測(cè)試可以了,但是需要用到一些庫(kù)就完全不行了什么npm命令,輸了都無(wú)效,想安裝npm也不知咋弄后面下載了最新版本,安裝的msi版本...

    fxp 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<