博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js web应用基本框架
阅读量:2430 次
发布时间:2019-05-10

本文共 3174 字,大约阅读时间需要 10 分钟。

直入主题,我们的目的就是在node.js的基础上搭建一个简单的web应用,能够根据不同的请求做出不同的反应,为了达到目的我们至少需要这些功能

1、有一个server能接受用户的请求

2、有一个路由router能够根据用户的不同请求做不同的响应

3、有一些handle能对用户的request做分析并把结果返回给用户,同时这些handle能被router调用

达到上面的要求我们需要这么几个文件

1、index.js,作为入口文件

2、server.js,作为服务器server

3、router.js,作为路由器

4、handler.js,作为实际的动作处理

下面一一分析各个文件

index.js

var server=require('./server');var router=require('./router');var handlers=require('./handler');//引入server,router,handlers模块var handle={};handle['/']=handlers.index;handle['/index']=handlers.index;handle['/postform']=handlers.postform;handle['/postaction']=handlers.postaction;//把handlers 和url做对应,并存储在handle对象中server.start(router.route,handle);//通过依赖注入的方式把router和handle传入server
server.js

var http=require('http');var url=require('url');
function start(route,handle){    var host='localhost';    var port='1337';    function onRequest(request,response){        var postData='';        route(request,response,postData,handle);    }    http.createServer(onRequest).listen(port,host);//创建服务并调用route    console.log('Server Listen At Http://'+host+':'+port+'/');}exports.start=start;
router.js

var url=require('url');function route(request,response,postData,handle){    var path=url.parse(request.url).pathname;    if(typeof handle[path]=='function'){        handle[path](request,response);//路由分发并调用handle处理请求    }    else{        response.writeHead(404,{'Content-Type':'text/html'});        response.write('your request is not exist!!!');        response.end();    }}exports.route=route;
handler.js

/** * Created with JetBrains WebStorm. * User: lehui * Date: 13-1-9 * Time: 下午12:12 * To change this template use File | Settings | File Templates. */var url=require('url');var exec=require('child_process').exec;var querystring=require('querystring');/**********************站点首页******************************/function index(request,response){    response.writeHead(200,{'Content-Type':'text/html'});    var body=''+        ''+        '
'+ ''+ ''+ '
'+ ''+ ''; response.write(body); response.end();}/***************************post数据传输测试**************************************/function postForm(request,response){ response.writeHead(200,{'Content-Type':'text/html'}); var body = ''+ ''+ '
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ ''+ ''; var path=url.parse(request.url).pathname; response.write(body); response.end();}function postAction(request,response){ var formidable=require('formidable'); var form=new formidable.IncomingForm();//这里借用了第三方模块formidable来对post数据进行处理,这个模块还能处理文件上传 form.parse(request,function(error,fields,files){ if(!error){ response.writeHead(200,{'Content-Type':'text/html'}); response.write(JSON.stringify(fields)); response.end(); } });}exports.index=index;exports.postform=postForm;exports.postaction=postAction;

至此一个简单的web应用就创建完成,我们只要用node index.js启动服务就ok了,然后在端口1337请求服务就能看到对应的网页:http://localhost:1337/

转载地址:http://dysmb.baihongyu.com/

你可能感兴趣的文章
设计模式13_享元模式
查看>>
设计模式14_组合结构
查看>>
设计模式15_模板
查看>>
海龟交易法则01_玩风险的交易者
查看>>
CTA策略02_boll
查看>>
vnpy通过jqdatasdk初始化实时数据及历史数据下载
查看>>
设计模式19_状态
查看>>
设计模式20_观察者
查看>>
vnpy学习10_常见坑02
查看>>
用时三个月,终于把所有的Python库全部整理了!拿去别客气!
查看>>
pd.stats.ols.MovingOLS以及替代
查看>>
vnpy学习11_增加测试评估指标
查看>>
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>