zoukankan      html  css  js  c++  java
  • nodejs繁琐地自建路由

    一、繁琐的自建路由

    app.js

    var server = require('./server');
    
    server.startServer();

    server.js

    var http = require('http');
    var fs = require('fs');
    
    function startServer () {
        var onRequest = function(request, response) {
            if (request.url === '/' || request.url === '/home') {
                response.writeHead(200, { 'Content-Type': 'text/html'});
                fs.createReadStream(__dirname + '/index.html', 'utf8').pipe(response);
            } else if (request.url === '/review') {
                response.writeHead(200, { 'Content-Type': 'text/html'});
                fs.createReadStream(__dirname + '/review.html', 'utf8').pipe(response);
            } else if (request.url === '/api/v1/records') {
                response.writeHead(200, { 'Content-Type': 'application/json' });
                var jsonObj = {
                    name: 'sfafas',
                    job: 'coder'
                }
                response.end(JSON.stringify(jsonObj));
            } else {
                response.writeHead(200, {'Content-Type': 'text/html'});
                fs.createReadStream(__dirname + '/404.html', 'utf8').pipe(response);
            }
        }
        
        var server = http.createServer(onRequest);
        server.listen(3000);    
    } 
    
    console.log('finished');
    module.exports.startServer = startServer;

    二、重构路由

    app.js

    var server = require('./server');
    var router = require('./router');
    
    var handler = require('./handler');
    
    var handle = {};
    handle['/'] = handler.home;
    handle['/home'] = handler.home;
    handle['/review'] = handler.review;
    handle['/api/v1/records'] = handler.api_records;
    
    server.startServer(router.route,handle);

    server.js

    var http = require('http');
    var fs = require('fs');
    
    function startServer (route,handle) {
        var onRequest = function(request, response) {
            route(handle, request.url,response);
        }
        
        var server = http.createServer(onRequest);
        server.listen(3000);    
    } 
    
    console.log('finished');
    module.exports.startServer = startServer;

    handler.js

    var fs = require('fs');
    
    function home(response) {
        response.writeHead(200, { 'Content-Type': 'text/html'});
        fs.createReadStream(__dirname + '/index.html', 'utf8').pipe(response);
    }
    
    function review(response) {
        response.writeHead(200, { 'Content-Type': 'text/html'});
        fs.createReadStream(__dirname + '/review.html', 'utf8').pipe(response);
    }
    
    function api_records(response) {
        response.writeHead(200, { 'Content-Type': 'application/json' });
        var jsonObj = {
            name: 'sfafas',
            job: 'coder'
        }
        response.end(JSON.stringify(jsonObj));
    }
    
    module.exports = {
        home: home,
        review: review,
        api_records: api_records
    }

    router.js

    var fs = require('fs');
    
    function route(handle, pathname,response) {
        console.log('Routing a request for' + pathname);
        if (typeof handle[pathname] === 'function') {
            handle[pathname](response);
        } else {
            response.writeHead(200, {'Content-Type': 'text/html'});
            fs.createReadStream(__dirname + '/404.html', 'utf8').pipe(response);
        }
    }
    
    module.exports.route = route;

    三、页面整体结构

  • 相关阅读:
    springboot:快速构建一个springboot项目
    SpringBoot Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    springboot添加swagger2组件
    Mysql实现企业级数据库主从复制架构实战
    方案优化:网站实现扫描二维码关注微信公众号,自动登陆网站并获取其信息
    网站实现扫描二维码关注微信公众号,自动登陆网站并获取其信息
    九度OJ 1402 特殊的数 -- 位操作
    九度OJ 1385 重建二叉树
    九度OJ 1386 旋转数组的最小数字 【算法】
    九度OJ 城际公路网 -- 图论
  • 原文地址:https://www.cnblogs.com/bbcfive/p/10223889.html
Copyright © 2011-2022 走看看