汇智网node学习笔记
2016-01-12 19:59
701 查看
快速入门
下载配置
偷懒点,直接官网上下载安装包,像安装一般的软件那样,安装配置就行了。具体的可以百度node的特点
回调函数模块
回调函数
由于node基于事件驱动的,回调函数必不可少,我的回调函数理解就是到达我们要的条件后执行的函数,并不是定义了就执行。setTimeout(function(){ console.log('callback is called'); },2000); //比如定时就是到达我们定的时间后,执行输出函数
标准回调函数
function(err,data){ // 做点什么,err是错误信息,data是执行回调函数时传入的数据 }
模块
这个说了很多了,一个模块就是个js文件或者功能,防止变量污染,一般就是引用模块(实例化),然后使用模块。模块比如:os fs url http……
require("模块"); var os = require("os"); var result = os.platform(); //查看操作系统平台 //os.release(); 查看操作系统版本 //os.type(); 查看操作系统名称 //os.arch(); 查看操作系统CPU架构 console.log(result);
参考文档
node中文APInode中文API
process
process是一个全局内置对象,可以在代码中的任何位置访问此对象,这个对象代表我们的node.js代码宿主的操作系统进程对象。使用process对象可以截获进程的异常、退出等事件,也可以获取进程的当前目录、环境变量、内存占用等信息,还可以执行进程退出、工作目录切换等操作
1. process.cwd();//获取当前进程目录 2. process.chdir("目录");//改变应用程序目录 3. console.log = function(d){ process.stdout.write(d+'\n');//标准输出流,console.log()就是封装的它 } 4.process.stderr.write(输入内容);//和stdout差不多,不过是输出错误信息的 5.process.stdin.on('readable', function() { var chunk = process.stdin.read();//标准输入流 if (chunk !== null) { process.stdout.write('data: ' + chunk); } }); 6.process.exit(code);//杀进程的,code为退出后返回的代码 7.process.stdout.on('data',function(data){ console.log(data);//为stdout注册data事件,我们就可以拿到它输出的内容了。 8.process.stdin.setEncoding(编码); process.stdout.setEncoding(编码); process.stderr.setEncoding(编码); });
参考文档
汇智网processfs
开发中我们经常会有文件I/O的需求,node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装。var fs = require('fs'); //写入文件 fs.writeFile('tet.txt', 'hello world 我是谁', function(err){ if(err) throw err; console.log('Saved successfully'); }); //追加文件 fs.appendFile('tet.txt','你是pengpeng',function(err){ if(err) throw err; console.log('内容追加完成'); }); //判断文件是否存在 fs.exists('/etc/passwd', function (exists) { console.log(exists ? "存在" : "不存在!"); }); //重命名文件也可移动文件,fs.rename(旧文件,新文件,回调函数()); fs.rename('tet.txt','texxt.txt',function(err){ if (err) throw err; console.log('Successful modification,'); }); //读取文件 fs.readFile('server.js',function(err,data){ if(err) throw err; fs.writeFile('test.txt',data,function(err){ if(err) throw err; console.log('server.js内容读取写入完成'); }) }); //删除文件 fs.unlink('texxxt.txt',function(err){ if(err) throw err; console.log('texxt.txt文件删除成功'); }); //创建目录 fs.mkdir(路径,权限,回调函数(err)); 权限:可选参数,只在linux下有效,表示目录的权限,默认为0777,表示文件所有者、文件所有者所在的组的用户、所有用户,都有权限进行读、写、执行的操作。 fs.mkdir('fs',function(err){ if(err) throw err; console.log('fs 目录创建完成'); }); //删除目录 fs.rmdir() fs.rmdir('fs2',function(err){ if(err) throw err; console.log('fs 目录删除成功'); }); //读取目录 fs.readdir('fstest',function(err,files){ if(err) throw err; console.log('读取目录完成'); console.log(files); });
url
node.js为互联网而生,和url打交道是无法避免的了,url模块提供一些基础的url处理。这个模块有三个函数比较常用
var url=require('url'); //parse()函数,基础用法 var result=url.parse('http://www.baidu.com/index/cc?page=1'); console.log(result); //parse(url,true/false); true会将查询条件也转换成json格式 var result2=url.parse('http://www.baidu.com/index/cc?page=1',true); console.log(result2); //parse(url,true/false,true/false) 解析主机 会将//和第一个/之间的解析为主机名 var result3=url.parse('http://www.baidu.com/index/cc?page=1',true,true); console.log(result3); //格式化 format var result4=url.format({ protocol: 'http:', hostname:'www.baidu.com', port:'80', pathname :'/news', query:{page:1} }); console.log(result4); //组装去往下一个网址 var url = require('url'); url.resolve('http://example.com/', '/one') // 'http://example.com/one' url.resolve('http://example.com/one', '/two') // 'http://example.com/two'
path
本模块包含一套用于处理和转换文件路径的工具集,用于处理目录的对象,提高用户开发效率var path=require('path'); /*======================函数============================== normalize() 格式化路径 join() 拼合路径 dirname() 返回路径中的目录名 basename() 返回路径中的最后一部分,并且可以对其进行条件排除 extname() 返回路径中文件的扩展名(以最后一个'.'开始,返回'.'以及'.'以后的所有字符串,如没有'.',则返回空字符串) ========================================================*/ //格式化路径 normalize()不符合规范的路径经过格式化转换为标准路径,解析路径中的.与..外,还能去掉多余的斜杠。 var data1 = path.normalize('/path///normalize/hi/..'); console.log(data1);//' /path/normalize/' //拼合路径 join() 将传入的多个路径拼接为标准路径并将其格式化,返回规范后的路径,避免手工拼接路径字符串的繁琐 var data2 = path.join('///you', '/are', '//beautiful'); console.log(data2);//'/you/are/beautiful' //返回路径中的目录名 dirname() var data3 = path.dirname('/foo/strong/cool/nice'); console.log(data3); //basename函数可返回路径中的最后一部分,并且可以对其进行条件排除. var data4 = path.basename('/foo/strong/basename/index.html'); var data5 = path.basename('/foo/strong/basename/index.html','.html'); console.log(data4 + ' "and" ' + data5);//'index.html "and" index' //extname函数返回路径中文件的扩展名(以最后一个'.'开始,返回'.'以及'.'以后的所有字符串,如没有'.',则返回空字符串) var data6 = path.extname('index.html'); console.log(data6);//'.html'
Query String
主要是处理字符串和对象之间的转换,序列化和反序列化var querystring=require('querystring'); //序列化 及多参数用法 stringify() var result1 = querystring.stringify({foo:'bar',cool:['xux', 'yys']}); console.log(result1);//foo=bar&cool=xux&cool=yys var result2 = querystring.stringify({foo:'bar',cool:['xux', 'yys']},'*','$'); console.log(result2); //'foo$bar*cool$xux*cool$yys' //反序列化 以及多参数用法 parse() var result3 = querystring.parse('foo=bar&cool=xux&cool=yys'); console.log(result3);//{ foo: 'bar', cool: ['xux', 'yys']} var result = querystring.parse('foo@bar$cool@xux$cool@yys','@','$'); console.log(result);//{ foo: '', bar: 'cool', xux: 'cool', yys: '' }
util
var util=require('util'); /*================================================================ inspect(object,[showHidden],[depth],[colors])将任意对象转换为字符串的函数,通常用于调试和错误输出。它至少接受一个参数object,即要转换的对象,我们来学习它的简单用法 format() 根据第一个参数,返回一个格式化字符串 isArray() isDate()isDate函数可以判断对象是否为日期类型,是则返回ture,否则返回false isRegExp()函数可以判断对象是否为正则类型,是则返回ture,否则返回false ==================================================================*/ //inspect() var obj={a:1,b:2} var result1 = util.inspect(obj); console.log(result1); //format()根据第一个参数,返回一个格式化字符串,第一个参数是一个可包含零个或多个占位符的字符串。每一个占位符被替换为与其对应的转换后的值,支持的占位符有:"%s(字符串)"、"%d(数字<整型和浮点型>)"、"%j(JSON)"、"%(单独一个百分号则不作为一个参数)"。 //如果占位符没有相对应的参数,占位符将不会被替换 var result2 = util.format('%s:%s', 'foo'); console.log(result2);//'foo:%s' //如果有多个参数占位符,额外的参数将会调用util.inspect()转换为字符串。这些字符串被连接在一起,并且以空格分隔 var result3 = util.format('%s:%s', 'foo', 'bar', 'baz'); console.log(result3);//'foo:bar baz' //如果第一个参数是一个非格式化字符串,则会把所有的参数转成字符串并以空格隔开拼接在一块,而且返回该字符串 var result = util.format(1, 2, 3); console.log(result); //isArray() var result4 = util.isArray(object); console.log(result4); //isDate() var result5 = util.isDate(object); console.log(result5); //isRegExp var result6 = util.isRegExp(object); console.log(result6);
子进程
众所周知node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,通过多进程来实现对多核CPU的利用. child_process模块提供了四个创建子进程的函数,分别是spawn,exec,execFile和fork
var child_process = require('child_process'); /*================================================================ *spawn()用给定的命令发布一个子进程,只能运行指定的程序,参数需要在列表中给出。 *exec()exec也是一个创建子进程的函数,与spawn函数不同它可以直接接受一个回调函数作为参数,回调函数有三个参数,分别是err, stdout , stderr *execFile()函数与exec函数类似,但execFile函数更显得精简,因为它可以直接执行所指定的文件 *fork()函数可直接运行Node.js模块,所以我们可以直接通过指定模块路径而直接进行操作 ==================================================================*/ //spawn() var child = child_process.spawn( command ); child.stdout.on('data', function(data) { console.log(data); }); //exec() child_process.exec( command , function(err, stdout , stderr ) { console.log( stdout ); }); //execFile() child_process.execFile( file , function(err, stdout , stderr ) { console.log( stdout ); }); //fork()该方法是spawn()的特殊情景,用于派生Node进程。除了普通ChildProcess实例所具有的所有方法,所返回的对象还具有内建的通讯通道 child_process.fork( modulePath );
相关文章推荐
- React-Native 获取node.js提供的接口
- 呜呼!Node.js是什么?
- Node黑客开发的10个好习惯(2016)
- 牛人教你使用Node.js和Twilio实现手机控制门锁
- window下node版本管理
- Nodejs 调试
- nodejs 服务器创建及文件读写操作
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
- Node.js_基本类型
- CDH集群nodemanager启动不了
- 开始学nodejs——net模块
- The given node was not created by the current document
- hadoop源代码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置
- nodejs events模块
- nodejs IDE 编译器
- Ubuntu下安装Nodejs
- NodeJs 写服务器案例 搭建服务器 创建服务器
- LeetCode_237. Delete Node in a Linked List
- 25. Reverse Nodes in k-Group leetcode Python 2016 new season
- nodeJS