1.http 请求

//调用Node.js自带的http模块
var http = require("http");

//调用http模块提供的函数createServer
http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("nodejs test");
    response.end();
}).listen(3000);
//监听3000端口

这个是上篇文章,提供的一个实例.

1.它和asp.net 或者php不一样.需要一个宿主,比如iis,才能 呈现到浏览器

.Node.js 是直接把内容呈现到浏览器.

2.首先,它还可以这样写

//调用Node.js自带的http模块
var http = require("http");

//调用http模块提供的函数createServer
http.createServer(onRequest).listen(3000);
//监听3000端口

function onRequest (request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("nodejs test");
    response.end();
}
createServer()把onRequest当做方法传入参数中.这样写也是完全正确的,类似匿名函数3. 我们给莫个方法传递了一个函数,这个方法在有相对应的事件发生的时候,调用这个函数进行回调.onRequest就是回调函数Node.js是属于事件驱动.属于异步比如
var http = require("http");
http.createServer(onRequest).listen(3000);
function onRequest (request, response) {
    console.log("有访问.");
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("nodejs test");
    response.end();
}
console.log("服务开启.");

执行顺序应该是,下面的先输出.然后你刷新页面,请求onRequest方法.再输出上面的 ,看图

参数,
//当函数触发的时候,这2个参数,就是一个是请求,一个是相应请求.
//跟.net里面的request.和response 性质一样,下面只是用了response输出,
http.createServer(function(request, response) {

模块

var http = require("http");

Node.js 把http封装起来.变成一个模块

现在新建一个index的js.把刚才代码复制进去.

now.index.js内容如下

var http = require("http");

 function index(){
http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("nodejs ddtest");
    response.end();
}).listen(3000);
 }
exports.start =index;

exports.start  就是,把这个index的方法暴漏出去.

然后我们在原来的js里面 这样调用

   var index= require("./index");
   index.start();

这个跟调用Node.js 的http模块一致.

刷新下浏览器.工作正常.

如何来获得请求的“路由”

1.进行扩充下这个代码,引入url模块
var http = require("http");
var url = require("url");

function index(route){
        http.createServer(function(request, response) {
        var pathname=url.parse(request.url).pathname;
        console.log(pathname +"访问");
        response.writeHead(200, {"Content-Type": "text/plain"});
        response.write("nodejs test");
        response.end();
    }).listen(3000);
     console.log("服务开启");
 }
exports.start =index;

浏览器. http://localhost:3000/abc

就会打印出

/abc访问

这个是一个简单的获取url路由的简单demo

扩展路由.

在JavaScript中,对象就是一个键/值对的集合 -- 你可以把JavaScript的对象想象成一个键为字符串类型的字典。

新建一个requestHandlers的模块.

然后这里面有各个路由执行的方法

比如

function start() {
    console.log("start");
}
function upload() {
    console.log("upload");
}
exports.start = start;
exports.upload = upload;

然后引用它,

var requestHandler = require("./requestHandlers")

//  你可以把JavaScript的对象想象成一个键为字符串类型的字典。
   var handle={}
   handle["/"] = requestHandler.start;
   handle["/start"]=requestHandler.start;
   handle["/upload"]=requestHandler.upload;

router 更改为

function route(handle,pathname)
{
    console.log(pathname+"router 访问");

    if(typeof handle[pathname]=="function")
    {
        handle[pathname]();
    } else
    {
      console.log("no request handler found for" +pathname);
    }
}

exports.router = route;

这样的话.执行/upload.就到requesthandler里面方法了.

我写不下去了..还是看原文吧..

参考:http://www.nodebeginner.org/index-zh-cn.html


]]>

Node.js 入门(2)的更多相关文章

  1. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  2. 【特别推荐】Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  3. 让我们一起学习《Node.js入门》一书吧!

    Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...

  4. Node.js入门实例程序

    在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...

  5. Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  6. Node.js 入门资料

    小毛驴的阿凡提的 Node.js 入门笔记 http://www.cnblogs.com/Afanty/category/1007304.html

  7. Node.js 入门 资源

    Node.js 入门 <快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm ...

  8. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  9. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  10. 极简 Node.js 入门 - 1.2 模块系统

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

随机推荐

  1. ECLIPSE里面SVN图标消失,文件状态不显示问题

    ECLIPSE里面SVN状态图标消失,重新启动eclipse,重新导入工程也不能显示SVN状态图标.这多半是由于之前eclipse没有正常关闭引起的. 解决办法2个: 方法一:1. 在Window&g ...

  2. Web日程管理FullCalendar

    fullcalendar是一款jQuery日程管理控件,提供了丰富的属性设置和方法调用,官网下载地址http://fullcalendar.io/download,眼下最新版本号是2.3.2. 仅仅要 ...

  3. Enterprise Architect使用教程

    一.Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engine ...

  4. sizeof操作符-结构体与类大小

    导读 sizeof是C/C++一个难点,当在自定义类上应用sizeof操作符时,总会出现意想不到的结果,下面,我们就来探讨一下sizeof这个操作符! 目录 1. sizeof与strlen的区别 2 ...

  5. redis 记录

    参考 :  http://keenwon.com/1275.html http://blog.csdn.net/freebird_lb/article/details/7733970 http://w ...

  6. Memento 备忘录 快照模式

    简介 定义: 在不破坏封装的前提下,捕获一个对象的[内部状态],并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态. 角色: 发起人Originator:要被备份的成员,它提供一创 ...

  7. Android开发--WIFI实现

    wifi的基本结构 在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLING  WIFI网卡正在关闭  0 WIFI_STATE_DISABLED   WIFI网卡不 ...

  8. CSS入门学习(转)

    一.基础学习 1.何为CSS CSS是Cascading Style Sheets(层叠样式表)的简称,是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语 言). CSS文件也可以 ...

  9. php5.2通过saprfc扩展远程连接sap730成功案例

    公司刚上sap系统,由于资金有限,sap与其它系统的数据交换需要公司内部实现.于是,领导决定入库申请流程需要在sap与OA系统里实现电子签核流,重担果然落到我的身上.好在我只负责OA,还一位同事负责s ...

  10. Android Studio中关于Project与Module

    在Android Studio中一个Project和Eclipse中的WorkSpace是相似的,而一个Module与Eclipse中的Project是相似的(大致可以这么的认为) 若在Android ...