首页 > Web开发 > 详细

学习小笔记---nodejs

时间:2015-10-13 19:27:39      阅读:354      评论:0      收藏:0      [点我收藏+]

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

学习小笔记---nodejs

原文:http://bamilk.blog.51cto.com/10785704/1702545

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!