commonjs规范
uri和url的区别
nodejs适用于高并发,i/o密集操作
安装部分
http://nodejs.cn/是nodejs的中文网可以搜索相关的命令
安装的时候可以去官网 https://nodejs.org/ 网站会根据电脑自动匹配相应的版本 点击INSTALL 下载
安装结束后 在 GIT BASH (或者cmd窗口里) 里输入 node -v 查看node版本号 输入 npm -v 查看npm版本号 如果系统给予相应的版本号说明安装成功
若没有 在 计算机-->属性-->高级系统设置-->环境变量-->PATH 中添加 node.js的安装目录 重复之前的命令部分
安装好以后在 项目目录下建立一个server.js的文件
文件内容 (可以在nodejs.org/)的左下角复制 具体代码如下
var http = require(‘http‘); http.createServer(function (req, res) { res.writeHead(200, {‘Content-Type‘: ‘text/plain‘}); res.end(‘Hello EverBody I Love You !!\n‘); }).listen(1337, ‘127.0.0.1‘); console.log(‘Server running at http://127.0.0.1:1337/‘);
代码原理
加载了一个由javascript来编写的 http模块 他的职责是负责创建web服务器及处理http相关的任务
当1337端口发送过来请求的时候 返回一个Hello EverBody I Love You !! 并且在请求头 返回一个状态码200 代表成功
通过createServer来创建一个web服务器 通过listen来监听 1337端口的请求 当监听到1337端口过来的请求以后
nodejs就会调用 回调函数 并传入俩个参数 分别是请求体req 和 响应体res
res 是获取请求的相应信息 比如说从什么地方传过来的 什么方式传过来的
server.js内文件编辑好以后 在GIT(BASH) 中输入 node server.js 返回 Server running at http://127.0.0.1:1337/ 则配置服务器成功
重启nodejs服务器 需要ctrl+c 然后再输入 node server.js 服务器启动成功 否则会出现连接错误 102
命令部分
node -v 查看node版本号
npm -v 查看npm版本号
node server.js 启动服务器
ctrl+c *2 关闭服务器
node 进入node编辑区
process 调取全局变量
require 引用某个模块
module.expors 是真实存在的东西
expors 是module.expors的辅助方法
全局对象(global)
console.log(‘输出‘) 输出
console.log(__dirname) 输出文件的存储的绝对目录
console.log(__filename) 输出的是包含文件名的绝对路径
node中的全局对象
console.log() 输出一条日志
console.info() 输出一条信息
console.error() 输出错误
console.warn() 输出警告
console.time() 统计一段代码的执行时间
console.timeEnd() 传的参数必须与time的一致
console.timeon()
node test.js >test1.txt 将test.js中的普通信息重定向到test1.txt中
node test.js 1>test1.txt 2>test2.txt 将test.js中的普通信息重定向到test1.txt中错误信息重定向到test2.txt中
node test.js 1>test1.txt 2>&1 将普通信息、错误信息都重定向到test1.txt中
process
process.stdout() 标准的信息输出
process.stderr() 标准的错误输出
url部分
url 模块包含用于 URL 解析的实用函数,通过 require(‘url‘) 调用。
url.parse
url.parse(urlStr[, parseQueryString][, slashesDenoteHost])
urlStr - {string}
parseQueryString - {boolean},默认为 false,若设为 true 则会调用 querystring 模块解析查询字符串,并为 query 属性赋值一个对象
slashesDenoteHost - {boolean}, 默认为 false,若设为 true 则会把 //foo/bar 解析为 { host: ‘foo‘, pathname: ‘/bar‘ } 而不是 { pathname: ‘//foo/bar‘ }
返回 {Object}
解析一个 URL 字符串。
url.parse(‘http://imooc.com/video/6710‘){ // parse 后面跟着是字符串形式的URL
protocol: ‘http:‘, // 网站底层的协议是 http 还是 https 还是 ftp
slashes: true, // 网站底层是否有协议的双斜线 "//" 有 true 没有false
auth: null,
host: ‘imooc.com‘, // 记录网站的服务器IP地址 或者域名
port: null, // 端口 默认的是80端口
hostname: ‘imooc.com‘, // 主机名
hash: null, // 哈希值 锚点
search: null, // 查询条件
query: null, // 发送给服务器的值 以等号分开的键值 称之为参数串
pathname: ‘/video/6710‘, // 访问资源的路径名
path: ‘/video/6710‘, // 路径
href: ‘http://imooc.com/video/6710‘ } // 完整的URL地址
url.parse(‘http://imooc.com/video/6710‘,true) //会将query中的值解析出来
url.parse(‘http://imooc.com/video/6710‘,true,true) //会将host中的值解析出来
url.format
url.format(urlObj) //将一个对象转换成标准的URL地址
urlObj - {Object}
返回 {string}
格式化一个 URL 对象。
url.resolve
url.resolve(from, to) //将一个域名和一个资源路劲融合成一个url地址
from - {string}
to - {string}
返回 {string}
像浏览器一样融合一个基础 URL 和一个超链接 URL。
例子:
url.resolve(‘/one/two/three‘, ‘four‘) // ‘/one/two/four‘
url.resolve(‘http://example.com/‘, ‘/one‘) // ‘http://example.com/one‘
url.resolve(‘http://example.com/one‘, ‘/two‘) // ‘http://example.com/two‘
序列化
querystring.stringify(obj[, sep][, eq][, options])
将一个对象序列化为一个查询字符串。可以选择是否覆盖默认的分割符(‘&‘)和分配符(‘=‘)。
options 对象可以包含 encodeURIComponent 属性(默认值为 querystring.escape),可以用来以非 utf8 的其他编码方式来编码字符串。
querystring.stringify({name=‘scott‘,course:[‘jade‘,‘node‘],from:‘‘}) //将传入的参数解析成
‘name=scott&course=jade&course=node&from=‘
querystring.stringify({name=‘scott‘,course:[‘jade‘,‘node‘],from:‘‘},‘,‘) //将传入的参数解析成 第二个参数 是将解析的字符串以什么形式分开
‘name=scott,course=jade,course=node,from=‘
querystring.stringify({name=‘scott‘,course:[‘jade‘,‘node‘],from:‘‘},‘,‘,‘=>‘) //将传入的参数解析成 第三个参数 是将【键】=【值】 中间的等号替换成 第三个参数
‘name=scott,course=>jade,course=>node,from=>‘
反序列化
querystring.parse(‘name=scott&course=jade&course=node&from=‘) //将之前解析的东西反序列化
转义和反转义
querystring.escape(‘<哈哈>‘) 会将<哈哈> 转义成%3C%E5%93%88%3E
querystring.unescape(‘%3C%E5%93%88%3E‘) 会将‘%3C%E5%93%88%3E‘ 转义成 <哈哈>
chrome://net-internals/#dns 查看谷歌浏览器下的dns
C:\Windows\System32\drivers\etc\hosts 查看本地host文件
HTTP 状态码
1XX 指示信息 表示请求信息已经接收了 继续处理
2XX 请求已经成功 处理掉了
200 OK 请求成功
3XX 表示重定向 请求进行更进一步的操作
4XX 客户端错误
400 客户端语法错误 服务端无法理解
401 请求没经过授权
403 服务端收到请求 但是拒绝服务没有权限
404 没找到 或者url地址错误
5XX 服务器端错误
500 服务器端发生不可预期的错误
503 当前不能处理客户端的请求
EventEmmit
作用域和上下文
上下文:
call、apply更换对象
测试响应数据:
ab -n1000 -c10 http://www.imooc.com
EventEmitter
emit
removeListener(‘求安慰‘,water)
removeAllListener(‘求安慰‘)
本文出自 “悠悠灰角落” 博客,请务必保留此出处http://bamilk.blog.51cto.com/10785704/1702545
原文:http://bamilk.blog.51cto.com/10785704/1702545