node笔记1

2 篇文章 0 订阅

1、通过在node里面运行 console.log(arguments.callee+"")(后面加上字符串是为了转化为string类型)

function (exports, require, module, __filename, __dirname) {
	console.log(arguments.callee+"")
}

说明在node里面始终是函数作用域,在node里面有一个全局对象global,它的作用和网页中的window类似,
当node在执行模块中的代码时他会在上下加入函数

function (exports, require, module, __filename, __dirname) {
	
}
		exports:该对象,将函数作用域的东西暴露出去
		require:函数,引入外部模块的东西
		module:	函数本身,在导出时使用exports.name="zhangsan"和module.exports.name="zhangsan";是一样的
		
		__filename:'C:\\Users\\Alan\\WebstormProjects\\nodeText\\a.js'		
		文件的路径
		__dirname:'C:\\Users\\Alan\\WebstormProjects\\nodeText';		
		文件所在文件夹的路径

2 node中通过require来引入模块,模块里面的内容为函数作用域,引用后 直接拿不到
需要将变量exports,后面引入后才能使用; 如

math.js:
   exports.add=function(a,b){ 	
   	return  a+b;
    } 	
    a.js:
    var math=require('./math.js'); 
    var math=require('./math'); 
    	 这两种写法都对 
    math.add(12,34);
   模块分两种: 		
   	核心模块 :node自带或者npm自己下载的模块

					var fs=require('fs');
					直接引入,不用写路径
		文件模块:用户自己创建的模块
					var math=require('./math.js');
					需要引入文件的路径(绝对路径、相对路径)

3、module.exports和exports的关系:

 var module=new object();
 var exports=module.exports;将exports的内存地址指向module.exports的地址
 exports.name="Xx";通过 . 的方式能够改变module.exports.name的值,
 但是不能直接exports={}创建对象(对象能创建成,但是不能存东西)
只能通过module.exports={}的形式创建对象;

当多个属性需要导出的话,我们用module.exports={
     name:"xxx",
     say:function () {
        console.log("说出我的名字")
     }
}
最后return 返回的是module.exports

3+、

导出多个元素
	exports.s='aaa'
	exports.a='bbbb'
	exports.c='cccc'
	module.exports.d='adadadadada'
结果:
	{ s: 'aaa', a: 'bbbb', c: 'cccc', d: 'adadadadada' }

但是一旦导出对象就会把前面的覆盖

	exports.s='aaa'
	exports.a='bbbb'
	exports.c='cccc'
	module.exports.d='adadadadada'
	module.exports=function(){
	    cc:'aa'
	}
	module.exports={
	    ad:'nihao '
	}
console:
	{ ad: 'nihao ' }

exports指向的是module.exports的内存地址,只要exports不改变内存地址,exports能改变module.exports的值,可以一同导出,一但exports改变内存地址,expors改动的值就和导出的值没有关系了

	module.exports.s='adadadadada'
	exports.s='ccc'
	exports=function () {
	    console.log("aa")
	}
	exports.a='bbb'
console:
	{ s: 'ccc' }

4、npm的命令

  1. npm -v 查看npm版本
  2. npm search 包名 搜索包
  3. npm install / i 包名 安装包
  4. npm install 包名 - g 全局安装包(全局安装包一般都是一些工具)
  5. npm remove / r 包名 删除包
  6. npm install 下载当前项目所依赖的包

5、buffer缓冲区

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

		 1. 创建一个长度为 10、且用 0 填充的 Buffer。
		const buf1 = Buffer.alloc(10);
	
		2、创建一个包含 [0x1, 0x2, 0x3] 的 Buffer。
		const buf4 = Buffer.from([1, 2, 3]);

6、同步文件写入

fs.openSync(path[, flags, mode])
[ 里面的东西为选填]
path:为文件的路径
flag:默认为r:打开文件用于读取。如果文件不存在会异常 w:打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件。
mode设置文件的操作权限

fs.writeSync(fd, string[, position[, encoding]])
fd为文件
string为写入的内容
position为写入的开始位置
enconding为结束位置

fs.closeSync(fd)
fd为关闭的文件名字

var fs=require("fs");//fs文件系统
var fd=fs.openSync("node.txt","w");
fs.writeSync(fd, "写入测试",4);
fs.closeSync(fd)

7、


var fs=require("fs");                                                                                                                                 
fs.open("hello.txt","w",function(err,fd) {                                                                                                           
        if (!err){                                                                                                                                    
            console.log("文件已打开")                                                                                                                      
            fs.write(fd,"文件写入的内容",function(err) {                                                                                                   
                    if (!err){                                                                                                                        
                            console.log("文件写入完成");                                                                                                    
                    }                                                                                                                                 
                    fs.close(fd,function(err) {                                                                                                      
                        if (!err){                                                                                                                    
                               console.log("文件已经关闭")                                                                                                  
                        }                                                                                                                             
                    })                                                                                                                                
            })                                                                                                                                        
        }                                                                                                                                             
})                                                                                                                                                    
console.log("程序向下执行");           

在这里插入图片描述
8、写入简单文件
在这里插入图片描述

//简单文件写入

  var fs=require("fs");
fs.writeFile("hello.txt","这是我们写入的内容",function (err) {
        if (!err){
            console.log("写入成功")
        }
})
一般options都不填为默认,

当 flag 选项采用字符串时,则以下标志均可用:

'a': 打开文件用于追加。 如果文件不存在,则创建该文件。

'ax': 类似于 'a',但如果路径存在,则失败。

'a+': 打开文件用于读取和追加。 如果文件不存在,则创建该文件。

'ax+': 类似于 'a+',但如果路径存在,则失败。

'as': 打开文件用于追加(在同步模式中)。 如果文件不存在,则创建该文件。

'as+': 打开文件用于读取和追加(在同步模式中)。 如果文件不存在,则创建该文件。

'r': 打开文件用于读取。 如果文件不存在,则会发生异常。

'r+': 打开文件用于读取和写入。 如果文件不存在,则会发生异常。

'rs+': 打开文件用于读取和写入(在同步模式中)。 指示操作系统绕过本地的文件系统缓存。

这对于在 NFS 挂载上打开文件时非常有用,因为它可以跳过可能过时的本地缓存。 它对 I/O 性能有非常实际的影响,因此不建议使用此标志(除非真的需要)。

这不会把 fs.open() 或 fsPromises.open() 变成同步的阻塞调用。 如果需要同步的操作,则应使用 fs.openSync() 之类的。

'w': 打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件。

'wx': 类似于 'w',但如果路径存在,则失败。

'w+': 打开文件用于读取和写入。 如果文件不存在则创建文件,如果文件存在则截断文件。

'wx+': 类似于 'w+',但如果路径存在,则失败。
                     

9、流式文件的写入

//流式文件写入
    var fs=require("fs");
    var ws=fs.createWriteStream("hello2.txt");
    ws.once("open",function () {
        console.log("流开启了")
    })
    ws.once("close",function () {
        console.log("流关闭了")
    })
    ws.write("congtuletions");
    ws.write("1111");
    ws.write("222");
    ws.close();
    // ws.end();                 

10、简单的文件读取

//简单文件读取
    var fs=require("fs");
    fs.readFile("node.txt",function (err,data) {
        if (!err){
            console.log("文件读取成功")
            fs.writeFile("a.txt",data,function (err) {
                if (!err){
                    console.log("文件写入成功")
                }
            })
        }

    })
    var a=fs.readFileSync("node.txt");
    fs.writeFileSync("b.txt",a);

11、流文件的读取

//流文件读取
    var fs=require("fs");
    var rs=fs.createReadStream("a.txt");
    var ws=fs.createWriteStream("d.txt");
    rs.on("data", function (data) {
        ws.write(data);
    })
    ws.close();
    // rs.pipe(ws);
    使用on和pipe效果是一样的
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值