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. ArrayList、LinkedList、HashMap底层实现

    ArrayList 底层的实现就是一个数组(固定大小),当数组长度不够用的时候就会重新开辟一个新的数组,然后将原来的数据拷贝到新的数组内. LinkedList 底层是一个链表,是由java实现的一个 ...

  2. 分布式锁 基于Redis

    分布式锁的实现(基于Redis) 参考:http://www.jb51.net/article/75439.htm http://www.linuxidc.com/Linux/2015-01/1118 ...

  3. ionic之应用首次启动引导页

    用户首次启动app先进入引导页,localstroge记录状态,下次启动应用不再显示引导页. HTML: <html> <head> <meta charset=&quo ...

  4. 关于Form窗体的StartPosition 属性如何设置的问题

    1.让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDef ...

  5. 卸载Symantec Endpoint Protection, 无需password的卸载方法

    近期一次偶然的机会, 被人装了个Symantec在电脑上, 搞得各种报警, 验证, 烦死. 然后就自然而然的想卸载掉这个该死的杀毒软件, 没想到这个杀毒软件竟然还是个流氓杀毒软件, 卸载还须要pass ...

  6. 第三篇:R语言数据可视化之条形图

    条形图简介 数据可视化中,最常用的图非条形图莫属,它主要用来展示不同分类(横轴)下某个数值型变量(纵轴)的取值.其中有两点要重点注意: 1. 条形图横轴上的数据是离散而非连续的.比如想展示两商品的价格 ...

  7. iOS开发UI篇-懒加载、重写setter方法赋值

    一.懒加载 1.懒加载定义 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再 ...

  8. js页面加载事件

    <body onload="myfunction()" > </body> <script type="text/javascript&qu ...

  9. JavaScript--DOM增删改操作

    JavaScript使用DOM操作节点来进行增删改操作 <!DOCTYPE html> <html> <head> <meta charset="U ...

  10. Electron

    跨平台桌面app开发 Appjs hex nwjs electron 官网:http://electron.atom.io/ 中文文档:https://github.com/atom/electron ...