NodeJs【自学笔记】1



index


//获取server.js 服务器文件
var server = require("./server");

//获取router.js 入口文件
var router = require("./router");

//获取requestHandlers.js 请求处理文件
var requestHandlers = require("./requestHandlers");

//配置handle请求
var handle ={};

//配置 用户输入 / 的请求方法
handle["/"]= requestHandlers.start;

//配置 用户输入 /start 的请求方法
handle["/start"]= requestHandlers.start;

//配置 用户输入 /upload 的请求方法
handle["/upload"]= requestHandlers.upload;


//执行 server start方法,顺便把 router and handle作为参数一起带入。
server.start(router.route, handle);


server



//获取http服务器
var http = require("http");

//获取url
var url = require("url");

//服务器创建方法
function start(route, handle) {

    //服务器请求,响应方法
    function onRequest(request, response) {

        //获取url路径 --->端口后面的路径
        var pathname = url.parse(request.url).pathname;
        console.log("Request for" + pathname + "|");

        //上传文件
        var postData = "";

        //设置编码
        request.setEncoding("utf-8");
        //response.setEncoding("utf-8"); 这是错误的

        //设置请求数据时的监听
        request.addListener("data", function (postDataChunk) {
            //获取postDataChunk 提交的数据
            postData += postDataChunk;
            console.log("------------->" + postDataChunk);
        });

        //设置请求数据完成时的监听
        request.addListener("end", function () {
            /*
            * handle 处理js
            * pathname url路径
            * response 响应
            * postData 提交的数据
            * */
            //入口方法
            route(handle, pathname, response, postData);
        });

    }

    //获取创建的服务器
    var newServer = http.createServer(onRequest);
    //设置端口
    newServer.listen(8888);
    console.log("Run");
}

//创建本js的模块start方法 为 start方法
exports.start = start;



router


//入口方法
function route(handle, pathname, response, postData) {
    console.log("About to route a request for " + pathname);

    //判断请求的路径是否有相对应的解决处理方法
    if (typeof handle[pathname] === 'function') {

        //有则执行
        handle[pathname](response, postData);

    } else {
        console.log("Error");
        //没有
        response.writeHead(404, {"Content-Type": "text/plain"});
        response.write("404 Not found");
        response.end();
    }
}

//创建本js的模块route方法 为 route方法
exports.route = route;


requestHandlers


//获取 querystring 模块
//可以用querystring模块来解析POST请求体中的参数
var querystring = require("querystring");

//请求处理方法 start
function start(response) {
    console.log("Request handler 'start' was called.");

    var body = '' +
        '' +
        '' +
        '<form>' +
        '<textarea name="text" rows="20" cols="60"></textarea>' +        '<input type="submit" value="Submit text" />' +        '</form>' +        '' +        '';    response.writeHead(200, {"Content-Type": "text/html"});    response.write(body);    response.end();}//请求处理方法 uploadfunction upload(response, postData) {    console.log("Request handler 'upload' was called.");    response.writeHead(200, {"Content-Type": "text/plain"});    //获取name=text的值 querystring.parse(postData).text    response.write(querystring.parse(postData).text);    response.end();//响应结束}//创建本js的模块start方法 为 start方法exports.start = start;//创建本js的模块upload方法 为 upload方法exports.upload = upload;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值