美文网首页
nodejs 静态资源服务器作业

nodejs 静态资源服务器作业

作者: NHXuan | 来源:发表于2016-08-10 17:01 被阅读0次

    完整实例(根据不同的url地址请求不同的文件【模板】)

    const ip = '192.168.1.12';//主机IP
    const port = 2001;//端口号
    //引入的组建模块  http、url、fs
    const http = require('http');
    const urls = require('url');
    const fs = require('fs');
    //实例化一个服务容器
    var server = new http.Server();
    //监听一个端口
    server.listen(port , ip);
    //注册一个事件处理的on方法
    server.on('request' , function(req , res){
        //获取请求的url地址
        var url = urls.parse(req.url);
        //console.log(url.pathname);
        //根据path路径来读取不同的模板文件
        switch( url.pathname ){
            //显示首页
            case '' || '/':
                //读取文件内容
                fs.readFile('./index.html',function( error, content){
                    if(error){
                        //如果有错误时,显示错误信息
                        funError();
                    }else{
                        //正确时浏览器输出模板文件的内容
                        funAuccess(res,content);
                    }
                });
                break;
            //显示列表页面
            case '/list':
                fs.readFile('./list.html',function( error, content){
                    if(error){
                            funError(res , error);
                    }else{
                        funAuccess(res,content);
                    }
                    });
                break;
            //显示详情页
            case '/show':
                fs.readFile('./show.html',function( error, content){
                    if(error){
                        funError(res , error);
                    }else{
                        funAuccess(res,content);
                    }
                });
                break;
            //获取静态资源的页面 如:css\js
            default:
                //获取文件名
                var filename = url.pathname.substring(1);
                //获取文件名对应的类型值
                var type = getAllType( filename.substring(filename.lastIndexOf('.')+1));
                //测试所用
                //console.log(type);
                //读取静态资源的页面
                fs.readFile(filename , function( error, content){
                    if(error){
                        funError(res , error);
                    }else{
                        res.writeHead(200,{'Content-Type' : type});
                        res.write(content);
                        res.end();
                    }
                });
                break;
        }
    
    });
    //错误提示的函数
    function funError(response , error){
        response.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});
        response.write(error.message);
        response.end();
    }
    
    //正确时输出文件内容的函数
    function funAuccess(response,cont){
        response.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});//头信息
        response.write(cont);//模板文件内容
        response.end();
    }
    
    
    //定义文件类型的函数
    function getAllType(code){
        var type = '';
        switch(code){
            case 'html':
                type = 'text/html;charset=utf-8';
                break;
            case 'js':
                type = 'application/javascript/html;charset=utf-8';
                break;
            case 'css':
                type = 'text/css;charset=utf-8';
                break;
                case 'text':
                type = 'text/plain;charset=utf-8';
                break;
            case 'manifest':
                type = 'text/cache-manifest;charset=utf-8';
                break;
            default:
                type = 'application/octet-stream';
                break;
        }
        return type;
    }
    

    复习

    //主机IP
    const ip = '192.168.1.118';
    //端口号
    const port = 2000;
    //引入的组建模块  http、url、fs
    const http = require('http');
    const url = require('url');
    const fs = require('fs');
    
    //创建一个服务
    var server = http.createServer(function(req,res){
            res.writeHead(200,{'Content-Type':'text/plain'});
            res.write('my nodejs');
            res.end();
    });
    //监听一个端口
    server.listen(port,ip,function(){
            console.log('server start');
    
    });
    

    抽象方法及获取URL部分块的内容 url

    const ip = '192.168.1.118';//主机IP
    const port = 2001;//端口号
    //引入的组建模块  http、url、fs
    const http = require('http');
    const url = require('url');
    const fs = require('fs');
    
    //创建服务的回调函数
    var funSer = function(req,res){
        //获取url地址块的内容  如:/path/show
        var parth = url.parse(req.url).pathname;
        res.write(parth);
        res.end();
    }
    
    //监听端口的回调
    var fun = function(){
        console.log('server start');
    }
    
    var server = http.createServer(funSer).listen(port,ip,fun);
    

    读取文件的内容 File System

    const ip = '192.168.1.118';//主机IP
    const port = 2001;//端口号
    //引入的组建模块  http、url、fs
    const http = require('http');
    const url = require('url');
    const fs = require('fs');
    
    //真正打印文件内容
    fs.readFile('./index.html', (err, data) => {
        if (err) throw err;
        //打印字符串内容
        console.log(data.toString());
    });
    
    //创建服务的回调函数
    var funSer = function(req,res){
        //获取url地址块的内容  如:/path/show
        var parth = url.parse(req.url).pathname;
        res.write(parth);
        res.end();
    }
    
    //监听端口的回调
    var fun = function(){
        console.log('server start');
    }
    
    var server = http.createServer(funSer).listen(port,ip,fun);
    

    读取文件的内容并在浏览器中输出 File System

    const ip = '192.168.1.118';//主机IP
    const port = 2001;//端口号
    //引入的组建模块  http、url、fs
    const http = require('http');
    const url = require('url');
    const fs = require('fs');
    
    //读取文件内容
    var data = fs.readFileSync('./index.html');
    //创建服务的回调函数
    var funSer = function(req , res){
        //获取url地址块的内容  如:/path/show
        var path = urls.parse( req.url ).pathname;
        res.write( data.toString() );
        res.write( path );
        res.end();
    }
    
    //监听端口的回调
    var fun = function(){
        console.log('server start');
    }
    
    var server = http.createServer(funSer).listen(port,ip,fun);
    

    相关文章

      网友评论

          本文标题:nodejs 静态资源服务器作业

          本文链接:https://www.haomeiwen.com/subject/xejjsttx.html