1.简单小路由案例
var http = require("http");
var server = http.createServer(function(req,res){
let userurl = req.url;
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"})
if(userurl.substr(0,9) == "/student/"){
let studentId = userurl.substr(9);
if(/\d{10}/.test(studentId)){
res.end("你好,您要查询的学生ID为:"+studentId)
}else{
res.end("您的学号输入错误!请查证后再输入!");
}
}else if(userurl.substr(0,9) == "/teacher/"){
let teacherId = userurl.substr(9);
if(/\d{10}/.test(teacherId)){
res.end("你好,您要查询的老师工号为:"+teacherId)
}else{
res.end("老师工号输入错误!请查证后再输入!");
}
}else{
res.end("您输入的类别有问题!请检查后再输入!");
}
})
//监听端口
server.listen(3000,"127.0.0.1");
将服务器挂起:node router.js
访问:http://127.0.0.1:3000/teacher/1561040915
访问:
http://127.0.0.1:3000/student/8214533000
访问:
http://127.0.0.1:3000/asdas/8214533000
2.探求事件环机制
var http = require("http");
var fs = require("fs");
var server = http.createServer(function (req,res) {
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"})
fs.readFile("./a.txt",function (err,data) {//第一个参数是完整路径,第二个参数是回调函数
if(err){
throw err;
}
console.log(`我是1`);
res.end(data);
});
console.log(`我是2`);
});
server.listen(3000,"127.0.0.1");
3.把异步变同步
iterator迭代器就是强行把异步的函数,变成同步的函数
var http = require("http");
var fs = require("fs");
var server = http.createServer(function(req,res){
//不处理收藏夹小图标
if(req.url == "/favicon.ico"){
return;
}
//遍历album里面的所有文件、文件夹
fs.readdir("./album/",function(err,files){
//files是一个存放文件(夹)名的数组
//存放文件夹的数组
var testFile = [];
//迭代器就是强行把异步的函数,变成同步的函数
//1做完了,再做2;2做完了,再做3
(function iterator(i){
//遍历结束
if(i == files.length){
console.log(testFile);
return;
}
fs.stat("./album/" + files[i],function(err,stats){
//检测成功之后做的事情
if(stats.isDirectory()){
//如果是文件夹,那么放入数组。不是,什么也不做。
testFile.push(files[i]);
}
iterator(i+1);
});
})(0);
});
res.end();
});
server.listen(3000,"127.0.0.1");
4.静态资源文件管理
var http = require("http");
var url = require("url");
var fs = require("fs");
var path = require("path");
http.createServer(function(req,res){
//得到用户的路径
var pathname = url.parse(req.url).pathname;
//默认首页
if(pathname == "/"){
pathname = "index.html";
}
//拓展名
var extname = path.extname(pathname);
//真的读取这个文件
fs.readFile("./static/" + pathname,function(err,data){
if(err){
//如果此文件不存在,就应该用404返回
fs.readFile("./static/404.html",function(err,data){
res.writeHead(404,{"Content-type":"text/html;charset=UTF8"});
res.end(data);
});
return;
};
//MIME类型,就是
//网页文件: text/html
//jpg文件 : image/jpg
var mime = getMime(extname);
res.writeHead(200,{"Content-type":mime});
res.end(data);
});
}).listen(3000,"127.0.0.1");
function getMime(extname){
switch(extname){
case ".html" :
return "text/html";
break;
case ".jpg" :
return "image/jpg";
break;
case ".css":
return "text/css";
break;
}
}