资讯专栏INFORMATION COLUMN

node web模块 (服务器端和客户端)

MonoLog / 611人阅读

摘要:模块服务器服务器指网站服务器,指驻留在因特网上的某种程序,浏览器的基本功能,提供信息浏览服务支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返回给客户端浏览器应用基本架构即客户端,通过协议向服务器发起请求服务器端,指服务器,接收

node web模块

web服务器

web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务
web支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返回给客户端浏览器

web应用基本架构
Client => Server => Business => Data
Client 即客户端,通过http协议向服务器发起请求
Server 服务器端,指web服务器,接收客户端请求,并向客户端发送响应的数据
Business 即业务层,通过Web服务器处理应用程序,数据库的交互,逻辑运算,调用外部程序
Data 数据层,储存数据
使用Node创建Web服务器

使用http模块创建

需要使用substr()方法,一个从指定位置返回指定结束的方法,继承自String 最后一个参数可省 https://developer.mozilla.org...
// server.js
// 引入模块
var http = require("http");    // http模块
var fs = require("fs");        // fs 文件模块
var url = require("url");    // url 统一资源定位符模块

// 创建服务器
http.createServer((request, response) => {
    // 解析请求,保存进变量内
    var pathname = url.parse(request.url).pathname;

    // 输出请求的文件名
    console.log(pathname);

    // 从文件系统中读取文件,进行返回
    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法进行读取文件的字节,将文件名返回给回调函数
        if (err){    // 对错误进行处理
            console.log(err);    // 打印出错误
            // 返回一个404
            response.writeHead(404, {"Content-Type": "text/html; charset=utf-8"});
            response.write("呀,什么都没有╮(╯_╰)╭");
            response.write("我猜你要的是 " + data + " ?");
            response.end();
        } else {
            // 返回 200
            response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
            // 返回文件内容
            response.write(data.toString());    // 将读取的文件内容进行字符串化,并进行输出
            response.end();    // 关闭连接,发出数据
        };
    });
}).listen(1937);
// index.html


    
        
        这是一个小Dome
    
    
        

hello word!

访问 http://127.0.0.1:1937/index.html
出现hello word完成!

PS C:UsersmingmDesktop	est> node Server.js
/index.html
/
/input.html
/
{ [Error: ENOENT: no such file or directory, open "C:UsersmingmDesktop	estinput.html"]
  errno: -4058,
  code: "ENOENT",
  syscall: "open",
  path: "C:UsersmingmDesktop	estinput.html" }
改进一点

访问/出现404,说明没有设置首页,设置首页

    // 增加对首页的支持,设置默认首页为index.html
    if (pathname === "/") {
        pathname = pathname + "index.html";
    }

完成后的文件如下

// 引入模块
var http = require("http");    // http模块
var fs = require("fs");        // fs 文件模块
var url = require("url");    // url 统一资源定位符模块

// 创建服务器
http.createServer((request, response) => {
    // 解析请求,保存进变量内
    var pathname = url.parse(request.url).pathname;

    // 输出请求的文件名
    console.log(pathname);

    // 增加对首页的支持,设置默认首页为index.html
    if (pathname === "/") {
        pathname = pathname + "index.html";
    }

    // 从文件系统中读取文件,进行返回
    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法进行读取文件的字节,将文件名返回给回调函数
        if (err){    // 对错误进行处理
            console.log(err);    // 打印出错误
            // 返回一个404
            response.writeHead(404, {"Content-Type": "text/html; charset=utf-8"});
            response.write("呀,什么都没有╮(╯_╰)╭");
            response.write("我猜你要的是 " + data + " ?");
            response.end();
        } else {
            // 返回 200
            response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
            // 返回文件内容
            response.write(data.toString());    // 将读取的文件内容进行字符串化,并进行输出
            response.end();    // 关闭连接,发出数据
        };
    });
}).listen(1937);
使用node创建客户端
PS C:UsersmingmDesktop	est> node get.js

302 Found

302 Found


nginx
PS C:UsersmingmDesktop est>
var http = require("http");

// 请求的选项
var options = {    // 创建一个对象保存相关数据
    host:"www.iming.info",    // 主机地址
    port:"443",    // 访问端口
    method:"GET",
    path:"/",    // 访问的文件
};

// 处理响应的回调函数
var callback = (response) => {
    // 更新数据
    var body = "";
    response.on("data", (data) => {        // 绑定事件,data
        body += data;    
    });

    response.on("end", () => {    // 绑定end事件
        console.log(body);    
    });
};

// 开始发送请求
var req = http.request(options, callback);    // 发送请求,options为发送请求的选项,callback为处理请求的回调函数,将会有抛出三个事件一个data一个end,一个error,必须有end表示请求完毕,关闭连接
req.end();    // 关闭连接

由于小站使用的是nginx的https,使用了证书,需要使用验证秘钥的过程,所以拒绝访问,302没有权限

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96338.html

相关文章

  • FEDAY第二届前端开发者大会回顾

    摘要:使用和构建通用应用演讲者是来自的,他为我们介绍了怎么样用和等技术,建立一个通用应用或者同构应用。开发者可以使用微信的测试号来测试域名没备案也可以测。如何提前运用下一代技术提升性能和安全主讲人是陈子舜。一个常见的前端面试题时代的性能 使用React、Redux和Node.js构建通用应用 演讲者是来自Facebook的Stepan,他为我们介绍了怎么样用Node和React、React-...

    浠ラ箍 评论0 收藏0
  • 初识Node.js

    摘要:一旦替换已经完成,该模块将被完全弃用。用作错误处理事件文件,由在标准功能上的简单包装器提供所有模块都提供这些对象。 Node.js简介 Node 定义 Node.js是一个建立在Chrome v8 引擎上的javascript运行时环境 Node 特点 异步事件驱动 showImg(https://segmentfault.com/img/bVMLD1?w=600&h=237); no...

    lk20150415 评论0 收藏0
  • CAS 5.2.x 单点登录 - 搭建服务端和户端

    摘要:一简介单点登录,简称为,是目前比较流行的企业业务整合的解决方案之一。客户端拦截未认证的用户请求,并重定向至服务端,由服务端对用户身份进行统一认证。三搭建客户端在官方文档中提供了客户端样例,即。 一、简介 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系...

    Lin_YT 评论0 收藏0
  • package.json 中 你还不清楚的 browser,module,main 字段优先级

    摘要:本文就来说下这几个字段的使用场景,以及同时存在这几个字段时,他们之间的优先级。当存在和这种同名不同后缀的文件时,或者是会优先加载文件的。或者优先级是通过直接执行脚本只有字段有效。 browser VS module VS main 前端开发中使用到 npm 包那可算是家常便饭,而使用到 npm 包总免不了接触到 package.json 包配置文件。 那么这里就有...

    caozhijian 评论0 收藏0

发表评论

0条评论

MonoLog

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<