Buffer、核心API、npm
Buffer基本操作
Buffer对象是Node处理二进制数据的一个接口。它是Node原生提供的全局对象,可以直接使用,不需要require(‘buffer’)。
实例化
Buffer.from(array)
Buffer.from(string)
Buffer.alloc(size)
功能方法
Buffer.isEncoding() 判断是否支持该编码
Buffer.isBuffer() 判断是否为Buffer
Buffer.byteLength() 返回指定编码的字节长度,默认utf8
Buffer.concat() 将一组Buffer对象合并为一个Buffer对象
实例方法
write() 向buffer对象中写入内容
slice() 截取新的buffer对象
toString() 把buf对象转成字符串
toJson() 把buf对象转成json形式的字符串
核心模块API
路径操作
路径基本操作API(url)
文件操作
文件信息获取
读文件操作
写文件操作
目录操作
文件操作案例
app.js代码
/**
* node webServer
*
*/ // 引入文件
const http = require('http'); //http 模块
const fs = require('fs'); //fs 文件操作模块
const url = require('url'); //url url地址模块 // 操作
http.createServer((req, res) => {
// 设置 setHeader
// res.setHeader('content-type', 'text/html;charset=utf-8');
if (req.url == '/') {
// 先独取文件内容
let html = fs.readFileSync('./view/index.html', 'utf8')
// 响应内容
res.end(html);
} else if (req.url == '/create') {
let html = fs.readFileSync('./view/create.html', 'utf8')
// 响应内容
res.end(html);
} else if (req.url == '/bootstrap.css') {
let css = fs.readFileSync('./view/bootstrap.css', 'utf8')
// 响应内容
res.end(css);
} else {
let html = fs.readFileSync('./view/404.html', 'utf8')
res.end(html)
}
}).listen(3000, () => {
console.log('启动成功,访问地址:http://127.0.0.1:3000');
})
包
多个模块可以形成包,不过要满足特定的规则才能形成规范的包
NPM (node.js package management)
全球最大的模块生态系统,里面所有的模块都是开源免费的;也是Node.js的包管理工具。
npm包安装方式
本地安装
- npm i 包名 --save-dev
全局安装
- npm i 包名 -g
解决npm安装包被墙的问题
--registry
npm config set registry=https//registry.npm.taobao.org
cnpm
淘宝NPM镜像,与官方NPM的同步频率目前为10分钟一次
npm install -g cnpm –registry=https//registry.npm.taobao.org
使用cnpm安装包: cnpm install 包名
nrm
作用:修改镜像源
安装:npm install -g nrm
npm常用命令
安装包
- npm i 包名
更新包
- npm update
卸载包
- npm uninstall 包名
yarn基本使用
类比npm基本使用
自定义包
包的规范
package.json必须在包的顶层目录下
二进制文件应该在bin目录下
JavaScript代码应该在lib目录下
文档应该在doc目录下
单元测试应该在test目录下
package.json字段分析
name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数组,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email(可选)、web(可选)字段
contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一- 个元素
bugs:提交bug的地址,可以是网站或者电子邮件地址
licenses:许可证数组,每个元素要包含type(许可证名称)和url(链接到许可证文本的- 地址)字段
repositories:仓库托管地址数组,每个元素要包含type(仓库类型,如git)、url(仓- 库的地址)和path(相对于仓库的路径,可选)字段
dependencies:生产环境包的依赖,一个关联数组,由包的名称和版本号组成
devDependencies:开发环境包的依赖,一个关联数组,由包的名称和版本号组成
自定义包案例
模块:在node中就是一个文件
包:N个模块、目录、package.json等组成,然后发布,让别人require
需 求:发布formatTime包
步骤1:打开npmjs.com注册账号
步骤2:创建dev开发目录 -> 初始化 -> 修改package.json文件
步骤3:本地登录提交(切记提交自己的包必须切换到国外服务器,下载在切换过来)
npm login
npm publish
步骤4:测试(创建test开发目录,执行命令npm install webopenfather-format-time)
特此声明:如需转载请注明出处,如有疑问请及时提出以便于改正,如有侵权,联系删除,谢谢
Buffer、核心API、npm的更多相关文章
- Nodejs进阶:核心模块Buffer常用API使用总结
本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 模块概览 Buffer是node的核心模块,开发者可以利用它来处 ...
- 《Node.js高级编程》之Node 核心API基础
Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_m ...
- 支持GPS的核心API
Android为GPS功能支持专门提供了一个LocationManager类,它的作用于TelephonyManager.AudioManager等服务类的作用相似,所有GPS定位相关的服务.对象都将 ...
- hibernate系列笔记(2)---Hibernate的核心API
Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...
- APP自动化框架LazyAndroid使用手册(3)--核心API介绍
作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...
- SDL 开发实战(二):SDL 2.0 核心 API 解析
在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wol ...
- Spark2.0学习(三)--------核心API
Spark核心API----------------- [SparkContext] 连接到spark集群,入口点. [HadoopRDD] 读取hadoop上的数据, [MapPartitionsR ...
- hibernate框架(2)---Hibernate的核心API
Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...
- hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等
核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...
- Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...
随机推荐
- Scrapy笔记(1)- 入门篇
Scrapy笔记01- 入门篇 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说, ...
- lower_case_table_names=1 启动报错 mysql8.0
我们知道在 Linux 环境下默认是区分大小写的,所以我们需要改变这种默认方式,经过网上各种搜索后,基本就是清一色的修改 lower_case_table_names,然后信誓旦旦的去修改了,但是修改 ...
- 用!htrace调试句柄泄漏的一般步骤
Windbg调试器的!htrace扩展对于调试泄漏处理非常方便.该过程基本上可归结为以下简单步骤: 启用跟踪 拍张快照 情景分析 显示差异 在第四步!htrace将在最后一个快照之后显示所有额外打开的 ...
- 洛谷 P2253 好一个一中腰鼓! 题解
P2253 好一个一中腰鼓! 题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:"忽一人 ...
- [300iq Contest 1-D]Dates
传送门 Description 每个妹子匹配一个时间区间,每个时间最多选择\(a_i\)个妹子,每个妹子有一个快乐值,最大化总快乐值 Solution 贪心,从大往小取,能取则取 判断是否可以有完美匹 ...
- 将行数据转换成Java(POJO)对象
工作中经常会遇到将行数据转换成Java(POJO)对象的场景,其中关于字段校验和类型转换的处理繁琐而冗余,对于有代码洁癖的人着实不能忍.这里分享下自己封装的工具代码,也许能够帮助你更简单地完成此类任务 ...
- java连接redis中的数据查、增、改、删操作的方法
package com.lml.redis; import java.util.HashMap;import java.util.Iterator;import java.util.Map;impor ...
- vue本地静态图片的路径问题解决方案
不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败. 大部分的情况中,是开发者使用了错误的写法,例如: <img src="{{ imgUrl ...
- python 散点图上给每个点打标签方便看到数据
import numpy as np import matplotlib.pyplot as plt x=[2.3,4.5,3,7,6.5,4,5.3] y=[5,4,7,5,5.3,5.5,6.2] ...
- Sitecore 个性化 - 近距离和过于个人化?
Sitecore个性化为营销人员提供了前所未有的强大功能,可以创建引人入胜一旦您发现 营销个性化 错误,就很有可能使用您的新技能来定制您网站的各个方面.但强大的力量带来了巨大的责任.在这篇文章中,我将 ...