Node.js
2016-07-20 17:39
543 查看
DOS命令:
进入操作:
如何引入模块?
QueryString参数处理利器
简单了解下HTTP
1.什么是HTTP:它是一种协议,计算机之间要共同遵守这种协议规则,现在不光是计算机,还有手机、冰箱、电视等智能终端
2.流程是什么:一般是http客户端发起请求,创建端口,http服务器在端口监听客户端的请求,一旦收到请求,服务器会返回客户端状态和内容(如200状态码,json字符串)
3.实例化说明客户端发送请求后计算机和浏览器都干了些什么(域名解析)?
4.HTTP三次握手
5.TCP/IP连接过后,就可以向服务器发送网络请求
6.服务器端响应请求,返回数据
7.浏览器拿到返回的数据,在解析和渲染页面的时候,如js、css、图片等静态资源,都要进行上面一样的主要步骤
8.将完整解析渲染后的页面展现给客户端用户
express
首先创建文件夹, 例如AD
进入文件夹AD,安装express:
查看安装位置
创建文件:app.js
jade学习:
1. 安装jade
2. 检查是否安装
3.创建文件夹
4. jade转为html文件
5.基本操作
6.占位符的形式及变量引入
7.转义
8.循环遍历
9.if语句
10.mixins
11.继承
功能 : 在 TCP 流和文件系统操作等场景中处理二进制数据流
ls:查看目录 cd:进入目录 Tab:匹配目录 cd .. 返回上一级 mkdir:创建文件夹 touch: 创建文件 rm: 删除文件夹 pwd_文件:查看当前文件夹名称 rm -rf 文件夹名称: 删除文件夹 ifconfig: 查看ID信息 __dirname(目录绝对路径,双下划线) __filename(文件绝对路径)
进入操作:
进入控制台 : 输入node(可以测试代码,比如全局变量global) 连续2次 ctrl+c 退出node控制台 node执行js: node test.js // 客户端全局变量是window //服务端全局变量是global
如何引入模块?
1.在test.js中引入url var url = require('url'); var str = 'http://www.baidu.com'; 2. uri->url 协议://ip或域名:端口号/路径?字段 console.log(url.parse(str,true,true)); 3. url.parse(str)是将url转化为字符串或者对象 query //第一个true是将url转化为对象 第二个true是可以解析不带协议的url console.log(url.format(obj)); 4. url.format(obj)是将对象转化为一个url 5. url.resolve(str)是将字符串转化为一个url
QueryString参数处理利器
执行命令行: querystring.stringify({name:'kuli',course:['jade','node'],form:'Ame'}) //输出 'name=kuli&course=jade&course=node&form=Ame' 执行命令行: querystring.stringify({name:'kuli',course:['jade','node'],form:'Ame'}, ',') //输出 'name=kuli,course=jade,course=node,form=Ame' 执行命令行: querystring.stringify({name:'kuli',course:['jade','node'],form:'Ame'}, ',', ':') //输出 'name:kuli,course:jade,course:node,form:Ame' 执行命令行: querystring.parse('name=kuli&course=jade&course=node&form=Ame') //输出 { name: 'kuli', course: [ 'jade', 'node' ], form: 'Ame' } 执行命令行: querystring.parse('name=kuli,course=jade,course=node,form=Ame', ',') //输出 { name: 'kuli', course: [ 'jade', 'node' ], form: 'Ame' } 执行命令行: querystring.parse('name:kuli,course:jade,course:node,form:Ame', ',', ':') //输出 { name: 'kuli', course: [ 'jade', 'node' ], form: 'Ame' } 执行命令行: querystring.escape('<哈哈>') //输出 '%3C%E5%93%88%E5%93%88%3E' 执行命令行: querystring.unescape('%3C%E5%93%88%E5%93%88%3E') //输出 '<哈哈>'
简单了解下HTTP
1.什么是HTTP:它是一种协议,计算机之间要共同遵守这种协议规则,现在不光是计算机,还有手机、冰箱、电视等智能终端
2.流程是什么:一般是http客户端发起请求,创建端口,http服务器在端口监听客户端的请求,一旦收到请求,服务器会返回客户端状态和内容(如200状态码,json字符串)
3.实例化说明客户端发送请求后计算机和浏览器都干了些什么(域名解析)?
1.搜索自身的dns缓存 2. 搜索操作系统自身DNS缓存,(不存在or缓存失效) 3.读取本地host文件 4.浏览器发起一个DNS的一个系统调用 a. 宽带运营商服务器查看本地缓存 b.运营商服务器发起一个迭代的dns解析请求 向根域查询顶级域的IP地址->向二级域查询->一级域查询 直到最顶级域服务器一般是注册商如万网、新网 c.运营商服务器拿到后,把结果返回操作系统内核并同时缓存起来, d.操作系统内核将结果返回浏览器 最终浏览器拿到了网站对应的IP地址,理论上还要麻烦的多,不多赘述
4.HTTP三次握手
5.TCP/IP连接过后,就可以向服务器发送网络请求
6.服务器端响应请求,返回数据
7.浏览器拿到返回的数据,在解析和渲染页面的时候,如js、css、图片等静态资源,都要进行上面一样的主要步骤
8.将完整解析渲染后的页面展现给客户端用户
express
首先创建文件夹, 例如AD
进入文件夹AD,安装express:
npm install express
查看安装位置
which express
创建文件:app.js
//下面代码在app.js中输入 // 引进express模块 var express = require('express'); // 实例化express对象,并启动服务 var app = express(); //路由设置 app.get('',function(req,res){ }) // 监听3000端口 app.listen(3000);
jade学习:
1. 安装jade
npm install jade //如果失败 sudo npm install jade
2. 检查是否安装
jade -h
3.创建文件夹
桌面上 mkdir jade jade里 touch index.jade
4. jade转为html文件
下面的终端命令都是在jade文件夹下执行 //压缩的index.html jade index.jade //不压缩的index.html jade -P index.jade //不压缩的随时监控index.html jade -P -w index.jade
5.基本操作
// 多行注释 /* */ 单行注释 h1 前面有一空格,我是h1标签 //输出 <h1>前面有一空格,我是h1标签</h1> a(href="#",title="这是个链接") 百度 //输出 <a href="#" title="这是个链接">百度</a> div.div1.div2.div3 //输出 <div class="div1 div2 div3"></div> div(id="news" class="n1 n2 n3") // 输出 <div id="news" class="n1 n2 n3"></div>
6.占位符的形式及变量引入
//形式1 div #{a} div #{b} //形式2 div= a div= a 文件内引入变量 - var a="diva" - var b="divb" //终端引入变量 jade -P -w index.jade --obj "{a:'diva',b:'divb'}" //终端控制引入data.json文件变量 jade -P -w index.jade -O data.json
7.转义
!可执行转义,\不执行转义 - var html = "<div>我是div</div>" p #{html} //输出 <p><div>我是div</div></p> p !{html} //输出 <p><div>我是div</div></p> p mvp\#{} //输出 <p> mvp#{}</p>
8.循环遍历
- var obj ={name:"hanmy",age:28} - var list = [1,2,3,4,5,6] - var obj1 = [{id:"1",list:[1]},{id:"2",list:[1,2]},{id:"3",list:[1,2,3]}] - for k in obj p= k //输出 <p>hanmy</p> <p>28</p> - for (var haha in obj) div= haha //输出 <div>name</div> <div>age</div> - each value,key in obj div #{key}:#{value} //输出 <div>name:hanmy</div> <div>age:28</div> ul -each item in list li= item //输出 <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> dl - each item in obj1 dt=item.id - each k in item.list dd= k //输出 <dl> <dt>1</dt> <dd>1</dd> <dt>2</dt> <dd>1</dd> <dd>2</dd> <dt>3</dt> <dd>1</dd> <dd>2</dd> <dd>3</dd> </dl>
9.if语句
- var isOn = true - var list1 =[] if isOn div isOn为true else span isOn为false //输出 <div>isOn为true</div> if list1.length div list1长度为0 else span list1长度不为0 //输出 <span>list1长度不为0</span>
10.mixins
mixin fn p 你好,世界 div +fn +fn //输出 <div> <p>你好,世界</p> <p>你好,世界</p> </div> mixin fn(name,age) p 姓名:#{name},年龄:#{age} div +fn("hanmy",18) +fn("sundc",18) //输出 <div> <p>姓名:hanmy,年龄:18</p> <p>姓名:sundc,年龄:18</p> </div>
11.继承
//index1.jade文件代码 extends layout.jade block content include header.jade div.mian div.left div.aside include footer.jade //layout.jade文件代码 doctype html head mata(charset="utf-8") title #{title} include src.jade body block content //src.jade文件代码 link(rel="stylesheet",href="../index.css") script(type="text/javascript",src="../index.js") //header.jade文件代码 header nav ul li a(href="#") 导航 //footer.jade文件代码 footer ul li a(href="#") 尾部链接
//index1.jade转化成index1.html文件 <!DOCTYPE html> <html> <head> <mata charset="utf-8"></mata> <title></title> <link rel="stylesheet" href="../index.css"> <script type="text/javascript" src="../index.js"></script> </head> <body> <header> <nav> <ul> <li><a href="#"> 导航</a></li> </ul> </nav> </header> <div class="mian"> <div class="left"></div> <div class="aside"></div> </div> <footer> <ul> <li><a href="#"> 尾部链接</a></li> </ul> </footer> </body> </html>
Events(事件) 更多事件内容点这里
// 创建EventEmitter实例方法 法一: const EventEmitter = require('events') class five extends EventEmitter {} const fives = new five() 法二: const EventEmitter = require('events').EventEmitter const five = new EventEmitter()
// eventEmitter.on() 方法用于注册监听器,eventEmitter.emit() 方法用于触发事件 const EventEmitter = require('events') class five extends EventEmitter {} const fives = new five() fives.on('event', () => { console.log('发生了一个事件!') // 输出 发生了一个事件! }) fives.emit('event') fives.on('e', (a, b) => { console.log(a, b, this) // 输出 a b {} // 箭头函数调用this不指向five实例 }) fives.emit('e', 'a', 'b') fives.on('ee', function(a, b) { console.log(a, b, this) //输出 a b five { domain: null, _events: { event: [Function], e: [Function], ee: [Function] }, _eventsCount: 3, _maxListeners: undefined } }) // 普通函数调用this指向five实例 fives.emit('ee', 'a', 'b')
//作为最佳实践,应该始终为 'error' 事件注册监听器。 一: fives.on('error', (err) => { console.log('有错误'); }); fives.emit('error', new Error('oh,No!')); 二: process.on('uncaughtException', (err) => { console.log('有错误'); }); fives.emit('error', new Error('oh,No!'));
Buffer 点击链接更多
Buffer类在Node.js中是一个全局变量,因此无需require('buffer').Buffer。功能 : 在 TCP 流和文件系统操作等场景中处理二进制数据流
相关文章推荐
- Node——异步I/O
- nodejs URL 详解
- Node.js如何自动审核团队的代码
- node - async 抓取所有车系车型数据
- Nodejs测试:从0到90(理论篇)
- namenode正处于safemode状态,怎么处理?
- 推荐几个学习Node的网址:
- hadoop datanode 节点超时时间设置
- Dom4j 中Node节点 和Element元素的区别
- nodeJS:Express框架中session内存存储
- java jar 包导出报classnodefloadexception
- Drupal做个人博客,阿里云Ubuntu下安装Git,Composer, Drush,nodejs
- 使用nssm在windows服务器上部署nodejs
- 安装nodejs+npm的体验
- Mac下通过brew安装指定版本的nodejs
- LeetCode题解-222-Count Complete Tree Nodes
- __dirname与__filename
- Node.js模块导出exports 和 module.exports 的区别
- 使用 nvm 管理不同版本的 node 与 npm
- Node里面的require和RequireJs的区别