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 ...
随机推荐
- HTML5 Web Storage 特性
原文地址: Using HTML5 Web Storage 原文日期: 2010年06月28日 翻译日期: 2013年08月12日 当下Web开发领域最火爆的词语当属 HTML5.HTML5标准的新特 ...
- mixer: sql词法分析器设计
介绍 mixer希望在proxy这层就提供自定义路由,sql黑名单,防止sql注入攻击等功能,而这些的基石就在于将用户发上来的sql语句进行解析.也就是我最头大的词法分析和语法分析. 到现在为止,我只 ...
- GDAL中MEM格式的简单使用示例
GDAL库中提供了一种内存文件格式--MEM.如何使用MEM文件格式,主要有两种,一种是通过别的文件使用CreateCopy方法来创建一个MEM:另外一种是图像数据都已经存储在内存中了,然后使用内存数 ...
- Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。
1 布局文件, <LinearLayout 秒, 抛异常 conn.connect(); // 开始链接 int responseCode = conn.getResponseC ...
- android View层的绘制流程
还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得 ...
- MinerMonitorThread.java 监控线程
MinerMonitorThread.java 监控线程 package com.iteye.injavawetrust.miner; import org.apache.commons.loggin ...
- python一行写不下,变多行
python里一行写不下,拆成多行, \和() 两种方法 在一行末尾 加上" \",也就是空格加上\ a= 'sdfaf' \ 'test' 注意两个对象都要独立,字符串 ...
- android 优化之布局优化
布局优化的思路很简单,尽量减少布局文件的层级,看过系统源码的都知道,Android view绘制都是逐层绘制的,所以布局的层级少了,decodeview的时候绘制工作自然就少了. 那么如何进行布局的优 ...
- JVM 类的生命周期、类加载器
类的加载.连接与初始化 • 1. 加载:查找并加载类的二进制数据 • 2. 连接 – 2.1 验证:确保被加载的类的正确性 ...
- C语言函数strstr()分析及实现
原型:char *strstr(const char *str1, const char *str2); #include<string.h> 找出str2字符串在str1字符串中第一次出 ...