Rumah > hujung hadapan web > tutorial js > Contoh pelayan statik yang dilaksanakan oleh Nodejs_node.js

Contoh pelayan statik yang dilaksanakan oleh Nodejs_node.js

WBOY
Lepaskan: 2016-05-16 16:28:43
asal
1389 orang telah melayarinya

Merujuk kepada contoh pelayan statik pada cnodejs.org, saya menulis contoh pelayan statik nodejs berikut, yang termasuk cache dan mampatan Kodnya adalah seperti berikut:

Salin kod Kod adalah seperti berikut:

/**
* Contoh ujian pelayan fail statik
* Pengguna: xuwm
* Tarikh: 13-5-17
* Masa: 8:38 PG
* Untuk menukar templat ini gunakan Tetapan Fail | ,*/
var port=3333;
var http = memerlukan("http");
var url = memerlukan("url");
var fs = memerlukan("fs");
var path = require("path");
var mime = memerlukan("./mime").jenis;
var config = memerlukan("./config");
var zlib = memerlukan("zlib");
//创建http服务端
var pelayan=http.createServer(fungsi(permintaan,tindak balas){
    var obj= url.parse(request.url);
    response.setHeader("Pelayan","Nod/V8");
    console.log(obj);
    var pathname=obj.pathname;
    if(pathname.slice(-1)==="/"){
        pathname=pathname config.Welcome.file;   //默认取当前默认下的index.html
    }
    var realPath = path.join("assets", path.normalize(pathname.replace(/../g, "")));
    console.log(realPath) ;
    var pathHandle=function(realPath){
    //用fs.stat方法获取文件
        fs.stat(realPath,function(err,stats){
            jika(err){
                response.writeHead(404,"not found",{'Content-Type':'text/plain'});
                response.write("permintaan " realPath " tidak dijumpai");
                response.end();
            }lain{
                if(stats.isDirectory()){
                }lain{
                    var ext = path.extname(realPath);
                    ext = ext ? ext.slice(1) : 'tidak diketahui';
                    var contentType = mime[ext] || "teks/plain";
                    response.setHeader("Content-Type", contentType);
                    var lastModified = stats.mtime.toUTCString();

                    var ifModifiedSince = "If-Modified-Since".toLowerCase();
                    response.setHeader("Last-Modified", lastModified);

                    jika (ext.match(config.Expires.fileMatch)) {

                        var tamat tempoh = new Date();
                        expires.setTime(expires.getTime() config.Expires.maxAge * 1000);
                        response.setHeader("Tamat tempoh", tamat tempoh.toUTCString());
                        response.setHeader("Cache-Control", "max-age=" config.Expires.maxAge);
                    }

                    jika (request.headers[ifModifiedSince] && lastModified == request.headers[ifModifiedSince]) {
                        console.log("从浏览器cache里取")
                        response.writeHead(304, "Tidak Diubah Suai");
                        response.end();
                    } lain {
                        var raw = fs.createReadStream(realPath);
                        var acceptEncoding = request.headers['accept-encoding'] || "";
                        var dipadankan = ext.match(config.Compress.match);

                          jika (dipadanan && terimaPengekodan.match(/bgzipb/)) {
                            response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'});
                            raw.pipe(zlib.createGzip()).pipe(respons);
                        } lain jika (berpadanan && acceptEncoding.match(/bdeflateb/)) {
                            response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'});
                            raw.pipe(zlib.createDeflate()).pipe(respons);
                        } lain {
                            response.writeHead(200, "Ok");
                            raw.pipe(respons);
                        }
                    }
                }
            }
        });

    }
    pathHandle(realPath);
});
server.listen(port);
console.log("Pelayan http dijalankan dalam port:" port);

首先需要在JS文件里创建一个aset的文件夹,里面放入你要浏览的静态文个assets的文件夹,里面放入你要浏览的静态文个从,文从,文从,文从,有从他。

运行方式为:在命令行里切换到上面的JS的文件目录,然后输入 nod JS文件名>浏览器内输入http://localhost:3333/就会看到效果。

--补上上面代码里缺少的两个模块

mime.js

复制代码 代码如下:

exports.types = {

  "css": "teks/css",

  "gif": "imej/gif",

  "html": "teks/html",

  "ico": "imej/x-icon",

  "jpeg": "imej/jpeg",

  "jpg": "imej/jpeg",

  "js": "teks/javascript",

  "json": "application/json",

  "pdf": "aplikasi/pdf",

  "png": "imej/png",

  "svg": "imej/svg xml",

  "swf": "application/x-shockwave-flash",

  "tiff": "imej/tiff",

  "txt": "teks/biasa",

  "wav": "audio/x-wav",

  "wma": "audio/x-ms-wma",

  "wmv": "video/x-ms-wmv",

  "xml": "teks/xml"
};

config.js

复制代码 代码如下:

eksport.Tamat tempoh = {
    FileMatch: /^(gif|png|jpg|js|css)$/ig,
    maksUmur: 60 * 60 * 24 * 365
};

eksport.Mampat = {
    padankan: /css|js|html/ig
};

eksport. Selamat Datang = {
    fail: "index.html"
};

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan