Heim > Web-Frontend > js-Tutorial > Eine statische Serverinstanz, die von Nodejs_node.js implementiert wird

Eine statische Serverinstanz, die von Nodejs_node.js implementiert wird

WBOY
Freigeben: 2016-05-16 16:28:43
Original
1358 Leute haben es durchsucht

Unter Bezugnahme auf das statische Serverbeispiel auf cnodejs.org habe ich das folgende statische Serverbeispiel von nodejs geschrieben, das Cache und Komprimierung enthält. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

/**
* Testbeispiel für einen statischen Dateiserver
* Benutzer: xuwm
* Datum: 13.05.17
* Zeit: 8:38 Uhr
* Um diese Vorlage zu ändern, verwenden Sie Datei |. Einstellungen | ​*/
var port=3333;
var http = require("http");
var url = require("url");
var fs = require("fs");
var path = require("path");
var mime = require("./mime").types;
var config = require("./config");
var zlib = require("zlib");
//创建http服务端
var server=http.createServer(function(request,response){
    var obj= url.parse(request.url);
    Response.setHeader("Server","Node/V8");
    console.log(obj);
    var pathname=obj.pathname;
    if(pathname.slice(-1)==="/"){
        Pfadname=Pfadname 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){
            if(err){
                Response.writeHead(404,"nicht gefunden",{'Content-Type':'text/plain'});
                Response.write("die Anfrage „realPath“ wurde nicht gefunden");
                Response.end();
            }else{
                if(stats.isDirectory()){
                }else{
                    var ext = path.extname(realPath);
                    ext = ext ? ext.slice(1) : 'unknown';
                    var contentType = mime[ext] || "text/plain";
                    Response.setHeader("Content-Type", contentType);
                    var lastModified = stats.mtime.toUTCString();

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

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

                        var läuft ab = neues Datum();
                        expires.setTime(expires.getTime() config.Expires.maxAge * 1000);
                        Response.setHeader("Expires", Expires.toUTCString());
                        Response.setHeader("Cache-Control", "max-age=" config.Expires.maxAge);
                    }

                    if (request.headers[ifModifiedSince] && lastModified == request.headers[ifModifiedSince]) {
                        console.log("从浏览器cache里取")
                        Response.writeHead(304, „Nicht geändert“);
                        Response.end();
                    } sonst {
                        var raw = fs.createReadStream(realPath);
                        var AcceptEncoding = request.headers['accept-encoding'] || "";
                        var matched = ext.match(config.Compress.match);

                        if (matched && akzeptierenEncoding.match(/bgzipb/)) {
                            Response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'});
                            raw.pipe(zlib.createGzip()).pipe(response);
                        } else if (matched && akzeptierenEncoding.match(/bdeflateb/)) {
                            Response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'});
                            raw.pipe(zlib.createDeflate()).pipe(response);
                        } sonst {
                            Response.writeHead(200, „Ok“);
                            raw.pipe(response);
                        }
                    }
                }
            }
        });

    }
    pathHandle(realPath);
});
server.listen(port);
console.log("http server run in port:" port);

首先需要在JS文件里创建一个assets的文件夹,里面放入你要浏览的静态文件,比如,index.html,demo.js等。

运行方式为:在命令行里切换到上面的JS的文件目录,然后输入 node JS文件名

浏览器内输入http://localhost:3333/就会看到效果.

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

mime.js

复制代码 代码如下:

exports.types = {

  "css": "text/css",

  "gif": "image/gif",

  "html": "text/html",

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

  "jpeg": "image/jpeg",

  "jpg": "image/jpeg",

  "js": "text/javascript",

  "json": "application/json",

  "pdf": "application/pdf",

  "png": "image/png",

  "svg": "image/svg xml",

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

  "tiff": "image/tiff",

  "txt": "text/plain",

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

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

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

  "xml": "text/xml"
};

config.js

复制代码 代码如下:

exports.Expires = {
    fileMatch: /^(gif|png|jpg|js|css)$/ig,
    maxAlter: 60 * 60 * 24 * 365
};

exports.Compress = {
    Übereinstimmung: /css|js|html/ig
};

exports.Welcome = {
    Datei: „index.html“
};

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage