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);
 }
});
相关文章
|
7月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
56 0
|
1月前
|
自然语言处理 JavaScript 前端开发
[JS]同事看了我做的this笔记,直摇头,坦言:我还是参考启发博文吧
本文介绍了JavaScript中`this`关键字的重要性和使用规则。作者回顾了早期笔记,总结了`this`指向的各种情况,并分享了最新的理解。文章强调了`this`在不同上下文中的指向,包括对象方法、全局函数、箭头函数等,并提供了改变`this`指向的方法。适合JavaScript开发者参考。
49 2
|
3月前
|
JavaScript 前端开发 Java
JavaScript笔记(回顾一,基础知识篇)
JavaScript基础知识点回顾,包括语言定义、ECMAScript规范、字面量、变量声明、操作符、关键字、注释、流程控制语句、数据类型、类型转换和引用数据类型等。
JavaScript笔记(回顾一,基础知识篇)
|
4月前
|
存储 缓存 自然语言处理
深入理解JS | 青训营笔记
深入理解JS | 青训营笔记
44 0
|
6月前
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
149 1
|
6月前
|
数据采集 存储 编解码
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
108 0
|
6月前
|
Web App开发 JavaScript iOS开发
技术笔记:js数组定义和方法(包含ES5新增数组方法)
技术笔记:js数组定义和方法(包含ES5新增数组方法)
|
6月前
|
JavaScript BI
技术笔记:JS获取子节点、父节点和兄弟节点的方法实例总结
技术笔记:JS获取子节点、父节点和兄弟节点的方法实例总结
110 0
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的笔记记录分享网站附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的笔记记录分享网站附带文章源码部署视频讲解等
40 0