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连接远程hadoop集群开发时0700问题解决方案

    eclipse连接远程hadoop集群开发时报错 错误信息: Exception in thread "main" java.io.IOException:Failed to se ...

  2. Windows下svn客户端和服务器的安装使用

    svn,全称subversion, 是目前用的较多的开源的版本管理工具.相信有些经历的程序员应该都听说过它. 通常的svn服务器是搭建在Linux中,不过如果作为个人或者单个小组使用的话,就可以把sv ...

  3. oracle参数优化

    关闭OEM,使用oracle用户登录,执行命令: emctl status dbconsole emctl stop dbconsole 以下命令推荐用sys用户登录PLSQL Developer,使 ...

  4. UIScrollView控件详解

    一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 (2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可 ...

  5. jquery.scrollTo-min.js

    jquery.scrollTo-min.js 用户返回顶部及动画到目的地,支持目标值.锚点. 用法: 1.引入jQuery 2.$.scrollTo( this.hash || targetValue ...

  6. TCP/IP之分层

    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比方T C P / I P,是一组不同层次上的多个协议的组合.T C P / I P通常被觉得是一个四层协议系统. 1.每层的 ...

  7. Linux shell入门基础(四)

    四.进程优先级前台后台 01.进程控制 #find /name aaa & #ps aux | grep find #updatedb &  #ps aux | grep update ...

  8. 动态代理 Proxy InvocationHandler

      前奏 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 代理类与委托类之间通常 ...

  9. Vijos P1325桐桐的糖果计划(有向图双连通分量)

    /*重边不能删 不能删 不能删...*/ #include<iostream> #include<cstdio> #include<cstring> #define ...

  10. 转载:C#中事件的由来

    原文地址 http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx 感谢博主分享! 我们继续思考转 ...