node学习笔记(一)

来源:互联网 发布:windows pagefile.sys 编辑:程序博客网 时间:2024/06/01 08:26

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

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

上周开始正式接触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("服务器已开启")});

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

原创粉丝点击