Node 学习笔记

Node 学习笔记
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一 Node 基础
  1. node 执行外部js 文件, cd 到所在文件夹, node hello.js ;
  2. 文件路径复杂, 可以在文件路径拦输入: cmd , 直接打开终端并带有路径;
  3. Node 是js 编写, 最初是为了高性能web服务器
二 模块化
  1. Node中, 一个js 文件就是一个模块,, 每一个js文件都是独立运行在一个函数中,不是全局作用域,一个模块中的变量喝函数在其他模块中无法访问
  2. ES5 有模块化, ES5 没有模块化系统,ES6 有模块化系统
  3. 引入外部模块: require()函数 , 传递路径作为参数, 必须以 ./ 或 …/ 开头, 该函数会返回一个对象, 这个对象代表引入的模块; module.js 的 .js 可以省略
var md = require( ' ../module.js  ' )
  1. 向外暴露属性或方法 exports
exports.x = '我是01module.js 中的 X '
exports.Y = '我是01module.js 中的 Y '
exports.fn= function(){       }
  1. 模块分为核心模块和文件模块。引入外部模块时,核心模块(npm,node提供)直接引入名字就好, 不需要写路径; 文件模块: 由用户创建的模块,文件模块的标识就是文件的路径(绝对路径, 相对路径)
  2. 在node 中有一个全局对象,作用和网页中的window类似, 在全局中创建的变量都会global的属性保存; 在全局中创建的函数都会作为global的方法保存;
  3. 怎么证明每一个js文件都是独立运行在一个函数中
当node 执行模块中的代码时, 
会首先在代码的最顶部,添加如下代码
function(exports,require,module,_filename,_dirname){
代码的最顶部,添加如下代码
  }
实际上模块中的代码都是包装在一个函数中执行的, 并且在函数执行时, 同时传递进来了5个实参:
exports
   - 该对象用来将变量和函数暴露到外部
require
   - 是一个函数, 用来引入外部的模块
module
   - module代表当前模块本身 
   - exports 就是module的属性
   - 既可以使用exports 导出, 也可以使用module.exports导出 ; module.exports === exports
_filename
   - 当前模块的完整路径
   -  ../hello/hello.js
_dirname
   - 当前模块所在文件夹的完整路径
   - ../ hello
怎么证明js 文件中的a 不是全局变量
var a = 10;
console.log(global.a).
此时a 不是全局变量
------------------------------
怎么让a 全局变量
a = 10 ;
console.log(global.a)
此时a 是全局变量
------------------------------
怎么证明每一个js文件都是独立运行在一个函数中,在js 文件中打印形参: 
console.log(arguments)
arguments.callee 属性保存的是当前执行的函数对象
console.log(arguments.callee)
  1. module.exports 和 exports ,本质上是一个对象, 但是通过 exports 只能使用 . 的方式 向外暴露内部变量;module .exports 既可以通过 . 的形式, 也可以直接赋值。栈内存 和堆内存,基本数据类型保存在栈内存,引用类型放在堆内存
- 这样可以,在修改对象
module.exports = {
name:'' 孙悟空 "
}
- 这样不行,在改变量
exports ={
	name:" 孙悟空 "
}

在这里插入图片描述
在这里插入图片描述

  1. 包结构:
package.json --整体描述文件(必不可少);
bin: --可执行二进制文件;
lib: --库, js代码 ;
doc: --文档-功能性的说明;
test: --单元测试;

  1. json 文件不能写注释
  2. NPM (node package manager)
npm -v 查看npm版本
npm version 查看所有模块版本
npm search 包名 搜索包
npm install / i  包名 安装包
npm remove / r  包名 删除包
npm install  包名 --save 安装包 并添加到依赖中 ****
npm install  下载当前项目所依赖的包 
npm install 包名 -g 全局安装 -- 全局安装的包一般都是一些工具
  1. CNPM
npm install -g cnpm --registry-https://register.npm.taobao.org
  1. Node 在使用模块名字(核心模块)来引入模块时, 他会首先在当前目录的node_modules中寻找是否含有该模块;如果有就使用, 如果没有则去上一级目录寻找;如果有则直接使用, 如果没有则再去上一级寻找,直到找到为止;知道找到磁盘的根目录, 如果依然没有, 报错;

  2. Buffer(缓冲区) 结构和数组很像,操作的方法和数组也很类似,数组中不能存储二进制文件, buffer就是用来存储二进制数据;使用buffer不需要引入模块, 直接使用即可;在buffer中存储的都是二进制数据,但是显示时, 都是16进制显示;buffer中每一个元素的范围: 00-ff,十进制:0-255,00000000-11111111; 计算机中,一个0,或一个1 ,我们称为一位 (1bit); 8bit = 1btye(z字节);1024byte = 1kb, 1024kb = 1mb ; buffer 中的一个元素占用内存1字节;一个英文字母1字节, 1个汉字3个字节;请添加图片描述
    buffer的长度不可以修改 ,是对底层内存的分配;只要数字在页面或者控制台输出就是十进制,除非转换成其他类型 toString(16)
    在这里插入图片描述
    在这里插入图片描述

  3. file system (文件系统)通过node操作系统中的文件,使用fs 需要先引入fs;fs 核心模块直接引入, 不用下载;fs 中的两种方法:同步和异步;同步会阻塞程序运行,只有在运行完成,才会继续向下执行; 异步不会阻塞, 执行完成后会通过回调函数返回;
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 简单文件写入
    在这里插入图片描述

  5. 流式文件写入 ; 可写流 ; 同步异步简单文件写入都不适合打文件写入,性能较差,容易导致内存溢出在这里插入图片描述

  6. 流式文件读取 在这里插入图片描述在这里插入图片描述
    流式文件读取适用于大文件
    在这里插入图片描述在这里插入图片描述
    简单方式: pipe
    在这里插入图片描述

  7. fs 的其他方法在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述21. 在这里插入图片描述

学习视频

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值