node八-核心模块、包
学会查API,远比会几个API更重要。
核心模块意义
-如果只是在服务器运行javascript代码,并没有多大意义,因为无法实现任何功能>读写文件、访问网络
-Node的用处在于它本身还提供可一系列功能模块,用于与操作系统互动
-核心的功能模块在node中内置
常见核心模块
-path:处理文件路径
-fs:操作文件系统
-child_process:新建子进程
-util:提供一系列实用小工具
-http:提供http服务器功能
-url:用于解析URL
-querystring:解析URL中的查询字符串
-crypto:提供加密、解密功能
包的概念>NPM
什么是包
-由于node是一套轻内核的平台,虽然提供了一系列的内置模块,但是不能满足开发者的需求,于是出现了包的概念
-与核心模块类似,就是将一些预先设计好的功能或者API封装到一个文件夹,提供给开发者使用
包加载机制
-现在系统核心(优先级别最高)的模块中找 > 不要创建一些和现有的包重名的包
-然后再到当前目录node_modules目录中找
PATH > 路径操作模块
-在文件操作的过程中,都必须使用物理路径(绝对路径)
-相关API
--path.join([p1],[p2],[p3]) >> 连接多个路径
--path.basename(p,ext) >> 获取文件名,不包括后缀
--path.basename(p) >> 获取文件名,包括后缀
--path.dirname(p) >> 获取文件夹路径
--path.extname(p) >> 获取文件扩展名
--path.relative(from,to) >> 获取从from到to的相对路径
--path.delimiter >>获取不同操作系统中默认的路径分隔符。window是";"分号,Linux是":"冒号
--process.env 内部有一个path属性,其对应的就是环境变量
--path.parse(pathString) >> 将一个路径字符串转换为一个对象(包含文件目录,文件名,扩展名)
--path.format(pathObject) >> path.parse(pathString)相反
--path.isAbsolute(p) >> 判断一个路径是否是绝对路径
--path.normalize(p) >> 常规化路径--将一个书写不规范的路径转换成符合规范的路径
FS > 文件读取
-fs模块对文件的几乎所有操作都有同步和异步两种形式
--eg:readFile() 和 readFileSync()
-区别:
--同步调用会阻塞代码的执行,异步则不会
--异步调用会将读取任务下达到任务队列,知道任务执行完成才会回调
--异常处理区别,同步必须使用 try catch方式,异步可以通过回调函数的第一个参数
-代码测试案例

测试结果

--注意点:
---不论是同步还是异步,都会在其方法内设置编码格式,若不设置编码格式能输出结果是

输出结果则是以buffer的形式读取。读取文件时没有指定默认编码,默认读取的是一个Buffer(缓冲区)
什么是缓冲区
-缓冲区就是内存中操作数据的容器
-只是数据容器而已
-通过缓冲区可以很方便的操作做二进制数据
-而且在打文件操作时必须有缓冲区
为什么要有缓冲区
-JS是比较擅长处理字符串,但是早期的应用场景主要用于处理HTML文档,不会有太大篇幅的数据,也不会接触到二进制的数据。
-而在Node中操作数据、网络通信是没办法完全以字符串的方式操作的,所以在node中引入了一个二进制的缓冲区实现buffer
创建缓冲区
-创建长度为4个字节的缓冲区
-- var buffer = new Buffer(4);
-通过指定数据内容的方式创建
--var buffer = new Buffer([00,11]);
-通过指定编码的方式创建
--var buffer = new Buffer('nodon','utf8');
node八-核心模块、包的更多相关文章
- Node.js核心模块_全局变量、util学习
全局对象 javascript的全局对象是window,他及其所有属性都可以在程序的任何地方访问.即全局变量. 而在node中全局对象是global,所有全局变量都是global对象的属性,包括其本身 ...
- Node.js核心模块-fs文件系统
fs是file-system的简写,文件系统的意思.在Node中如果想要进行文件操作,就必须引入fs这个核心模块. 引入 const fs = require('fs') fs.readFile(pa ...
- node.js核心模块
全局对象 global 是全局变量的宿主 全局变量 在最外层定义的 全局对象的属性 隐士定义的变量(未定义直接赋值的变量) 当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然 注意: ...
- 【node】node的核心模块---http模块,http的服务器和客户端
nodejs事件机制 ##### http服务器和客户端 node.js标准库提供了http模块,其中封装了一个高效的http服务器和一个简易的http客户端 HTTP服务器 1. http.crea ...
- node的核心模块path
//导入模块path var path=require("path"); //path.basename :输出文件名+后缀 //console.log(path.basename ...
- Node.js核心模块-http
通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 ...
- 10.Node.js核心模块
1.全局对象2.常用工具3.事件机制4.文件系统访问5.HTTP服务与客户端 一.全局对象(Global Object), 与window对象一样 process ==> 全局变量, 描述当前N ...
- Node.js核心模块API之文件操作
参考:https://www.runoob.com/nodejs/nodejs-fs.html 异步I/O 1,文件操作 2,网络操作 在浏览器中也存在异步操作 1,定时任务 2,事件处理 3,Aja ...
- Node.js核心模块-net
net.Socket 类 socket.remotePort 访问服务器的远程端口 const http = require('http'); const server = http.createSe ...
随机推荐
- STL:vector容器用法详解
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着ve ...
- Chipmunk僵尸物理对象的出现和解决(二)
如第一篇文章中图片所示,该游戏是一个弹球游戏. 玩法很简单,屏幕底部有一个反弹棒,用来确保小球不掉出屏幕同时反弹小球撞击屏幕上方的砖块. 玩家可以触摸屏幕来左右移动反弹棒. 等等!还不是这么简单,当小 ...
- Python基础 语法特别注意笔记(和Java相比)
Python变量和数据类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...
- OC语言实现中等难度通讯录
实现中等难度通讯录.需求: 1.定义联系⼈人类Contact.实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写).性别.电话号码. 住址.分组名称.年龄.⽅方法:⾃自定义初始化⽅方法(姓名.电话号码).显⽰示 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- 用CSS指定外部链接的样式
大部分的信息类网站,比如维基百科,都会对外部链接(<a>标签)指定特定的样式.作为用户,一眼就知道该链接是指向另一个站点的资源是很好的体验.许多网站在服务器端做外部链接检查,添加一个`re ...
- AngularJS进阶(二十七)实现二维码信息的集成思路
AngularJS实现二维码信息的集成思路 赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,与君共勉! 注:点击此处进行知识充电 ...
- STL常用遍历算法for_each和transform的比较
for_each()和transform()算法比较 1)STL 算法 – 修改性算法 for_each() copy() copy_backward() transform() merge ...
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
批量梯度下降是一种对参数的update进行累积,然后批量更新的一种方式.用于在已知整个训练集时的一种训练方式,但对于大规模数据并不合适. 随机梯度下降是一种对参数随着样本训练,一个一个的及时updat ...
- Gradle 1.12用户指南翻译——第三十九章. IDEA 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...