当前位置: 首页 > news >正文

[node] Node.js的Web 模块

[node] Node.js的Web 模块

  • 什么是 Web 服务器?
  • Web的应用架构
  • http
    • 使用方式
    • 使用 Node 创建 Web 服务器
    • 使用 Node 创建 Web 客户端

什么是 Web 服务器?

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

目前最主流的三个Web服务器是Apache、Nginx、IIS。

Web的应用架构

在这里插入图片描述

  • Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据。
  • Server - 服务端,一般指 Web 服务器,可以接收客户端请求,并向客户端发送响应数据。
  • Business - 业务层, 通过 Web 服务器处理应用程序,如与数据库交互,逻辑运算,调用外部程序等。
  • Data - 数据层,一般由数据库组成。

http

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,处理与 web 服务器的交互等相关功能,使用 HTTP 服务器或客户端功能必须调用 http 模块

使用方式

var http = require('http');

使用 Node 创建 Web 服务器

以下是一个最基本的 HTTP 服务器架构(使用 8080 端口)实例:
创建 index.html 文件:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>兼容性提示页面</title>
</head>
<body><h1>兼容性提示</h1>
</body>
</html>

创建 server.js 文件:

var http = require('http');
var fs = require('fs');
var url = require('url');// 创建服务器
http.createServer( function (request, response) {  // 解析请求,包括文件名var pathname = url.parse(request.url).pathname;// 输出请求的文件名console.log("Request for " + pathname + " received.");// 从文件系统中读取请求的文件内容fs.readFile(pathname.substr(1), function (err, data) {if (err) {console.log(err);// HTTP 状态码: 404 : NOT FOUND// Content Type: text/htmlresponse.writeHead(404, {'Content-Type': 'text/html'});}else{             // HTTP 状态码: 200 : OK// Content Type: text/htmlresponse.writeHead(200, {'Content-Type': 'text/html'});    // 响应文件内容response.write(data.toString());        }//  发送响应数据response.end();});   
}).listen(8081);// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8081/');

终端启动服务:

$node main.js
//输出
//Server running at http://127.0.0.1:8081/

浏览器端访问http://127.0.0.1:8081/index.html,打开后是index.html的内容展示,服务器终端会打印Request for /index.html received.,表明接受到了请求

注意,这里index.html文件需要在node执行命令所在的文件夹,否则会报找不到index.html文件错误;如果index.html文件改名为test.html,则访问http://127.0.0.1:8081/test.html可以正常查看,所以对访问文件名没有要求,只要与设置命名一致即可

使用 Node 创建 Web 客户端

创建 client.js 文件:

var http = require('http');
// 用于请求的选项
var options = {host: 'localhost',port: '8081',path: '/index.html'  
};
// 处理响应的回调函数
var callback = function(response){// 不断更新数据var body = '';response.on('data', function(data) {body += data;});response.on('end', function() {// 数据接收完成console.log(body);});
}
// 向服务端发送请求
var req = http.request(options, callback);
req.end();

此时另外打开一个终端执行 node main.js,不要在同一个终端执行,否则服务端会终止,此时终端会打印index.html的内容,也即客户端接收到了服务端的所有数据

相关文章:

  • rar压缩包如何分卷压缩
  • 计算机网络:传输层——多路复用与解复用
  • ACM32F070 RTC 引脚做普通 GPIO 用法配置
  • Centos图形化界面封装OpenStack Centos镜像
  • Django 模型基础(五)
  • 奇迹mu 架设过程中可能会出现的问题及解决办法
  • Excel 数据处理记录
  • LeetCode 1038. 从二叉搜索树到更大和树:(反)中序遍历
  • C语言面试之旅:掌握基础,探索深度(面试实战之c语言关键词中篇)
  • 软件分享--智能照片识别分类软件
  • 【Java进阶】-- 设计模式
  • 572 - Oil Deposits (UVA)
  • Linux下设置redis临时密码和长期密码
  • python用YOLOv8对图片进行分类
  • springboot统一异常处理
  • 【刷算法】求1+2+3+...+n
  • 2019年如何成为全栈工程师?
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Android优雅地处理按钮重复点击
  • ES6系统学习----从Apollo Client看解构赋值
  • MySQL-事务管理(基础)
  • quasar-framework cnodejs社区
  • Vue 动态创建 component
  • Xmanager 远程桌面 CentOS 7
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 浮动相关
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 浅谈web中前端模板引擎的使用
  • 全栈开发——Linux
  • Hibernate主键生成策略及选择
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)ABI是什么
  • (转)创业的注意事项
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NetCore 如何动态路由
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .NET中 MVC 工厂模式浅析
  • /etc/skel 目录作用
  • @property括号内属性讲解
  • @RequestParam详解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @ResponseBody
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [@Controller]4 详解@ModelAttribute
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [android] 看博客学习hashCode()和equals()
  • [Android]使用Retrofit进行网络请求
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [BZOJ] 2427: [HAOI2010]软件安装