MEAN-JavaScript全栈学习

学习Node.js全栈框架MEAN-03-第一个Web服务

2016-12-27  本文已影响43人  2MuchT

使用Node建立一个Web服务

新建一个 server.js文件,输入一下代码:

var http = require('http');
http.createServer(function (req,res) {  
  //回调函数当浏览器发出HTTP请求是被调用
  //response头,如果是html的话用 html/plain
   res.writeHead(200,{'Content-Type' :'text/plain'  });   
   res.write('Hello suck world');
  //结束
  res.end();
}).listen(3000);//监听3000端口

浏览器输入http://localhost:3000 会显示 hello world。

Connect 模块

Connect模块可以更好的支持服务端与客户端的HTTP请求交互。

dispatcher

npm导入Connect模块后,写一个Connect sever:

var connect = require('connect');
var app = connect();
app.listen(3000);
console.log('Server is running at http://localhost:3000');

运行,浏览器会显示 Cannot GET/,因为没有middlewre处理GET HTTP请求。

Connect middleware

middleware其实就是个有唯一签名的function
定义一个middleware需要包含三个参数:

var connect = require('connect');var app = connect();
var helloWorld = function (req,res,next) {   
  res.setHeader('Content-Type','text/plain');    
  res.end('Hello World');
};
  app.use(helloWorld);
  app.listen(3000);
  console.log('Server is running at http://localhost:3000');```

Connect 可以注册无数个middleware,而这些middleware 可以通过next相互连接。
Connect执行middleware的顺序是先进先出FIFO,直到没有middleware可以执行或者有一个middleware没有这行next()方法。

var connect = require('connect');
var app = connect();

var logger = function (req,res,next) {
console.log(req.method,req.url);
next();
}

var helloWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Hello World');
};
app.use(logger);
app.use(helloWorld);

app.listen(3000);

console.log('Server is running at http://localhost:3000');


### Mounting Connect middleware - 装配

Mounting这个功能可以使Connect根据不同的请求path作出不同的相应(类似路由)
具体方法是:在app.user( )方法加上路径参数

var connect = require('connect');
var app = connect();

var logger = function (req,res,next) {
console.log(req.method,req.url);
next();//表示继续执行下一个md
}
var helloWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Hello World');
//没有next()不用连接其他md
};
var goodbyeWorld = function (req,res,next) {
res.setHeader('Content-Type','text/plain');
res.end('Goodbye World');
//没有next()不用连接其他md
}

app.use(logger);
app.use('/hello',helloWorld);//设置路径参数
app.use('/goodbye',goodbyeWorld);//设置路径参数
app.listen(3000);
console.log('Server is running at http://localhost:3000');

以上代码浏览器测试:
* http://localhost:3000/hello 输出HelloWorld
* http://localhost:3000/goodbye 输出Goodbye World

#### 总结
Connect 提供了更时髦的web服务端特性的支持,但是还是不很完善。在社区广大开发者,特别是TJ Holowaychuk的共同努力下,出现了更完善的Web开发框架包Express,Express是基于Connect的。
上一篇 下一篇

猜你喜欢

热点阅读