最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs中的http模塊與npm模塊使用

 更新時(shí)間:2022年08月04日 11:11:56   作者:燈光下的投影  
這篇文章主要介紹了nodejs中的http模塊與npm模塊使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

http模塊

創(chuàng)建服務(wù)器基本步驟

//1. 導(dǎo)入http模塊,http模塊是node的核心模塊,作用是用來創(chuàng)建http服務(wù)器的。
var http = require("http");
?
//2. 創(chuàng)建服務(wù)器
var server = http.createServer();
?
//3. 服務(wù)器處理請(qǐng)求
server.on("request", function() {
? console.log("我接收到請(qǐng)求了");
});
?
//4. 啟動(dòng)服務(wù)器,監(jiān)聽某個(gè)端口
server.listen(9999, function(){
? console.log("服務(wù)器啟動(dòng)成功了, 請(qǐng)?jiān)L問: http://localhost:9999");
});

詳細(xì)說明

  • 給服務(wù)器注冊(cè)request事件,只要服務(wù)器接收到了客戶端的請(qǐng)求,就會(huì)觸發(fā)request事件
  • request事件有兩個(gè)參數(shù),request表示請(qǐng)求對(duì)象,可以獲取所有與請(qǐng)求相關(guān)的信息,response是響應(yīng)對(duì)象,可以獲取所有與響應(yīng)相關(guān)的信息。
  • 服務(wù)器監(jiān)聽的端口范圍為:1-65535之間,推薦使用3000以上的端口,因?yàn)?000以下的端口一般留給系統(tǒng)使用

request對(duì)象詳解

文檔地址:http://nodejs.cn/api/http.html#http_message_headers

常見屬性:

  • headers: 所有的請(qǐng)求頭信息
  • method: 請(qǐng)求的方式
  • url: 請(qǐng)求的地址

注意:在發(fā)送請(qǐng)求的時(shí)候,可能會(huì)出現(xiàn)兩次請(qǐng)求的情況,這是因?yàn)楣雀铻g覽器會(huì)自動(dòng)增加一個(gè)favicon.ico的請(qǐng)求。

小結(jié):request對(duì)象中,常用的就是method和url兩個(gè)參數(shù)

response對(duì)象詳解

文檔地址:http://nodejs.cn/api/http.html#http_class_http_serverresponse

常見的屬性和方法:

  • res.write(data): 給瀏覽器發(fā)送請(qǐng)求體,可以調(diào)用多次,從而提供連續(xù)的請(qǐng)求體
  • res.end();   通知服務(wù)器,所有響應(yīng)頭和響應(yīng)主體都已被發(fā)送,即服務(wù)器將其視為已完成。
  • res.end(data); 結(jié)束請(qǐng)求,并且響應(yīng)一段內(nèi)容,相當(dāng)于res.write(data) + res.end()
  • res.statusCode: 響應(yīng)的的狀態(tài)碼 200 404 500
  • res.statusMessage: 響應(yīng)的狀態(tài)信息, OK Not Found ,會(huì)根據(jù)statusCode自動(dòng)設(shè)置。
  • res.setHeader(name, value); 設(shè)置響應(yīng)頭信息, 比如content-type
  • res.writeHead(statusCode, statusMessage, options); 設(shè)置響應(yīng)頭,同時(shí)可以設(shè)置狀態(tài)碼和狀態(tài)信息。

注意:必須先設(shè)置響應(yīng)頭,才能設(shè)置響應(yīng)。

實(shí)現(xiàn)靜態(tài)WEB服務(wù)器

服務(wù)器響應(yīng)首頁(yè)

注意:瀏覽器中輸入的URL地址,僅僅是一個(gè)標(biāo)識(shí),不與服務(wù)器中的目錄一致。也就是說:返回什么內(nèi)容是由服務(wù)端的邏輯決定

server.on('request', function(req, res) {
? var url = req.url
? if(url === '/') {
? ? fs.readFile('./index.html', function(err, data) {
? ? ? if(err) {
? ? ? ? return res.end('您訪問的資源不存在~')
? ? ? }
?
? ? ? res.end(data)
? ? })
? }
})

根據(jù)根據(jù)不同url,響應(yīng)不同文件

content-type設(shè)置-MIME類型

  • MIME(Multipurpose Internet Mail Extensions)多用途Internet郵件擴(kuò)展類型 是一種表示文檔性質(zhì)和格式的標(biāo)準(zhǔn)化方式
  • 瀏覽器通常使用MIME類型(而不是文件擴(kuò)展名)來確定如何處理文檔;因此服務(wù)器將正確的MIME類型附加到響應(yīng)對(duì)象的頭部是非常重要的
  • MIME 類型

靜態(tài)資源的通用處理

MIME類型的通用處理-mime模塊

  • 作用:獲取文件的MIME類型
  • 安裝:npm i mime

引入mime:

var mime = require('mime')
 
// 獲取路徑對(duì)應(yīng)的MIME類型
mime.getType('txt')                    // ? 'text/plain'
// 根據(jù)MIME獲取到文件后綴名
mime.getExtension('text/plain')        // ? 'txt'
const http = require('http')
const fs = require('fs')
const path = require('path')
const mime = require('mime')
http.createServer((req, res) => {
    // 只需要判斷 url是否以 /www開始
    const url = req.url
 
    if (url.startsWith('/www')) {
      // 直接讀取文件
      const filePath = path.join(__dirname, url)
      fs.readFile(filePath, (err, data) => {
        if (err) {
          // 響應(yīng)404
          res.statusCode = 404
          res.end('404')
        } else {
          // 設(shè)置mime類型
          res.setHeader('content-type', mime.getType(url))
          // 響應(yīng)數(shù)據(jù)
          res.end(data)
        }
      })
    } else {
      res.statusCode = 404
      res.end('404')
    }
  })
  .listen(9999, () => {
    console.log('服務(wù)器啟動(dòng)成功了')
  })

npm - Node包管理工具

npm的基本概念

1. npm 是node的包管理工具,

2. 它是世界上最大的軟件注冊(cè)表,每星期大約有 30 億次的下載量,包含超過 600000 個(gè) 包(package) (即,代碼模塊)。

3. 來自各大洲的開源軟件開發(fā)者使用 npm 互相分享和借鑒。包的結(jié)構(gòu)使您能夠輕松跟蹤依賴項(xiàng)和版本。

  • 作用:通過npm來快速安裝開發(fā)中使用的包
  • npm不需要安裝,只要安裝了node,就自帶了npm

npm基本使用

初始化包

npm init; ? ?//這個(gè)命令用于初始化一個(gè)包,創(chuàng)建一個(gè)package.json文件,我們的項(xiàng)目都應(yīng)該先執(zhí)行npm init
npm init -y; ?//快速的初始化一個(gè)包, 不能是一個(gè)中文名

安裝包

npm install 包名; ?//安裝指定的包名的最新版本到項(xiàng)目中
npm install 包名@版本號(hào); ?//安裝指定包的指定版本
npm i 包名; //簡(jiǎn)寫

卸載包

npm uninstall 包名; ?//卸載已經(jīng)安裝的包

清除緩存

npm cache clean -f // 如果npm安裝失敗了,可以用這個(gè)命令來清除緩存

package.json文件

package.json文件,包(項(xiàng)目)描述文件,用來管理組織一個(gè)包(項(xiàng)目),它是一個(gè)純JSON格式的。

  • 作用:描述當(dāng)前項(xiàng)目(包)的信息,描述當(dāng)前包(項(xiàng)目)的依賴項(xiàng)
  • 如何生成:npm init或者npm init -y
  • 作用

作為一個(gè)標(biāo)準(zhǔn)的包,必須要有package.json文件進(jìn)行描述

一個(gè)項(xiàng)目的node_modules目錄通常都會(huì)很大,不用拷貝node_modules目錄,可以通過package.json文件配合npm install直接安裝項(xiàng)目所有的依賴項(xiàng)

  • 描述內(nèi)容
{
? "name": "03-npm", ?//描述了包的名字,不能有中文
? "version": "1.0.0", ?//描述了包的的版本信息, x.y.z ?如果只是修復(fù)bug,需要更新Z位。如果是新增了功能,但是向下兼容,需要更新Y位。如果有大變動(dòng),向下不兼容,需要更新X位。
? "description": "", //包的描述信息
? "main": "index.js", //入口文件(模塊化加載規(guī)則的時(shí)候詳細(xì)的講)
? "scripts": { ?//配置一些腳本,在vue的時(shí)候會(huì)用到,現(xiàn)在體會(huì)不到
? ? "test": "echo \"Error: no test specified\" && exit 1"
? },
? "keywords": [], ?//關(guān)鍵字(方便搜索)
? "author": "", ?//作者的信息
? "license": "ISC", ?//許可證,開源協(xié)議
? "dependencies": { ? //重要,項(xiàng)目的依賴, 方便代碼的共享 ?通過 npm install可以直接安裝所有的依賴項(xiàng)
? ? "bootstrap": "^3.3.7",
? ? "jquery": "^3.3.1"
? }
}

注意:一個(gè)合法的package.json,必須要有name和version兩個(gè)屬性

本地安裝和全局安裝

有兩種方式用來安裝 npm 包:本地安裝和全局安裝。選用哪種方式來安裝,取決于你如何使用這個(gè)包。

全局安裝:如果你想將其作為一個(gè)命令行工具,那么你應(yīng)該將其安裝到全局。這種安裝方式后可以讓你在任何目錄下使用這個(gè)命令。比如less命令,webpack命令,hcc-md命令 。

本地安裝:如果你自己的模塊依賴于某個(gè)包,并通過 Node.js 的 require 加載,那么你應(yīng)該選擇本地安裝,這種方式也是 npm install 命令的默認(rèn)行為。

// 全局安裝,會(huì)把npm包安裝到C:\Users\HUCC\AppData\Roaming\npm目錄下,作為命令行工具使用
npm install -g 包名;
//本地安裝,會(huì)把npm包安裝到當(dāng)前項(xiàng)目的node_modules文件中,作為項(xiàng)目的依賴
npm install 包名;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 切換node版本的實(shí)現(xiàn)方式

    切換node版本的實(shí)現(xiàn)方式

    由于有些比較老的系統(tǒng),使用的node版本較低,本機(jī)裝的node版本又比較高,不想降node版本,那么就需要考慮能不能在系統(tǒng)里管理多個(gè)node版本,本文主要介紹了切換node版本,感興趣的可以了解一下
    2024-04-04
  • nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無刷新上傳圖片實(shí)例代碼

    nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無刷新上傳圖片實(shí)例代碼

    本篇文章主要介紹了nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無刷新上傳圖片實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • nvm管理node無法正常切換node版本問題的解決方法

    nvm管理node無法正常切換node版本問題的解決方法

    相信一定會(huì)有存在一些小伙伴 明明都已經(jīng)按著操作卸載node 和安裝nvm 了但是 依舊無法正常通過nvm管理node,本文將給大家介紹nvm管理node無法正常切換node版本問題的解決方法,需要的朋友可以參考下
    2024-01-01
  • Node.js API詳解之 console模塊用法詳解

    Node.js API詳解之 console模塊用法詳解

    這篇文章主要介紹了Node.js API詳解之 console模塊用法,總結(jié)分析了Node.js API中console模塊基本函數(shù)、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 利用yarn實(shí)現(xiàn)一個(gè)webpack+react種子

    利用yarn實(shí)現(xiàn)一個(gè)webpack+react種子

    其實(shí)以前就寫過如何使用React-router和Webpack快速構(gòu)建一個(gè)react程序。后來發(fā)現(xiàn)版本太老,于是乎最近又重新組織了下結(jié)構(gòu),使用最近發(fā)布的yarn作為包管理工具,介紹下基本安裝步驟,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 使用Make構(gòu)建Node.js網(wǎng)站項(xiàng)目

    使用Make構(gòu)建Node.js網(wǎng)站項(xiàng)目

    這篇文章介紹了使用Make構(gòu)建Node.js網(wǎng)站項(xiàng)目的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • node.js中的fs.appendFile方法使用說明

    node.js中的fs.appendFile方法使用說明

    這篇文章主要介紹了node.js中的fs.appendFile方法使用說明,本文介紹了fs.appendFile方法說明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 淺談Node新版本13.2.0正式支持ES Modules特性

    淺談Node新版本13.2.0正式支持ES Modules特性

    這篇文章主要介紹了淺談Node新版本13.2.0正式支持ES Modules特性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 深入了解Node.js中的一些特性

    深入了解Node.js中的一些特性

    這篇文章主要介紹了深入了解Node.js中的一些特性,本文對(duì)EventEmitter、Streams、Coding Style、Linting、Coding Style等特性進(jìn)行分析探討,需要的朋友可以參考下
    2014-09-09
  • NodeJs讀取JSON文件格式化時(shí)的注意事項(xiàng)

    NodeJs讀取JSON文件格式化時(shí)的注意事項(xiàng)

    本文是作者在進(jìn)行NodeJs開發(fā)時(shí)偶然發(fā)現(xiàn)的問題,經(jīng)過一番努力,最終找到解決方案,分享給大家,有需要的小伙伴可以參考下
    2016-09-09

最新評(píng)論

寻乌县| 巍山| 弥勒县| 信丰县| 兴仁县| 安顺市| 永寿县| 乌拉特前旗| 望城县| 文成县| 钟祥市| 庆云县| 子洲县| 佛冈县| 武平县| 交城县| 聂荣县| 西昌市| 克拉玛依市| 扎赉特旗| 黄龙县| 伊吾县| 五台县| 永靖县| 东海县| 高平市| 延安市| 宝丰县| 邯郸市| 柳江县| 潮州市| 司法| 柳林县| 梁平县| 宿松县| 贵德县| 赞皇县| 康马县| 连城县| 明水县| 娱乐|