简介
Node-ip-address 是一个基于 Node.js 的 IP 地址解析和展示工具,它可以帮助前端开发人员处理 IP 地址相关的问题,例如检测 IP 地址类型、判断 IP 地址是否在某个子网内、获取 IP 地址归属地等等。
本文将介绍如何使用 node-ip-address 进行 IP 地址解析和展示,并提供示例代码。
安装
Node-ip-address 是一个 npm 包,因此可以使用 npm 安装:
npm install node-ip-address
安装完成之后,可以在项目中引入 node-ip-address:
const ipaddr = require('node-ip-address');
解析 IP 地址
node-ip-address 提供了多种函数来解析 IP 地址,如下所示:
ipaddr.parse(ip)
解析一个 IP 地址字符串并返回一个表示该 IP 地址的对象。
示例代码:
const ipaddr = require('node-ip-address'); const ip = '192.168.0.1'; const ipObj = ipaddr.parse(ip); console.log(ipObj); // { kind: 'ipv4', address: [192, 168, 0, 1] }
ipaddr.fromByteArray(bytes)
根据一个字节数组返回一个表示该 IP 地址的对象。
示例代码:
const ipaddr = require('node-ip-address'); const bytes = [192, 168, 0, 1]; const ipObj = ipaddr.fromByteArray(bytes); console.log(ipObj); // { kind: 'ipv4', address: [192, 168, 0, 1] }
ipaddr.fromGroup(group)
根据一个 IP 地址分组返回一个表示该 IP 地址的对象。IP 地址分组是指将一个 IP 地址字符串按照点号(IPv4)或冒号(IPv6)进行分组,例如 '192.168.0.1'
分组后就是 [192, 168, 0, 1]
。
示例代码:
const ipaddr = require('node-ip-address'); const group = [192, 168, 0, 1]; const ipObj = ipaddr.fromGroup(group); console.log(ipObj); // { kind: 'ipv4', address: [192, 168, 0, 1] }
ipaddr.isValid(ip)
判断一个 IP 地址字符串是否是合法的 IP 地址。
示例代码:
const ipaddr = require('node-ip-address'); const ip = '192.168.0.1'; const isValid = ipaddr.isValid(ip); console.log(isValid); // true
ipaddr.isIPv4(ip)
判断一个 IP 地址字符串是否是 IPv4 地址。
示例代码:
const ipaddr = require('node-ip-address'); const ip = '192.168.0.1'; const isIPv4 = ipaddr.isIPv4(ip); console.log(isIPv4); // true
ipaddr.isIPv6(ip)
判断一个 IP 地址字符串是否是 IPv6 地址。
示例代码:
const ipaddr = require('node-ip-address'); const ip = '2001:0db8:85a3:0000:0000:8a2e:0370:7334'; const isIPv6 = ipaddr.isIPv6(ip); console.log(isIPv6); // true
ipaddr.parseCIDR(cidr)
解析一个 CIDR 表示法(Classless Inter-Domain Routing,无类域间路由)字符串,返回一个包含 IP 地址及其子网掩码的对象。
示例代码:
const ipaddr = require('node-ip-address'); const cidr = '192.168.0.0/24'; const cidrObj = ipaddr.parseCIDR(cidr); console.log(cidrObj); // { kind: 'ipv4', address: [192, 168, 0, 0], subnetMask: [255, 255, 255, 0] }
操作 IP 地址
node-ip-address 提供了多种函数来操作 IP 地址,如下所示:
ipaddr.subnetMatch(ip, cidr)
判断一个 IP 地址是否在一个 CIDR 子网中。
示例代码:
const ipaddr = require('node-ip-address'); const ip = '192.168.0.1'; const cidr = '192.168.0.0/24'; const isMatched = ipaddr.subnetMatch(ip, cidr); console.log(isMatched); // true
ipaddr.toNormalizedString(ip)
将一个 IP 地址对象转换为标准的 IP 地址字符串。
示例代码:
const ipaddr = require('node-ip-address'); const ipObj = { kind: 'ipv4', address: [192, 168, 0, 1] }; const ipStr = ipaddr.toNormalizedString(ipObj); console.log(ipStr); // '192.168.0.1'
ipaddr.isValidTransition(fromIp, toIp)
判断一个 IP 地址是否可以转换为另一个 IP 地址。
示例代码:
const ipaddr = require('node-ip-address'); const fromIp = '192.168.0.1'; const toIp = '192.168.1.1'; const isValid = ipaddr.isValidTransition(fromIp, toIp); console.log(isValid); // false
获取 IP 地址归属地
node-ip-address 并不自带获取 IP 地址归属地的功能,但是我们可以借助第三方服务来实现这个功能,例如 ip138。
示例代码:
-- -------------------- ---- ------- ----- ----- - ----------------- ----- ------- - ------------------- ----- ------ - --------------------------- ----- -------- ----------------- - ----- --- - ------------------------------------------------------- --- - ----- -------- - ----- --------------- ----- - - ---------------------------- ----- ---- - ---------- ----- ----- --------------- ------------------- ------ ---- -- ---------- - ----- ------- - --------------------- ------ ---------- - - ----- -- - ---------- --------------------------------- -- - ---------------------- -- ---------------------- ---
总结
本文介绍了 npm 包 node-ip-address 的使用方法,包括 IP 地址解析和展示、IP 地址操作、以及获取 IP 地址归属地。使用 node-ip-address 可以轻松处理 IP 地址相关的问题,让前端开发人员更加高效地完成项目。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5e51ab1864dac67168