node学习笔记(一)

前端爱好者从今天开始博客写学习笔记,

发现错误希望大家给予纠正,非常感谢!

上周开始正式接触node.js,以前对node的了解只知道它是一个环境,一个可以支持js脚本的运行环境,用来写后台服务器。
在node.js中文网有这样写到:
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

阅读并简单理解文档之后,手写代码(先逐行解析,后面附完整代码)
const http = require("http");
//定义http为node中给我们封装好的http模块,(node底层是用c++写的),个人理解当我们需要某个功能时都需要引入相应的模块。
const fs = require("fs");
//引入文件系统模块
const url = require("url");
//引入url操作模块
let sever = http.createServer(function(req,res){
//创建一个server对象,回调中的参数分别又是两个回调:接受请求的事件发生和响应请求的事件发生
    let pathname = url.parse(req.url).pathname;//得到请求url
    let query = url.parse(req.url,true).query;//得到请求的查询参数
    console.log(pathname)
    //这里得到的结果是/  和  /favicon.ico,默认请求两次,一次根目录,一次小图标icon
    if(pathname === "/"){
        fs.readFile("./login.html",function (error,data) {
            if(!error){
            //回调中两个参数,error表示错误发生,data表示文件响应时返回的数据
                res.writeHead(200,{"content-type":"text/html"});
                //报头属性,头文件,当状态码为200(请求成功时)规定了请求HTTP报文和响应HTTP报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。

>那么,到底什么是报头呢?
> 快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要1230之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。
> 这里,你要[鱼香肉丝]相当于HTTP报文体,而“1230之前送过来”,你叫“张三丰”等信息就相当于HTTP的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。

                res.end(data);
                //结束响应,必须写相当于:
                "res.write(data)
                 res.end;"
            }else {
                res.end("" + error);
            }
        })
        //以下为扩展:最简单的登录验证应用
    }else if(pathname === "/from"){
        if(query.user === "tom" && query.pwd === "tom"){
            res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
            res.end("登陆成功");
        }else{
            res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
            res.end("登录失败");
        }
        console.log(query);
    }
})
sever.listen(8000,"127.0.0.1",function () {
    console.log("服务器已开启")
});
//监听本地站点的8000端口,并且在后台打印“服务器已开启”
以下为扩展内容HTML代码(get简单登录验证)
<form action="http://127.0.0.1:8000/from" method="get">
    <input type="password" name="pwd">
    <input id="login" type="text" name="user">
    <input id="submit" type="submit">
</form>
<!--注:提交数据到后台用到的是name属性-->

完整代码

const http = require("http");
const fs = require("fs");
const url = require("url");
let sever = http.createServer(function (req,res) {
    let pathname = url.parse(req.url).pathname;
    let query = url.parse(req.url,true).query;
    if(pathname === "/"){
        console.log(pathname)
        fs.readFile("./login.html",function (error,data) {
            if(!error){
                res.writeHead(200,{"content-type":"text/html"});
                res.end(data);
            }else {
                res.end("" + error);
            }
        })
    }else if(pathname === "/from"){
        if(query.user === "tom" && query.pwd === "tom"){
            res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
            res.end("登陆成功");
        }else{
            res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
            res.end("登录失败");
        }
        console.log(query);
    }
});
sever.listen(8000,"127.0.0.1",function () {
    console.log("服务器已开启")
});

今天的学习笔记就到这里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值