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中写如下代码:

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


DOS直接执行:

1. node index.js
2. 执行结果为: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:

1. var str = "hello";
2. var buf = Buffer.from(str);
3. 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);


另一种方式

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



运行结果:

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



区别:


  • alloc:相当于自习课上,上完之后人走了之后书也拿走了


  • allocUnsafe:相当于自习课上,上完之后人走了之后书没有拿走,有残留



API文档地址

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


存放数据

1. var buf = Buffer.alloc(10);
2. buf[0] = 0xaa;
3. buf[1] = 12;
4. buf[2] = 255;
5. 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);
 }
});


目录
相关文章
|
2月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
2月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
12天前
|
JSON 关系型数据库 MySQL
node笔记_读取目录的文件
node笔记_读取目录的文件
14 1
|
2月前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
74 0
|
2月前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
35 0
JavaScript高级笔记-coderwhy版本(一)
|
2月前
|
JSON JavaScript 前端开发
Node.JS第二讲笔记
Node.JS第二讲笔记
32 0
|
2月前
|
JavaScript 前端开发 索引
JavaScript随手笔记---对比数组差异
JavaScript随手笔记---对比数组差异
JavaScript随手笔记---对比数组差异
|
2月前
|
JavaScript 前端开发
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
JavaScript随手笔记---轮播图(点击切换)
|
2月前
|
JSON JavaScript 前端开发
JavaScript随手笔记---数组中相同的元素进行分组(数据聚合) groupBy函数
JavaScript随手笔记---数组中相同的元素进行分组(数据聚合) groupBy函数
|
2月前
|
JavaScript 前端开发
JavaScript随手笔记---保留小数位
JavaScript随手笔记---保留小数位