بالإشارة إلى مثال الخادم الثابت أعلاه cnodejs.org ، كتبت مثال خادم NodeJS التالي ، والذي يحتوي على ذاكرة التخزين المؤقت والضغط ، والرمز كما يلي:
نسخة الكود كما يلي:
/**
* مثال اختبار خادم الملف الثابت
* المستخدم: xuwm
* التاريخ: 13-5-17
* الوقت: 8:38 صباحًا
* لتغيير ملف استخدام القالب هذا | الإعدادات | قوالب الملفات.
*/
VAR PORT = 3333 ؛
var http = require ("http") ؛
var url = require ("url") ؛
var fs = require ("fs") ؛
VAR PATH = مطلوب ("المسار") ؛
var mime = مطلوب ("./ mime"). أنواع ؛
var config = required ("./ config") ؛
var zlib = require ("zlib") ؛
// إنشاء خادم HTTP
var server = http.createserver (function (request ، response) {
var obj = url.parse (request.url) ؛
استجابة.
console.log (OBJ) ؛
var pathname = obj.pathName ؛
if (pathname.slice (-1) === "/") {
pathName = pathname+config.welcome.file ؛ // يتم تحديد index.html الافتراضي تحت الافتراضي الحالي
}
var realPath = path.join ("الأصول" ، path.normalize (pathname.replace (//././ g ، ""))) ؛
console.log (RealPath) ؛
var pathhandle = function (RealPath) {
// استخدم طريقة fs.stat للحصول على الملف
fs.stat (RealPath ، وظيفة (err ، stats) {
إذا (خطأ) {
Response.writehead (404 ، "غير موجود" ، {'type-type': 'text/plain'}) ؛
Response.write ("الطلب"+RealPath+"لم يتم العثور عليه") ؛
استجابة.
}آخر{
if (stats.isdirectory ()) {
}آخر{
var ext = path.extName (RealPath) ؛
تحويلة = تحويلة؟ Ext.slice (1): "غير معروف" ؛
var contentType = mime [ext] || "نص/عادي" ؛
استجابة.
var lastModified = stats.mtime.toutcString () ؛
var ifmodifiedSince = "if modified-since" .ToLowerCase () ؛
استجابة.
if (ext.match (config.expires.filematch)) {
var تنتهي = تاريخ جديد () ؛
Expires.Settime (Expires.getTime () + config.expires.maxage * 1000) ؛
استجابة.
استجابة.
}
if (request.headers [ifmodifiedsince] && lastModified == request.headers [ifmodifiedSince]) {
console.log ("Fetch from Browser Cache")
استجابة. writehead (304 ، "غير تعديل") ؛
استجابة.
} آخر {
var raw = fs.createDStream (RealPath) ؛
var accountEncoding = request.headers ['accept-encoding'] || "" ؛
var matchict = ext.match (config.compress.match) ؛
if (matchict && ensectencoding.match (// bgzip/b/)) {
Response.writehead (200 ، "OK" ، {'content-ending': 'gzip'}) ؛
raw.pipe (zlib.creategzip ()). الأنابيب (الاستجابة) ؛
} آخر إذا (matchict && entikencoding.match (// bdeflate/b/)) {
Response.writehead (200 ، "OK" ، {'content-ending': 'deflate'}) ؛
raw.pipe (zlib.createdeflate ()). الأنابيب (استجابة) ؛
} آخر {
Response.writehead (200 ، "OK") ؛
raw.pipe (استجابة) ؛
}
}
}
}
}) ؛
}
Pathhandle (RealPath) ؛
}) ؛
server.listen (port) ؛
console.log ("HTTP Server تشغيل في المنفذ:"+منفذ) ؛
أولاً ، تحتاج إلى إنشاء مجلد أصول في ملف JS ، ووضع الملفات الثابتة التي تريد تصفحها ، مثل index.html ، demo.js ، إلخ.
طريقة التشغيل هي: التبديل إلى دليل ملف JS أعلاه على سطر الأوامر ، ثم أدخل اسم ملف Node JS
أدخل http: // localhost: 3333/في المتصفح لرؤية التأثير.
-ملء في الوحدة المفقودة في الكود أعلاه
mime.js
نسخة الكود كما يلي:
تصدير. 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": "التطبيق/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
نسخة الكود كما يلي:
orports.expires = {
FileMatch: /^(gif | png | jpg | js | css) $ /ig ،
Maxage: 60 * 60 * 24 * 365
} ؛
orports.compress = {
تطابق: /css | js | html /ig
} ؛
orports.welcome = {
ملف: "index.html"
} ؛