Node.js 入门(2)
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)的更多相关文章
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- 让我们一起学习《Node.js入门》一书吧!
Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...
- Node.js入门实例程序
在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...
- Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js 入门资料
小毛驴的阿凡提的 Node.js 入门笔记 http://www.cnblogs.com/Afanty/category/1007304.html
- Node.js 入门 资源
Node.js 入门 <快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm ...
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- 【bzoj2594】[Wc2006]水管局长数据加强版
真是神题 当时调了几天没调出来 后来没管了 当时把fread去掉就TLE,加上就RE 一直在底下跟网上的程序拍,尝试各种优化常数都没用 拍出几组不一样的,发现我是对的,醉了,网上那个是怎么过的 记一下 ...
- bzoj1036 zjoi2008 树的统计 count
填坑= =第一道裸树剖 #include<cstdio> #include<algorithm> #include<cstring> #include<cst ...
- 关于Form窗体的StartPosition 属性如何设置的问题
1.让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDef ...
- [转] 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcache是使用非常广泛的一个分布式缓存系统.众所周知,LAMP是非常经典的Web架构方式,但是随着Nginx的 成熟,越来越多的系统开始转型为 ...
- iOS 独立开发记录(上)
个月前,完成了个人App的2.0版本,也在普天同庆的六一儿童节这天上架了.因为是个人开发,很多实现都是边探索边做.现在完成之后再回顾,发现自己走了些弯路.所以写了这篇总结,概览了从想法.设计.开发到最 ...
- zoj 3537 Cake(区间dp)
这道题目是经典的凸包的最优三角剖分,不过这个题目给的可能不是凸包,所以要提前判定一下是否为凸包,如果是凸包的话才能继续剖分,dp[i][j]表示已经排好序的凸包上的点i->j上被分割成一个个小三 ...
- Python Socket通信原理
[Python之旅]第五篇(一):Python Socket通信原理 python Socket 通信理论 socket例子 摘要: 只要和网络服务涉及的,就离不开Socket以及Socket编 ...
- 【开源java游戏框架libgdx专题】-14-系统控件-Skin类
Skin类主要用于存储用户界面的资源,该资源主要用于窗口部件.这些资源也包括纹理图片.位图画笔.颜色等内容.方便创建游戏组件,同时使用Skin也可以批量的粗略处理一些窗口部件. test.json { ...
- asp.net学习之DataList控件
asp.net学习之DataList控件 DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...
- HDU5319
题意:给一个矩形染色,顺笔表示红色,逆笔表示蓝色(既一捺和一丿),交叉表示绿色,然后给你一个图,问你用多少笔能画出这个图来. 思路:对这个图直接模拟即可,如果点i,j坐标为红色,那么判断上一个路径点是 ...