• 天下之事不难于立法,而难于法之必行。一一明·张居正

让电话号处理变得“Awesome”!深度体验 @grantila/awesome-phonenumber 的极简与高效

在现代应用开发中,处理和验证电话号码是常见但却容易“踩坑”的细节:格式多样、地区差异、正则复杂、依赖臃肿……你是否也为此头疼?现在,有一个“轻量级神器”能让这一切变得极其简单和高效——@grantila/awesome-phonenumber


什么是 @grantila/awesome-phonenumber?

它是一个基于 Google libphonenumber 的预编译版本,专为 Node.js 和前端环境设计,拥有更简洁的接口、极小的体积、无依赖,并且支持 TypeScript。
简而言之,它就是你能在 npmjs 上找到的最小巧实用的 libphonenumber 封装库!

主要特色

  • 超小体积,无依赖:极大节省你的项目空间,运行速度快,加载迅速。
  • API简洁易用:新版 API 更加清晰,无需复杂构造或函数调用,错误处理也更友好(不抛异常)。
  • TypeScript 原生支持:随包附带类型定义,现代开发无忧。
  • findNumbers( ) 强力文本提取:能够直接从文本中批量提取所有电话号码,这是原版和同类库都不具备的实用功能!
  • 支持短号解析:不仅能处理标准手机号,还能支持类似服务号、紧急号码等短号场景。
  • 无需 closure compiler:预编译架构让它可以直接用于 webpack 或浏览器等各类前端环境。

为什么选择 awesome-phonenumber?

性能对比一览

操作 awesome-phonenumber google-libphonenumber libphonenumber-js
加载库时间 7.82 ms ✅ 14.28 ms 14.53 ms
首次解析 2.00 ms 1.86 ms 1.65 ms ✅

不仅加载快,解析速度也几乎不输同类库,尤其是在首次加载时优势明显!

其它优势

  • 易集成:无需任何依赖,require()/import 即用,适合所有 Node 和 Web 项目。
  • 不臃肿:不“污染”你的 node_modules,不拖慢打包体积。
  • 文档友好:README 清晰,快速上手无障碍。

快速上手教程

  1. 安装包:

    1
    npm install awesome-phonenumber
  2. 解析手机号:

    1
    2
    3
    4
    const PhoneNumber = require('awesome-phonenumber');
    const pn = PhoneNumber('202-456-1414', { regionCode: 'US' });
    console.log(pn.isValid()); // true
    console.log(pn.getNumber('international')); // +1 202-456-1414
  3. 批量提取文本中的所有手机号:

    1
    2
    3
    4
    const { findNumbers } = require('awesome-phonenumber');
    const text = 'Call us: +44 20 7946 0958 or +1-800-555-1234!';
    const numbers = findNumbers(text);
    console.log(numbers); // 所有发现的号码信息

适用场景

  • 表单手机号验证与格式化
  • 聊天、评论、日志等文本批量提取
  • 国际化项目支持多地区号码标准
  • 电话服务、呼叫中心等专业应用
  • 轻量级 Node.js 服务或浏览器端号码处理

结语:真正的“Awesome”,让繁琐的号码处理一键到位!

如果你正为电话号码处理、验证、提取而苦恼,@grantila/awesome-phonenumber 无疑是最值得尝试的解决方案。它用极简的接口和优异的性能,帮你轻松搞定一切号码相关需求。赶快体验,感受“Awesome”的力量吧!

官方文档和源码:https://github.com/grantila/awesome-phonenumber