node中文网http://nodejs.cn/api/buffer.html#buffer_class_method_buffer_allocunsafe_size
node学习第一天
md hello 新建文件夹hello
rd hello 删除文件夹
cd …
dir
1.环境变量
系统中的变量系统中的变量
当在命令窗口中打开文件时 现在当前文件中找文件 然后再去环境变量 path的路径中寻找 可以将经常用的文件路径放到环境变量中 这样可以在cmd中一下就能访问
2.进程和线程
进程:为程序的运行提供必备的环境
进程就相当于工厂中的车间
线程:负责执行保存在进程中的程序(相当于工人–干活的)
3.单线程多线程(一个人干活 多个人干活)
4.node.js
js是在客户端浏览器执行的 node在服务器中运行和系统(windows等)进行交互—后端
node学习第二天
commonjs 模块化规范
引入外部模块(require)相对路径 02module.js 必须以. 开头 或者… 开头
通过exports的属性向外暴露成员
console.log('模块1');
let x = 20;
let y = 30;
// 想暴露变量给宁一个模块必须使用exports向外部暴露
exports.x = x ;
let md = require('./module1.js');
console.log(md);
暴露2个方法
exports.add = function(x,y){
return x+y
}
exports.sub = function(x,y){
return x-y
}
使用
let md = require('./module1.js');
console.log(md.add(3,4));
核心模块–node自带 文件模块自定义
require(‘fs’)
全局变量 – global 变量
node中没有window对象 —相等于window
arguments 函数的实参 伪数组 arguments.callee 函数
模块中的变量是在一个函数中执行的,一个js 模块文件都会生成如下的函数
function (exports, require, module, __filename, __dirname) {
let x = 20;
let y = 30;
console.log(arguments.callee+'');
exports.add = function(x,y){
return x+y
}
exports.sub = function(x,y){
return x-y
}
}
module.exports==exports true 指向同一个对象
module模块对象
F:\笔记\code>node module2.js __filename 文件名称
F:\笔记\code\module1.js F:\笔记\code __dirname 所在文件夹名称
module.exports 和 exports 区别
module.exports={
name:'',
age:23
}
module.exports 都可以
exports只能通过. 暴露成员
包的使用
npm node包管理器
npm search math 搜索与数学相关的包
node 第三天
buffer缓冲区
buffer和数组基本相同,为啥还要弄buffer—弥补数组的不足
node服务器运行 不仅需要字符串 还需要二进制文件 包括视频图片 数组不可以存储二进制数据,而且性能比传统数组好很多,buffer存储的都是二进制数据,但是显示时都是以16进制显示的
如何创建buffer
let str = 'hello buffer';
// 将字符串存在buffer中
let buf = Buffer.from(str);
console.log(buf);
buffer一个元素占一个字节 二进制 00000000-11111111 超出后会截取后面的
输出后是展示10进制
let str = 'hello buffer';
// 将字符串存在buffer中
let buf = Buffer.from(str);
console.log(buf);
// 如何创建10个字节的buffer
let buffer2 = Buffer.alloc(10);
console.log(buffer2);
buffer2[2]=55;
console.log(buffer2);
// buffer 大小确定长度后就不能修改了数组的元素存放是连续的
let buffer3 = Buffer.allocUnsafe(10);
console.log(buffer3);
buffer.alloc 和 buffer.allocUnsafe 区别
alloc 分配内存后会把之前使用的内存数据清空 allocUnsafe 之前使用的可能不会被清空还是上次别人使用的内存数据
如何将数据转化成二进制
Buffer.from 字符串转化成二进制
toString 二进制转化成字符串
http://nodejs.cn/api/buffer.html#buffer_class_method_buffer_allocunsafe_size
文件系统
文件的写入
打开文件
fs.openSync(path[, options])
path打开路径
flags: 写还是读
写入文件 fs.writeSync;
fs.closeSync(fd)关闭文件
// 文件系统
let fs= require('fs');
// 同步 异步
// 文件写入 同步
// 打开文件
let f= fs.openSync('hello.txt','w');
// 写入
fs.writeSync(f,'创建第一个文件');
// 关闭文件
fs.closeSync(f);
异步写入
// 异步写入
fs.open('hello1.txt','w',function(err,fd){
if(!err){
fs.write(fd,'异步写入ee',function(err){
if(!err){
console.log('写入成功')
}
fs.close(fd,function(err){
})
})
}
});
简单文件写入
fs.writeFile fs.writeFile(file, data[, options], callback)
fs.writeFile('hello1.txt','writeFile写的',function(err){
if(!err){
console.log('hhaha')
}
})
fs.writeFile('hello1.txt','writeFile写的1',{flag:'a'},function(err){
if(!err){
console.log('hhaha')
}
})
fs.writeFileSync
// 追加 flag w 重写 r 读取 a 追加
流式文件写入
fs.createReadStream(path[, options])
fs.createReadStream
// 流式写入
let ws = fs.createWriteStream('hello3.txt');
ws.once('open',function(){
console.log('文件流打开')
})
ws.write('可写入文件流');
ws.write('可写入文件流');
ws.write('可写入文件流');
ws.write('可写入文件流');
// 关闭流
ws.end();