koa 练习

constのKOA =( 'KOA'が必要です
constのパス =必要( 'パス' 
のconstのfs =必要( 'FS' 
のconstパントマイム =は(」./のutil / mimes.js'必要

するvarアプリ= 新しいKOAを()
アプリを.USE(非同期CTX => { 
    せfullStaticPath = path.join(__ DIRNAME、 './static' 

    _contentせ =を待つコンテンツ(CTX、fullStaticPath)

    _mimeせ = praseMime(ctx.url)の

    場合(_mime){ 
        ctx.type = _mime 
    } 

    ctx.body = _content 
})

app.listen( 3000 

はconsole.log( 'ATを起動[デモ]スタティックサーバポート3000' 

/ * * 
 *取得静的リソースコンテンツ
 * 
 * @param {オブジェクト}コンテキストCTX KOA 
 * @param {文字列} fullStaticPathスタティックローカルリソースディレクトリの絶対パス
 * @return {文字列}がローカルコンテンツ要求を取得
 * / 
非同期関数コンテンツ(CTX、fullStaticPath){ 
    LET reqPath = path.join(fullStaticPath、ctx.url)
    にconsole.log(「reqPath。 'reqPath)

    letの存在 = fs.existsSync(reqPath)
    はconsole.log( 'が存在し' 存在する)
    LETコンテンツ =' '

    場合(!が存在する){ 
        コンテンツ '404が見つかりません' = 
    } { 
        STATましょう = fs.statSync(reqPath)
        はconsole.log( 'STAT:'を、STAT)

        であれば(stat.isDirectory()){ 
            ましょうcontentList = fs.readdirSync (reqPath)
            はconsole.log( 'contentList:' 、contentList)
            HTMLせ = `<UL> ` 

            のため(LET [インデックス、項目] contentList.entriesの()){ 
                HTML = '$ {HTML} <LI> <A href = "$ {ctx.url === '/' '':?ctx.url} / $ {項目}"> $ {項目}する</a>
`             }

            コンテンツ = '$ {HTML} </ UL> ` 
        } { 
            含有量は = fs.readFileSync(reqPath、 'バイナリ'待つ
        } 
    } 

    はconsole.log( 'コンテンツ' 、コンテンツ)
     戻りコンテンツ
} 

/ * * 
 *解析を资源类型
 * 
 * @param {文字列}のURL ctx.url 
 * / 
機能praseMime(URL){ 
    せEXTNAME = path.extname(URL)
    はconsole.log( 'EXTNAME:' 、EXTNAME)
    EXTNAME = EXTNAME?extName.slice(1): '不明' リターンパントマイム[EXTNAME]

    
}
せマイム= {
     'CSS': 'テキスト/ CSS'  '未満': 'テキスト/ CSS'  'GIF': 'イメージ/ GIF'  'HTML': 'テキスト/ HTML'  'ICO':「画像/ X-アイコン」 'JPEG': '画像/ JPEG'  'JPG': '画像/ JPEG'  'JS': 'テキスト/ javascriptの'  'JSON': 'アプリケーション/ JSON'  'PDF': 'アプリケーション/ PDF'  'PNG': '画像/ PNG'  'SVG': '画像/ SVG + XML'  'SWF': 'アプリケーション/ X-衝撃波フラッシュ」  'TIFF': 'イメージ/いさかい'  'TXT': 'text / plainの' 'WAV': 'オーディオ/ X-WAV'  'WMA': 'オーディオ/ X-MS-WMA'  'WMV': 'ビデオ/ X-MS-WMV'  'XML': 'テキスト/ XML' 
  } 
 
  module.exportsは =パントマイム

読み取りおよび書き込みだけでなく、KOAの根拠するファイルやディレクトリnodejsおなじみの、静的リソースサーバを実現

おすすめ

転載: www.cnblogs.com/fengyouqi/p/10953973.html