`

node http部分(一)

阅读更多

学习node.js 有比较长的时候了,但没有实践过,现在从简单的知识点复习。

第一步:创建package.json 项目依赖文件

 

node.js不要被名字迷惑,他不是 javascript,但与js有很大的关联,语法基本一样。

 

使用http 就会用到http模块,看下面代码

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200);
    res.end('hello world!');

}).listen(3000);
console.log("服务启动:3000")

 打开浏览器输入 http://localhost:3000/

如果能在页面中看到 hello world!说明正常启动了。

 

在node.js需要明确定义头信息。(前端或许不太关注头信息,但后端人员会很关注头信息的,如果头信息不同传输的内容是不一样的。)上面的例子没有指定头信息,就会是一个普通的文本(text/plain)文件,不会做为html文件渲染,

 

如果是html需要指定头信息看下面代码:

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200,{'content-type':'text/html'});
    res.end('hello world!');

}).listen(3000);
console.log("服务启动:3000")

 

要想看到html标签的内容很简单,就是在字符中加入html标签就可以了。

 

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200,{'content-type':'text/html'});
    res.end('hello world!');

}).listen(3000);
console.log("服务启动:3000")

 其实上面的代码比较简单,node.js可以自己搭建一个http的服务器,不需要第三方的。

简单的代码中也需要注意:createServer(function(req,res){}) 这个函数中通过高阶函数把参数req,res加入到代码中,req,res是什么呢?

 

什么是高阶函数呢?

高阶函数(Higher Order Function)作为函数式编程众多风格中的一项显著特征,经常被使用着。按照维基百科上面的定义,高阶函数是至少满足下列一个条件的函数:

  • 接受函数作为输入
  • 输出一个函数

这两个req,res什么时候定义的呢? 肯定是在定义createServer的时候已经定义了这个两个函数了,特别注意的是node.js是javascript的特性,所以不需要申明变量的类型,所以这个req,res看不出类型。

看看下面的小例子

function a(){



}
a.pr = function(){
  alert('a');
}


function b(fun){

  var bb = a;
  
  fun.call(null,bb);

}


b(function(c){
    c.pr();
});

 

函数b()把函数作为参数,在b()函数体内通过call调用,call调用的时候就可以指定参数。

 

http协议构建在请求和响应的概念上,对应在Node.js中就是http.ServerRequest和http.serverResponse这两个构造器构造出来的对象,而http.ServerRequest是IncomingMessage的实例。

所以查看Node.js帮助文档的时候实际上查看的是IncomingMessage->http.IncomingMessage和http.serverResponse

 

明白了这一点就能明白为什么会出现下面这种req.url(查看http.IncomingMessage的帮助就知道有这个属性)

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200,{'content-type':'text/html'});


    if(req.url == '/'){
        res.write('home');
    }

    if(req.url == '/savepage'){
        res.write('savepage')
    }

    res.end();



}).listen(3000);
console.log("服务启动:3000")

 

 启动服务后有两个地址可以访问 一个是/ 首页,另一个是/savepage

 

看一个简单的表单程序

 

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200,{'content-type':'text/html'});


    if(req.url == '/'){
        res.write('<meta charset="UTF-8">');
        res.end('<a href="/reg">注册</a>');
    }

    if(req.url == '/reg' ){
        res.end(['<!doctype html>',
                   '<meta charset="UTF-8"/>',
                   '<h1>用户注册</h1>',
                    '<form method="POST" action="/url">',
                    '<label>用户名:</label><input type="text" name="name"/>',
                    '<label>密码:</label><input type="password" name="password"/>',
                    ' <input type="submit" value="提交"/>  </form>'
        ].join(''));
    }


    if(req.url == '/url' && req.method == 'POST'){
       var body = '';

        req.on('data',function(chunk){
                body += chunk;

        });
        req.on('end',function(){
            res.write(['<!doctype html>',
                '<meta charset="UTF-8"/>',
                '<h1>注册信息是</h1>'].join(''));
            res.end(body);
        });
    }




}).listen(3000);
console.log("服务启动:3000")

 

 

分享到:
评论

相关推荐

    Node.js(node-v16.15.1-win-x86.zip)

    Node.js(node-v16.15.1-win-x86.zip)长期版本,适用于Windows...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-win-x64.zip)

    Node.js(node-v16.15.1-win-x64.zip)长期版本,适用于Windows...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1.pkg)

    Node.js(node-v16.15.1.pkg)长期版本,适用于macOS x64/Arm64...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1.tar.gz 源码)

    Node.js(node-v16.15.1.tar.gz 源码)长期版本。...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-x64.msi)

    Node.js(node-v16.15.1-x64.msi)长期版本,适用于Windows x64...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-linux-s390x.tar.xz)

    Node.js(node-v16.15.1-linux-s390x.tar.xz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-linux-arm64.tar.xz)

    Node.js(node-v16.15.1-linux-arm64.tar.xz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-linux-x64.tar.xz)

    Node.js(node-v16.15.1-linux-x64.tar.xz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-linux-armv7l.tar.xz)

    Node.js(node-v16.15.1-linux-armv7l.tar.xz)长期版本,适用...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-x86.msi)

    Node.js(node-v16.15.1-x86.msi)长期版本,适用于Windows 32...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-darwin-arm64.tar.gz)

    Node.js(node-v16.15.1-darwin-arm64.tar.gz)长期版本,适用...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    Node.js(node-v16.15.1-linux-ppc64le.tar.xz)

    Node.js(node-v16.15.1-linux-ppc64le.tar.xz)长期版本,适用...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    node-v5.1.0-x64

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js...Node为创建http服务器作了优化,所以你在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。

    node.js 权威指南

    第一部分(第16章)讲解了两个综合案例,如何结合使用Node.js与Socket.IO类库制作一个聊天室应用程序的服务器端及客户端,以及如何结合使用Node.js与Express框架制作一个Web应用程序的服务器端及客户端。 第二部分...

    Node.js 实战

    , 本书中的实例涵盖了Node.js开发的各个部分,大到项目架构创建、小到每一次I/O操作,在本书中都有详细的介绍。请阅读本书,将你的想法运行在你的Node进程上。, ——袁锋(@Python发烧友)某网数据产品部资深Web开发...

    node.js插件工具

    以下部分我们将介绍在Ubuntu Linux下安装 Node.js 。 其他的Linux系统,如Centos等类似如下安装步骤。 在 Github 上获取 Node.js 源码: install-node-msi-version-on-linux-step1 install-node-msi-version-on-...

    Node.js(node-v16.15.1-aix-ppc64.tar.gz)

    Node.js(node-v16.15.1-aix-ppc64.tar.gz)长期版本,适用于...Node.js 包含一个用于文件、套接字和 HTTP 通信的内置异步 I/O 库。HTTP 和套接字支持允许 Node.js 充当 Web 服务器,而无需额外的软件,例如 Apache。

    基于Node.js的Python脚本调用方法

    特别是在前后端分离逐渐成为业界主流的今天,Node.js更是作为整个技术栈的核心部分而存在。然而,受Node.js的自身局限,在后端业务涉及到自然语言处理等人工智能相关领域时,远不如Python语言便捷、高效。提出了一种基于...

    Node应用程序构建—使用MongoDB和Backbone.pdf

    第一部分包括第1到4章,概述了Node.js、MongoDB和Backbone.js的核心技术。第二部分包括第5章到第10章,介绍如何使用这些工具去构建一个具有社交网络风格的网站。如果是刚开始学习,建议先从第一部分获取一些背景知识...

    Node应用程序构建—使用MongoDB和Backbone+源码

    第一部分包括第1到4章,概述了Node.js、MongoDB和Backbone.js的核心技术。第二部分包括第5章到第10章,介绍如何使用这些工具去构建一个具有社交网络风格的网站。如果是刚开始学习,建议先从第一部分获取一些背景知识...

Global site tag (gtag.js) - Google Analytics