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);
 }
});


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