logo头像
Snippet 博客主题

node创建HTTP服务器

创建http服务器是我们学习node创建一个工程的第一步,那么对于初学者来说,是哪些代码能实现这样的功能,下面介绍3种方式:

申明:建议按照顺序执行操作,后面会省略前面已经执行的命令

node的http模块创建HTTP服务器

前提条件:
假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。

  • $ mkdir mydemo
  • $ cd mydemo
  • $ npm init -y
mkdir是新建文件夹,cd是进入目录,npm init初始化一个package.json文件,-y是省去命名窗口选择或者输入,直接默认生成package.json文件。

新建app.js文件,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var http = require('http');
var app = http.createServer(cb); //http.createServer()创建了一个应用的实例,cb是回调函数。
app.listen(3000,callback) //监听3000端口

function cb(req,res){ //req是request请求头,res是response请求返回结果
res.writeHead(200,{'Content-Type':'text/html'}); //Content-Type标头告诉客户端实际返回的内容的内容类型为html
res.write('<head><meta charset="utf-8"/></head>');
res.write('<h1>Nodejs</h1>');
res.write('<p>第一个Nodejs,demo</p>');
res.end(); //服务端没有数据传回客户端就可以直接用red.end返回,如果有数据可以使用res.send,res.json此时可以不写res.end,因为在前面两个方法中默认会返回
}
function callback(){
console.log('HTTP server is success,http://127.0.0.1:3000进行访问')
}
  • 执行node app.js
  • 浏览器访问http://127.0.0.1:3000

这里如果更改代码,是需要重启服务的,要想监测文件变化,可以使用npm安装supervisor:

  • $ sudo npm install -g supervisor
  • supervisor app.js
sudo是mac可能解决mac全局安装没有权限问题,当使用node app.js运行程序时,修改代码后刷新浏览器里没有变更,但使用supervisor app.js后,supervisor可以监听代码的变化,自动重启node服务,刷新浏览器即可查看最新。

Express框架实现

前提条件:

  • $ npm install express –save

在mydemo文件夹中新建app1.js文件,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var express = require('express'); //引入express模块
var app = express();
app.get('/',cb) //浏览器访问根目录执行回调函数
app.listen(3001,callback)

function cb (req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<head><meta charset="utf-8"/></head>');
res.write('<h1>Nodejs</h1>');
res.write('<p>第一个Nodejs,demo</p>');
res.end();
}
function callback(){
console.log('HTTP server is success,http://127.0.0.1:3001进行访问')
}
  • 执行supervisor app1.js
  • 浏览器访问http://127.0.0.1:3001

##koa2框架实现

前提条件:
node版本 v7.6.0或更高(可使用node版本管理,比如nvm,n)

  • $ npm install koa –save

在mydemo文件夹中新建app2.js文件,内容为:

1
2
3
4
5
6
7
8
var Koa = require('koa');
var app = new Koa();
app.use(async ctx => { //async是异步,这里需要对es6有一定的了解,ctx是上下文(Context),Koa Context将node的 request和response 对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。
ctx.body = '<h1>Nodejs</h1><p>第一个Nodejs,demo</p>';
})
app.listen(3002, ()=>{ //Koa应用程序被绑定到3002端口,同一个应用程序同时作为多个地址,详情看koa2官网
console.log('HTTP server is success,http://127.0.0.1:3002进行访问')
})

koa2中支持为啥要7.6.0以上版本,因为koa2,async,await的方法支持.


框架还有很多:

微信打赏

赞赏就是肯定