Nodejs学习笔记
来源:互联网 发布:家装装修设计软件 编辑:程序博客网 时间:2024/06/05 03:23
模块的流程
创建模块:每个js文件就是一个单独的模块teacher.js
导出模块:exports.add = function(){}
加载模块:var teacher = require(./teacher.js)
使用模块:teacher.add(“nodejs”)
Nodejs API解读
URL
url.parse(urlString[, parseQueryString[, slashesDenoteHost]])url.format(urlObject)//parse的反操作url.resolve(from, to)Escaped Characters
url.parse('http://www.imooc.com/course/list')//不带参数值//执行结果Url { protocol: 'http:', slashes: true, auth: null, host: 'www.imooc.com', port: null, hostname: 'www.imooc.com', hash: null, search: null, query: null, pathname: '/course/list', path: '/course/list', href: 'http://www.imooc.com/course/list' }
url.parse('http://www.imooc.com/course/list?from=scott&course=node#floor1')//不带参数值//执行结果Url { protocol: 'http:', slashes: true, auth: null, host: 'www.imooc.com', port: null, hostname: 'www.imooc.com', hash: '#floor1', search: '?from=scott&course=node',//参数值在此处显示 query: 'from=scott&course=node',//参数值在此处显示 pathname: '/course/list', path: '/course/list?from=scott&course=node', href: 'http://www.imooc.com/course/list?from=scott&course=node#floor1' }
url.parse('http://www.imooc.com/course/list?from=scott&course=node#floor1',true)//多一个参数true,说明参数值会转换为诶对象形式返回 //执行结果Url { protocol: 'http:', slashes: true, auth: null, host: 'www.imooc.com', port: null, hostname: 'www.imooc.com', hash: '#floor1', search: '?from=scott&course=node', query: { from: 'scott', course: 'node' },//参数值转换为对象 pathname: '/course/list', path: '/course/list?from=scott&course=node', href: 'http://www.imooc.com/course/list?from=scott&course=node#floor1' }
url.parse('//www.imooc.com/course/list',true,true)//没有写明协议的情况下,将第三个参数设置为true,仍能正确解析URLUrl { protocol: null, slashes: true, auth: null, host: 'www.imooc.com', port: null, hostname: 'www.imooc.com', hash: null, search: '', query: {}, pathname: '/course/list', path: '/course/list', href: '//www.imooc.com/course/list' }
url.resolve('http://www.imooc.com','/course/list')'http://www.imooc.com/course/list'
Query String
querystring.parse(str[, sep[, eq[, options]]])//将字符串反序列化成对象querystring.stringify(obj[, sep[, eq[, options]]]) //参数对象序列化成参数字符串querystring.escape(str)//转义querystring.unescape(str)//反转义
stringify函数实例
querystring.stringify({name:'scott',course:'jade','node']})//执行结果'name=scott&course=jade&course=node'//第二个参数表示参数之间的连接符 querystring.stringify({name:'scott',course:['jade','node']},',') //执行结果'name=scott,course=jade,course=node'//第三个参数表示查询参数内部的key value之间的连接符querystring.stringify({name:'scott',course:'jade','node']},',',':')//执行结果'name:scott,course:jade,course:node'
parse函数实例
querystring.parse('name=scott&course=jade&course=node'){ name: 'scott', course: [ 'jade', 'node' ] }//第二个参数默认值是以“&”分隔不同的参数,如果由其他符号分隔,需要显式设置第二个参数 querystring.parse('name=scott,course=jade,course=node',','){ name: 'scott', course: [ 'jade', 'node' ] }//第三个参数默认值是以“=”分隔参数内部的key value值,如果由其他符号分隔,需要显式设置第三个参数 querystring.parse('name=scott,course=jade,course=node',',',':'){ name: 'scott', course: [ 'jade', 'node' ] }
escape转义函数和unescape反转义函数
querystring.escape('<哈哈>')//执行结果'%3C%E5%93%88%E5%93%88%3E' querystring.unescape('%3C%E5%93%88%E5%93%88%3E') //执行结果'<哈哈>'
HTTP
http流程
http客户端发起请求,创建端口
http服务器在端口监听客户端请求
http服务器向客户端返回状态和内容
在当我们输入网址回车或刷新页面F5的过程中,计算机和浏览器做了很多事情:
首先,域名解析
- Chrome浏览器搜索自身的DNS缓存
- 查看谷歌浏览器的DNS缓存,在地址栏中输入chrome://net-internals/#dns
- 搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)
- 读取本地的HOST文件 C:\Windows\System32\drivers\etc\host
浏览器发起一个DNS的一个系统调用
- 宽带运营商服务器查看本地缓存
- 运营商服务器发起一个迭代DNS解析的请求
- 运营商服务器把结果返回操作系统内核同时缓存起来
- 操作系统内核把结果返回浏览器
- 最终浏览器拿到网址对应的IP地址
其次,浏览器获得域名对应的ip地址后,发起HTTP“三次握手”。
再次,TCP/IP连接建立后,浏览器就可以向服务器发送http请求。
最后,服务器端接受请求后,经过处理之后,把处理后的一个结果数据返回给浏览器。
HTTP请求 HTTP响应
共同部分,即HTTP头和正文信息
HTTP头发送的是一些附加的信息:内容类型,服务器发送响应的日期、HTTP状态码
未完待续····
0 0
- nodejs 学习笔记--debug
- NodeJS学习笔记
- nodejs学习笔记
- nodeJs学习笔记
- nodejs学习笔记
- NodeJS 学习笔记1
- 学习nodejs笔记一
- 学习nodejs笔记二
- Nodejs Monog 学习笔记
- nodejs学习笔记一
- NodeJS学习笔记
- nodejs学习笔记
- nodejs学习笔记1
- nodejs学习笔记2
- NodeJS学习笔记
- nodejs 学习笔记
- Nodejs学习笔记
- NodeJS 学习笔记
- STL1
- datatables是jQuery的控件,amazeUI沿用了此控件
- python os.path模块
- 锁对象Lock-同步问题更完美的处理方式--ReadWriteLock
- 71.Docker简介及安装方法
- Nodejs学习笔记
- TextView设置指定位置处文字颜色的坑
- python:循环(while、for)
- slf4j记录日志
- ThreadLocal误区
- C++中构造函数和析构函数可以抛出异常吗?
- Android进阶之路
- vi替换字符串
- HA专题--Pacemaker集群日常管理命令