您的位置:首页 > Web前端 > Node.js

Node.js

2016-07-20 17:39 543 查看
DOS命令:

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 流和文件系统操作等场景中处理二进制数据流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: