nodejs学习笔记

module.exports 可以赋值任何形式 module.exports = {hello:hello} module.exports.hello = hello module.exports = function(){}
exports 只能赋值键值 exports只能以.的形式来赋值 exports.hello = hello
注:因为默认情况下module.exports = exports = {}; 如果exports赋值另一个对象,则exports的引用就是这个新对象,和module.exports就不是同一个对象了,但是修改原对象的值
则不会改变引用,还是引用的同一个对象;

使用异步还是同步?
由于Node环境执行的JavaScript代码是服务器端代码,所以,绝大部分需要在服务器运行期反复执行业务逻辑的代码,必须使用异步代码,否则,同步代码在执行时期,服务器将停止响应,
因为JavaScript只有一个执行线程。服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这些代码只在启动和结束时执行一次,
不影响服务器正常运行时的异步执行。

node中要把一个对象转化成json格式 JSON.stringify(obj);

process
process.cwd() 返回当前执行目录的路径字符串,不管哪个文件夹中的js文件中,相对路径总是相对于该路径
process.argv[2] 获取命令行参数,node执行程序路径和主模块文件路径固定占据了argv[0]和argv[1]两个位置
process.exit(1) 正常退出了,这时程序的退出状态码为0,或者一个程序运行时发生了异常后就挂了需要立即退出,并且需要把退出状态码设置为指定数字,比如1;

child_process在该进程中运行另一个文件,作为该进程的子进程运行

API
fs 同步和异步 每个API都有同步和异步
readFileSync readFile 若无则报错
writeFileSync writeFile 若无该文件则创建
statSync stat 若无则报错
数据流的读写
fs.createReadStream fs.createWriteStream
管道 pipe rs.pipe(ws);先读后写,自动执行
readdir 读取文件夹 以数组形式返回文件夹中文件名。
mkdir(path[, mode], callback) 创建文件夹
rmdir(path,callback) 删除文件夹
unlink 删除文件
rename(oldname,newname,func) 文件改名
watch(filename[,option][,listener]) 监听文件或文件夹 option = {persistent:bool,recursive:bool} listener callback 参数(event,filename) event:rename,change;filename:a name of the file
持续 递归
watchFile(filename[,option][,listener]) 以一定的时间间隔轮询该文件或文件夹 option{persistent: true, interval: 5007} listener (curr, prev) 参数为stat对象
unwatchFile(filename[, listener])
fs.stat(path, callback),lstat(),fstat() callback(err,stat)
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isCharacterDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isFIFO()
stats.isSocket()
fs.access(path[, mode], callback) mode—-fs.F_OK fs.R_OK读 fs.W_OK写 fs.X_OK 权限检查
fs.appendFile(file, data[, options], callback)
options Object | String
encoding String | Null default = ‘utf8’
mode Number default = 0o666
flag String default = ‘a’
fs.chmod(file,mode,cb) mode是integer 表示权限值
fs.chown(path, uid, gid, callback) 更改文件所有权。uid 用户ID gid 群体身份 (指共享资源系统使用者的身份)
fs.close(fd, callback) fs.open(file,flags[,mode],cb(err,fd))
fs.exists(path, callback(exists)) 检测路径是否存在
fs.link(srcpath,dstpath,cb);
fs.read(fd, buffer, offset, length, position, callback) 手动管理读取文件
fs.write(fd, buffer, offset, length[, position], callback)
fs.write(fd, data[, position[, encoding]], callback)
fs.utimes(path, atime, mtime, callback) 改变文件的时间戳
assert
assert(value,[‘err’]) 如果value能转换为false,则抛出后面的err字符串;
assert.ok(value,[]);同上;
assert.fail(v,v,’e’,’m’);不管v为什么,只要e不是空字符串,则抛出e字符串错误,否则抛出m字符串错误;
assert.equal(a, e, [m]) 若a==e,则不抛出错误,否则抛出m错误;
assert.notEqual(a, e, [m]) 若a!=e,则不抛出错误,否则抛出m错误;
assert.deepEqual(a, e, [m])
1.采用==比较;
2.比较他们是否是Buffers,如果是则比较长度,接下来每字节每字节比较;
4.最后如果参数是Object对象,则比较他们的属性长度和属性值;
assert.notDeepEqual(a, e, [m]) 同上相反;
assert.deepStrictEqual(a, e, [m]) a===e,则不抛出错误,否则抛出m错误
assert.notDeepStrictEqual(a, e, [m]) a!==e,则不抛出错误,否则抛出m错误
assert.strictEqual(a, e, [m]) a===e,则不抛出错误,否则抛出m错误
assert.notStrictEqual(a, e, [m]) a!==e,则不抛出错误,否则抛出m错误
assert.throws(b, [error], [m]) 前两个为函数,b抛出错误,error捕获错误并检测错误,若错误不通过,可return true避免抛出错误;b不抛出错误则抛出m;
assert.doesNotThrow(b, [m])

buffer:
var buffer = require(“buffer”);
new Buffer(array|buffer|size|str)size是长度;str可声明encode格式,加在第二个参数,默认为utf8;
Buffer.byteLength(str,encode) 计算str的encode格式下的字节长度;
Buffer.isEncoding(encode) 检测是否为有效的编码参数
Buffer.compare(b1,b2) 把b1,b2做比较,b1>b2 return 1;b1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值