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报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。>那么,到底什么是报头呢?> 快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。> 这里,你要[鱼香肉丝]相当于HTTP报文体,而“12:30之前送过来”,你叫“张三丰”等信息就相当于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
- Node学习笔记(一)
- node学习笔记(一)
- node学习笔记(一)
- Node学习笔记(一)
- node学习笔记一
- 学习笔记:Node.js(一)
- Node.js 学习笔记 (一)
- node.js学习笔记(一)
- node.js学习笔记(一)
- node.js学习笔记(一)
- node.js学习笔记(一)
- Node.js学习笔记(一)安装
- Node.js学习笔记(一)—— Node基础
- Node.js学习笔记(一)-认识Node.js
- node 学习(一)
- node.js开发之学习笔记(一)
- Node.js开发实战详解之学习笔记(一)
- node.js框架StrongLoop学习笔记(一)
- IO基本的字节字符
- OpenMP的一点使用经验
- 数值型全讲解
- JMX中MBean实现
- HDOJ 2153 仙人球的残影(水题)
- node学习笔记(一)
- [笔记]kubantu安装pip、tensorflow和keras
- 拥塞控制分析之BIC与CUBIC
- Recycler的适配器和holder
- 提高MD5安全性
- [DesignPattern]StatePattern
- poj 2762
- 命令模式
- 动态链接库dll的 静态加载 与 动态加载