Node.JS第二讲笔记

简介: Node.JS第二讲笔记


package包

包结构

包其实就是一个压缩文件,解压之后还原为目录,符合规范的目录,应该包含如下文件:

  • package.json:描述文件
  • bin:可执行的二进制文件
  • lib:Js代码
  • doc:文档
  • test:测试文件

包描述文件package.json

1.包描述文件用于表达非代码的相关信息,它是一个json格式的文件-package.json,位于包的根目录下,是包的主要组成部分

2.包中的主要字段

name  description version  keywords maintainer contributors bugs licenses repositories dependencies  homepage os cpu engine builtin directoies implements  scripts author bin main devDependencies

NPM(Node Package Manage)

介绍说明

1.CommonJs包规范是理论,NPM是一种实践

2.对于Node而言,NPM帮助起完成了第三方模块的发布、安装和以来等,NPM就是管理下载一些东西的。

NPM的命令

1.npm -v:版本

2.npm search 包名:搜索模块包

3.npm install 包名:安装包名

4.npm install 包名 -g:全局模式安装包(全局安装的包一般都是工具,计算机的工具,比如编辑CSS,JS文件)

初始化

命令:npm init,后面直接回车即可,然后就会发现本地多了个package.json文件

安装包

命令:npm install math,回车即可下载,下载完了之后多了个node_modules文件夹

在index.js中引入模块

直接在index.js中写如下代码:

var math = require("math");
console.log(math.add(1,1));

DOS直接执行:

node index.js
执行结果为:2(1+1的和)
删除包名

命令:npm remove 包名

package-lock.json文件

通过该文件绑定依赖

安装并保存依赖

命令:

npm install math --save

执行完之后在package.json中会多了一个键dependencies,依赖

CNPM

中国的npm,阿里镜像,需要安装阿里镜像,命令如下:

npm install -g cnpm --registry=https://registry.npm.taobao.org

####总结

  1. 通过NPM下载的包都放到node_modules文件夹中
  2. 通过NPM下载的包直接通过包名引入
  3. 如果删除了下载的包,执行引入代码时,Node会从文件上一级去寻找,一直找到相应的包,否则报错

Buffer缓冲区

1.从结构上看Buffer非常像一个数组,他的元素为16进制2位数,传统的数组并不能保存二进制数据,而Buffer就是专门保存二进制的数据

2.实际上一个元素就表示内存中的一个字节

3.实际上Buffer中的内存不是通过JavaScript分配的,而是在底层C++申请的

4.我们可以通过Buffer来创建内存中的空间

使用Buffer

1.不需要引入任何的模块,直接使用,就像内置对象一样。

eg:

var str = "hello";
var buf = Buffer.from(str);
console.log(buf);

运行结果:

<Buffer 48 65 6c 6c 6f>
var str = "hello";
console.log(buf.length);  //当前字符占内存的大小  结果为5
console.log(str.length);  //字符串的长度 结果为5
var str = "你好";
console.log(buf.length);  //字符串的长度 结果为6,一个汉字占3byte

创建指定大小的Buffer:

var buf = new Buffer(1024);   //1024字节,也就是1kb

这种方式已经废弃了.

用下面的这一种:

var buf = Buffer.alloc(1024);

另一种方式

var buf1 = Buffer.allocUnsafe(10);
console.log(buf1);

运行结果:

<Buffer b0 3d bb 97 00 02 00 00 b0 44>

区别:

  • alloc:相当于自习课上,上完之后人走了之后书也拿走了
  • allocUnsafe:相当于自习课上,上完之后人走了之后书没有拿走,有残留
API文档地址

http://nodejs.cn/api/  中文文档地址

存放数据
var buf = Buffer.alloc(10);
buf[0] = 0xaa;
buf[1] = 12;
buf[2] = 255;
console.log(buf);

运行结果:

<Buffer aa 0c ff 00 00 00 00 00 00 00>

如果写buf[10]的话,即使越界了也不会报错,但是也不会显示出来

文件系统

简单来说文件系统就是通过node来操作系统中的文件

同步文件的写入

1.打开文件

//fs.openSync(path,flags{,model})  语法
//引入
var fs = require("fs");
//打开文件
var fd = fs.openSync("hello.txt","w");
//console.log(fd); //返回3,证明打开成功
fs.writeSync(fd,"今天周五",3);
fs.close(fd);

执行之后会自动在当前文件夹下面创建hello.txt文件,里面添加内容:今天周五

fs.writeSync(fd,"今天周五",3);  3表示前面的空格。

2.向文件流中写入内容

3.保存或者关闭文件

异步文件的写入

实例:

var fs = require("fs");
fs.open("info.txt","w",function(err,fd){
 console.log(err);
 if(!err){
  fs.write(fd,"今天好开心",function(err,fd){
   if(!err){
    console.log("写入成功");
    fs.close(fd);
   }else{
    console.log("写入失败");
    fs.close(fd);
   }
  });
 }else{
  console.log(fd);
 }
});
目录
相关文章
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
5天前
|
JSON 关系型数据库 MySQL
node笔记_读取目录的文件
node笔记_读取目录的文件
16 1
|
5天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
75 0
|
5天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
35 0
JavaScript高级笔记-coderwhy版本(一)
|
5天前
|
JavaScript 前端开发 索引
JavaScript随手笔记---对比数组差异
JavaScript随手笔记---对比数组差异
JavaScript随手笔记---对比数组差异
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
|
5天前
|
JSON JavaScript 前端开发
JavaScript随手笔记---数组中相同的元素进行分组(数据聚合) groupBy函数
JavaScript随手笔记---数组中相同的元素进行分组(数据聚合) groupBy函数
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记---保留小数位
JavaScript随手笔记---保留小数位
|
5天前
|
JavaScript 前端开发
JavaScript之字符串系列(菜菜笔记)
JavaScript之字符串系列(菜菜笔记)