node.js学习(1)——http模块

前言

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。09年发布,虽然其在后端比较多,但前端的webpack、gulp等框架都是采用node.js为平台进行搭建的,以及我们常使用的npm包管理工具——是全球最大的开源库生态系统。所以身为一名前端,怎能不需要学习node.js。本系列文章学习有两个目的。其一是学习后端知识。其二是了解基于node的前端框架的相关知识。

node还有很多和后台服务器等相关的好处,本人具体目前不了解。所以学习永无止境,等学完理解了再进行总结。

废话不多说,开始。

1.hello node.js

创建一个hello.js文件,里面输入一句简单的代码:

console.log('hello node.js')

通过命令行找到该文件所在的目录,再命令行中输入

node hello.js

可以看见命令行中会输出 hello node.js

这是最简单的node程序。不需要任何依赖,了解了怎么执行node,下面就开始系统的nodejs学习。

2.创建服务器

我们可以通过node自带的http模块创建服务器。

node.js学习(1)——http模块_第1张图片
Jietu20180915-101129.jpg

上图是文件目录,我们在http.js下增加下面代码。

const http=require('http');
const server=http.createServer(function(){
    console.log('有人来了')
})

// 监听
server.listen(8080);
  1. 我们使用require导入http模块,通过createServer创建一个服务器,参数为回调函数,每当有人访问(即有请求),回调函数就会执行。访问一次,执行一次。

  2. 创建的服务器需要添加端口以提供监听。这样所有来自前台的请求都会被服务器所接收。

  3. 测试请求,在命令行中执行http.js文件。在浏览器地址栏输入localhost:+端口即可看见返回的内容,这里会打印出 有人来了。但是页面没有任何东西,因为服务器没有返回任何东西。

3.response与request

上面操作我们发现页面并没有返回出任何东西,因为服务器并没有返回任何东西。
我们更改代码如下

const http = require('http');
const server = http.createServer(function (req, res) {
    //发送HTTP头部;HTTP状态值:200:OK;内容类型:text/plain;charset=utf-8
    res.writeHead(200, {
        'Content-Type': 'text/plain;charset=utf-8'
    });
    res.write('服务器返回的信息');
    res.end();
})

// 监听
server.listen(8080);
  1. 默认服务器的回调函数有两个参数,一般为了方便可以简写 req,res
    request:请求, 输入(接收)——被请求的信息
    response:响应, 输出——输出的信息

  2. res.write(‘信息’) :向前台输出(写入)内容。这里必须为字符串。数值型等形式不可以。
    res.end():告诉前台输出完毕,如果不添加这句话,在浏览器输入地址测试,会一直转圈,前台一直在请求,不知道什么时候结束请求。页面不会有任何返回内容。

  3. 测试上面内容,发现可以在页面上看见 输出的内容 服务器返回的信息,但有个问题,不管路径是什么样子的都会返回同样的内容,比如/test1.html ,或者test2.html等。
    因为浏览器此时不知道请求的具体信息。所以就牵扯到req了。

4.上面代码中有段writeHead是防止页面上中文乱码。具体什么意思后面会讲到。

4.req

我们打印一下req,可以看见非常长的内容,我这里只截了一点。

node.js学习(1)——http模块_第2张图片
Jietu20180915-110403.jpg

本节我们只需要学习req.url

我们更改代码如下:

const http = require('http');
const server = http.createServer(function (req, res) {
    //发送HTTP头部;HTTP状态值:200:OK;内容类型:text/plain;charset=utf-8,这样网页上中文就不会乱码。
    res.writeHead(200, {
        'Content-Type': 'text/plain;charset=utf-8'
    });
    //假如访问的是localhost://test1.html,则输出/test1.html (若用谷歌浏览器打开会多一个/favicon.ico,其他浏览器不会,这个是浏览器自己加的,不用在意。)
    console.log(req.url)

    switch(req.url){
        case '/test1.html':
            res.write('1');
            break;
        default:
            res.write('404')
            break;
    }
    res.end();
})

// 监听
server.listen(8080);

这样当我们访问test1.html,会输出1,访问其他则会输出404。

下一篇-node.js学习(2)— fs文件模块

你可能感兴趣的:(node.js学习(1)——http模块)