• nodejs 学习心得


    一、server+router

    1、构成基本框架;

      index.js(运行的主页面)+server.js(服务器页面)+router.js(路由页面)

    2、页面详解

    2.1、index.js页面

      ①分别调用并启用server.js+router.js页面;

      ②代码详细;

        var server=require("server.js");

        var router=require("router.js");

        //将路由模块以参数形式传递给服务器

        server.start(router.route);

    2.2、server.js页面

      ①创建服务器并应用相应模块;

      ②代码详细:

        var http=require("http");

        var url=require("url");

        function start(route){

          http.createServer(function(req,res){

            var pathname=url.parse(req.url).pathname;

            console.log("request for "+pathname+" reserved!")

            route(pathname);

            res.writeHead(200,{"Content-Type":"text/plain"});

            res.write("hello world!");

            res.end(); 

          }).listen(3000)

          console.log("server running!")

        }

        exports.start=start;

    2.3、router.js页面

      ①创建路由模块;

      ②代码:

      function route(pathname){

        console.log("成功!")

      }

      exports.route=route;

     二、server+router+handler

    1、构成基本框架;

      index.js(运行的主页面)+server.js(服务器页面)+router.js(路由页面)+requesthandler.js(请求处理程序页面)

    2、页面详解

    2.1、index.js页面

      ①分别调用并启用server.js+router.js+requesthandler.js页面;

      ②代码详细;

        var server=require("server.js");

        var router=require("router.js");

        var requestHandler=require("requesthandler.js")

        //定义请求处理对象

        var handler={};

        handler["/"]=requestHandler.start;

        handler["/start"]=requestHandler.start;

        handler["/upload"]=requestHandler.upload;

        //将路由模块及请求处理对象以参数形式传递给服务器

        server.start(router.route,handler);

    2.2、server.js页面

      ①创建服务器并应用相应模块;

      ②代码详细:

        var http=require("http");

        var url=require("url");

        function start(route,handler){

          http.createServer(function(req,res){

            var pathname=url.parse(req.url).pathname;

            console.log("request for "+pathname+" reserved!")

            route(handler,pathname);

            res.writeHead(200,{"Content-Type":"text/plain"});

            res.write("hello world!");

            res.end(); 

          }).listen(3000)

          console.log("server running!")

        }

        exports.start=start;

    2.3、router.js页面

      ①创建路由模块;

      ②代码:

      function route(handler,pathname){

        if(typeof(handler[pathname]==="function")){

          handler[pathname]()

        }else{

        console.log("No request handler found for " + pathname);

        }

      }

      exports.route=route;

    2.4、requestHandler.js页面

      ①创建请求处理程序

      ②代码:

      function start(){

        console.log("Request handler 'start' was called.")

      }

      function upload(){  

        console.log("Request handler 'upload' was called.");

      }

      exports.start=start;

      exports.upload=upload;

    三、server+router+handler(非阻塞运行)

    1、构成基本框架;

      index.js(运行的主页面)+server.js(服务器页面)+router.js(路由页面)+requesthandler.js(请求处理程序页面)

    2、页面详解

    2.1、index.js页面

      ①分别调用并启用server.js+router.js+requesthandler.js页面;

      ②代码详细;

        var server=require("server.js");

        var router=require("router.js");

        var requestHandler=require("requesthandler.js")

        //定义请求处理对象

        var handler={};

        handler["/"]=requestHandler.start;

        handler["/start"]=requestHandler.start;

        handler["/upload"]=requestHandler.upload;

        //将路由模块及请求处理对象以参数形式传递给服务器

        server.start(router.route,handler);

    2.2、server.js页面

      ①创建服务器并应用相应模块;

      ②代码详细:

        var http=require("http");

        var url=require("url");

        function start(route,handler){

          http.createServer(function(req,res){

            var pathname=url.parse(req.url).pathname;

            console.log("request for "+pathname+" reserved!")

            //将response作为参数传递到router中

            route(handler,pathname,response);

            //移出response的相关函数,在router及requestHandler中执行向浏览器直接输出

          }).listen(3000)

          console.log("server running!")

        }

        exports.start=start;

    2.3、router.js页面

      ①创建路由模块;

      ②代码:

      function route(handler,pathname,response){

        if(typeof(handler[pathname]==="function")){

          handler[pathname](response)

        }else{

         console.log("No request handler found for " + pathname);

        response.writeHeader(404,{"Content-Type":"text/plain"});

        response.write("404 NOT FOUND")

        response.end()

        }

      }

      exports.route=route;

    2.4、requestHandler.js页面

      ①创建请求处理程序

      ②代码:

      var exec=require("child-process").exec;

      function start(response){

        exec("ls lah",function(err,stdout,stderr){

          response.writeHeader(200,{"Content-type":"text/plain"});

          response.write(stdout);

          response.end()

        })

      }

      function upload(response){  

        response.writeHeader(200,{"content-type":"text/plain"});

        response.write("hello upload!")

        response.end();

      }

      exports.start=start;

      exports.upload=upload;

  • 相关阅读:
    JS获取元素的子元素
    js iframe
    获取窗口句柄
    python 从PDF中提取附件
    xlwings 使用方法
    基于KNN的发票识别
    爬取漫画网站并进行图片拼接
    用python实现对元素的长截图
    Head First C 第三章总结
    Ruby on Rails Tutorial 第八章笔记 基本登陆功能
  • 原文地址:https://www.cnblogs.com/pyj63/p/8143254.html
Copyright © 2020-2023  润新知