nodejs 學習記錄(三) mime模組學習

2021-08-08 19:10:11 字數 2511 閱讀 6001

引至

mime

乙個全面的,規整mime型別的模組。

版本二是版本一的乙個轉折點,具體的變更如下:

es6相容但是要求node的版本要大於6,這可以算得上是乙個巨大的改變,除此之外,有些對應的介面方法也做了些修改,如:

lookup() 被gettype()替換,

extension() 被getextension() 方法替換

charset() 方法被load() 方法替換

npm 安裝mime模組

npm install mime

入門案例

const mime = require("mime");

mime.gettype(「text」);

mime.getextension("text/plain");

mime api 的其他介面詳解請往下看:

精簡版(lite)

這個模組還有乙個「精簡」版本,它省略特定於**商的(/vnd)和實驗性的(/x-)型別。精簡的版本僅為2.5 kb,而源版本為8kb。具體的呼叫**如下:

const litemime = require("mime/lite");

瀏覽器版(browser)

要在瀏覽器中使用這個模組,您可以使用webpack或瀏覽器來打包您的**。但是,瀏覽器就緒的版本可以通過wzrd.d提供。具體的呼叫方式如下:

也可以使用精簡版本呼叫,呼叫的方式如下:

mime 、mime-types、 mime-db 三大功能模組對比

mime-db:是mime型別資訊的「真正**」。它不是乙個api。相反,它是由nodejs社群從iana、apache、nginx提取出來的一套規範資料集。

mime-types:是乙個圍繞mime-db的瘦包裝器,它提供了乙個與mime相容(ish)的api,但是僅支援node1.3.6 版本以下的api。

mime:就像node第二版一樣,它是乙個自包含的模組,它與預優化版本的mime-db資料集繫結在一起。它提供了乙個簡化的api,具有以下特徵:

1、內部一致的型別擴充套件對映。例如,mime.gettype(mime.getextension(type))==型別總是正確的

2、與行業最佳實踐相一致的命名方式

3、各種模組的大小比較:

module      size

mime-db     18kb

mime-types  18kb

mime         8kb

mime/lite   2kb   

mime api

require("mime")和require("mime/lite")返回的都是mime 型別的例項,例項如下:

new mime(typemap,...more map)

這個模組的大多數使用者不需要直接建立mime例項。但是,如果您想要建立自定義對映,您可以這樣做:

// 引入mime 模組

const mime = require('mime/mime');

// 定義對映型別

const typemap = ;

// 使用mime例項

const mymime = new mime(typemap);

mymime.gettype('abc');          

mymime.getextension('text/def');  

mime.gettype(pathorextension)

獲取給定路徑或擴充套件的mime型別。如:

在未檢測到或識別擴充套件的情況下返回null:

mime.gettype('foo/txt');        // ⇨ null

mime.gettype('bogus_type');     // ⇨ null

mime.getextension(type)

獲得給定mime型別的副檔名。charset選項(通常包括在content-type頭部中)被忽略。

mime.getextension('text/plain');               // ⇨ 'txt'

mime.getextension('text/html; charset=utf8');  // ⇨ 'html'

mime.define(typemap[, force = false])

定義更多型別的對映

型別對映是一種型別-擴充套件的對映,如在上面的新mime中所記錄的那樣。

預設情況下,如果您試圖將乙個型別對映到另乙個型別的擴充套件,那麼這個方法將會丟擲乙個錯誤。傳遞true對於force引數將會抑制該行為(覆蓋之前的對映)。

mime.define();

mime.gettype('abcd');            // ⇨ 'text/x-abc'

mime.getextension('text/x-abc')  // ⇨ 'abc'

nodejs學習記錄2

1 commander 2 chalk 3 inquirer npn npm發布自己的包方法需要乙個package json,可以在命令列中執行 幫助建立package json檔案 例如 npm init npm init yes 預設同意會直接使用你的檔名當專案名稱 commander cons...

Nodejs學習筆記(三)

預設ejs模板只支援渲染以ejs為副檔名的檔案,可能在使用的時候會覺得它的 書寫 方式很不爽還是想用html的形式去書寫,該怎麼辦呢,這時就得去修改模板引擎了,也就會用到 express的engine函式 修改模板檔案的字尾名為html set view engine html 執行ejs模組 en...

學習記錄(三)

new出來的空間都會給個預設值 基本型別預設值是0,引用型別預設值是null,布林型別預設值是false 方法內的new沒給預設值的確沒有,物件內沒給會有預設值 陣列的資料空間是連續的,申請的時候預設連續 一般連續放資料,但比如桶排序會不按順序放入 導線互相匯聚,網路通過電訊號傳播 電壓,高電壓1,...