node.js笔记

1.npm install express ;node中安装express组件
2.异步编程:同步调用和异步调用(setTime())
3.模块分类:原生模块(Node.js API提供的原生模块,原生模块在启动时已经被加载)和文件模块(动态加载模块,通过require方法加载);加载方法都一样,加载成功后返回一个对象。但是文件模块加载时需要外部文件的绝对路径。在文件模块中只有exports和module.express对象暴露给外部的属性和方法才能通过返回的require对象调用。例如:exports.name=
“dang”可以被调用。module.exports会包含exports方法。
4.res.writeHead();添加HTTP响应的头部信息 var redPath=_dirname+’/’+url.parse(‘index.html’).pathname; 获取html文件路径 var indexPage=fs.readFileSync(redPath)读取html文件数据 。res.end(“x”)返回到浏览器;
5.获取外部文件
var http = require(‘http’);//服务器创建
dns=require(‘dns’),//dns查询
fs=require(‘fs’),//文件操作
url=require(‘url’),//url处理
querystring=require(“querystring”);//字符串处理;
http.createServer(function (request, response) { //response 响应 request请求;
response.writeHead(200, {‘Content-Type’: ‘text/html’});//添加标题为 html
var readPath=__dirname+’/’+url.parse(‘index.html’).pathname;获取外部文件的地址 url.parse().pathname 参数
var indexPage=fs.readFileSync(readPath);//读取外部文件
response.end(indexPage);//服务器向客户端返回数据
response.end(‘Hello Worlddwdadwa\n’);
}).listen(8888,“127.0.0.1”);
6.路由处理器:router(response,request,pathname):回调函数处理不同的url资源请求;
7.response的addListener方法可以获取Post请求。分别的为data和end事件。data:当有数据传到服务器时触发的事件。end则是客户端所以数据传递完成后所触发的事件。
8.response.addLister(“data”,function(){函数体});数据传递到服务器的时候触发的函数,数据添加到postData中,例子:var postData="";request.addListener(“data”,function(postDataChunk){postData+=postDataChunk;console.log(postData);});postDataChunk获取到数据 domain=querystring.parse(postData).search_dns;//字符串键值处理结果
9.DNS解析:入口模块(服务器创建)、路由模块处理(url转发以及资源分配)、DNS解析(负责DNS解析的业务逻辑)、首页展示(负责读取index.html页面并返回到客户端)。 dns.resolve(domain,[rrtype],callback)
10.express模块:一个开源框架,主要集成了Web的http服务器的创建、静态文件管理、服务器url请求处理、get和post请求、Session等功能。
11.node.js不支持内嵌。所以使用模板就非常重要–jade: extends layout(加载layout.jade页面)
12.forever模块:A.后台服务运行,监控运行日子,以及HTTP请求日志 B.确保项目的安全运行,
13.socket.io模块:主要作用是将WebSocket协议应用到所以得浏览器,主要用于长时连接请求项目中。
例子:
var io=require(‘socket.io’).listen(80); 设置socket监听端口为80
io.sockets.on(‘connection’,function(scoket){调用socketAPI中的sockets.on接口,当客户端connection时,执行回调那函数function(socket){}
socket.emit(‘news’,{hello: ‘world’});//连接成功后发送一个news消息,信息内容为json对象{hello:‘worls’};
socket.on(‘my other event’,function(data){客户端发送my other event消息时,服务器接收成功后,执行回调函数function(data)函数
console.log(data);
});
});
})
14.request模块:request.get和request.post方法,发起get\post的HTTP请求。var request=require(‘request’); request.get(‘http://127.0.0.1:1337/’,function(error,response,result){
console.log(result) req.method.toLowerCase() 判断HTTP请求类型。
15.Formidable模块:解决文件上传: form.parse(req,function(err,fields,files){//解析POST数据} fields为post数据,files文件对象,
16.req.method.toLowerCase() 判断用户端请求类型。
17.模块:exports.init()模块的共有方法可以用require()调用 ,init()私有方法; exports和module.exports的成员为公有方法。node.js模块不是类。
18.继承:util模块的inherits API实现 util.inherits(x,y) x构造函数的原型将被设置为使用y构造函数所创建的一个新对象。
19.单例模式:一个类就一个实例,先判断实例是否存在,不存在,则创建该对象。适配器模式、装饰模式、工厂模式、
20.querystring.parse:HTTP参数解析 例如 querystring.parse(str,[sep],[eq],[options]);转换成json对象。90页
21.fs.readFileSync(CONF+‘mmie_type.json’,‘utf8’);
22.path.extname(pathname):请求pathname的后缀名字符串。例如 :.html extname=extname?ext.slice(1):’’;截取到“.html”中的“html”字符串
23.File Systemm模块:fs.rename(x,y,function(err))//x为源文件path ,y为重命名后的文件
fs.chmod(path,777,[callback])//修改文件权限;
fs.stat(path,funtion(err,stats))//读取元文件的信息。function(err,stats)回调函数 stats 为返回信息;
fs.readFile(BASE_DIR+’/node6.js’,“binary”,function(err,file){if(err) throw err;console.log(file,“binary”);}) //path文件路径 function(err,file)fil为读取到文件内容。没有binary则读出为二进制文件
fs.exists(BASE_DIR+’/node6.js’,function(existBool){if(existBool) console.log(‘node6.js exist’);} else { console.log(‘node6.js not exist’);}});判断文件是否存在
fs.unlink(BASE_DIR+’/CAO.txt’,function(err){ if(err) throw err;}删除文件;
fs.write(fd,buffer,offset,length,position,[callback]);将buffer缓冲器写入fd文件 position指明写入文件头部起的偏移地址。fs.read()读取文件;
24.res.render=function(template,options{})//位res对象添加render对象。 template为模板名 options为需要传递的参数。
25.fn=jade.compile(str,{filename:template,pretty:true})//编译jade模板
26.var page=fn(options)将传递的参数添加到模板中并且编译,完成后返回编译后的html字符串。
27.socket.emit()发送消息到客户端。socket.on(‘data’,function(data){})接收到客户端发送的data消息时执行的相应的function。
28.Session和Cookie:客户端请求Session,当服务器端检查客户端中的Cookie没有相应的Session id时,则创建Session 若有的话则直接返回Session中的数据。
29.start方法是启动Session管理,newSession为客户端创建一个新的Session id cleanSessions是清除Session
30.Crypto加密:A.crypto.createHash(“md5”)//s使用md5加密 也 sha1 md5 sha256 sha512 hash.update(“huangdanhua”)加密字符串 encode=hash.digest(‘hex’)返回加密的对象;hex 16进制 binary 2进制 base64 默认binary;
B.HMAC :crypto.createHmac(“md5”,‘dan’) C.Cipher和Decipher
31.Nginx是一个高性能Web和反向代理服务器,在繁忙的Web服务器和Internet之间增加一个高速的Web缓冲服务器来降低实际的Web服务器的负载。
32.BASE_DIR=__dirname;获取系统的路径;
33.lib.httpParam.POST(‘username’,function(value){})获取POST参数
34.querystring.stringify(get)//用querystring的方法将get的json对象转化为HTTP中的GET参数字符串。
35.request.get(params,function(error,response,result))result为响应数据。
36 UPD服务器基础历程:
UDP client的启动
var dgram=require(“dgram”);//获取dgram对象
var server=dgram.createSocket(“udp4”);//创建udp4 socket对象
server.on(“message”,function(msg,rinfo){//监听mesage事件 后返回function函数;
console.log(“server get:”+msg+“from”+rinfo.address+":"+rinfo.port);
})
var message=new Buffer(“hi i am cao xiu kang”);//创建信息
server.on(“listening”,function(){
var addrss=server.address();//获取服务器监听端口和IP对象
console.log(“server listeng”+addrss.address+":"+addrss.port);
});
server.send(message,0,message.length,41234,“127.0.0.2”);//向本地服务器127.0.0.2发送消息
server.bind(41234);//开始绑定监听端口;
server.close();
37.JSON.parse(msg)将json数据转换为对象;JSON.stringify(msg)将msg数据转化为json字符串;
38.使用module.exports:返回一个functiuon时,返回一个对象 exports 返回一个object var Class=require("/class");返回一个类 使用前必须实例化对象 var x=new Class()
39.mysql数据库
/* Created by 我是光 on 2016/7/28.*/
var mysql=require(‘mysql’);//获取mysql对象
var connection=mysql.createConnection({//创建Mysql连接
host:‘localhost’,
user:‘root’,
password:‘123456’
});
connection.connect(function(err){//判断是否连接成功
console.log(“cheng gong”);
});

function querySql(callback,url1){
connection.query(url1,function(err,rows){//异步方法;执行mysql语句
if(err)
{
console.log(err);
return;
}
callback(rows);//回掉函数
});
}
function callback(rows){//设置回掉函数
console.log(rows);//返回执行结果
}

var selectdatabase=“show databases”;//sql语句
var use1=“use laoshi”;
var select=“select * from chengji”;
querySql(callback,selectdatabase);//调用sql函数
querySql(callback,use1);
querySql(callback,select);
connection.end(function (err) {//关闭Mysql;
console.log(“close”);
});
40.MongoDB:一种介于关系型和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富的。松散数据类型,
41.node.js框架源码分析(MVC)思路:分系入口文件(一般在index.js文件中)分析出请求路径url常量后发给路由处理模块–>路由处理模块(一般在application文件下:包含了HTTP服务器构建,url解析和url解析转换后的处理参数)根据转换后的参数将请求转发到相应的逻辑处理Controller层。–>Controller(后台数据处理,数据库操作,返回到前端);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值