45

我正在考虑将http://code.google.com/p/libphonenumber/用于一个完善的项目。今天,该项目不使用 Google 的 JavaScript 库,支持 jQuery、jQueryUI、requirejs 等。

libphonenumber 看起来很棒……除了 javascript 版本(svn co http://libphonenumber.googlecode.com/svn/trunk/javascript/libphonenumber-js)带有 goog.require 调用。如果运行演示(libphonenumber-js/i18n/phonenumbers/demo.html,如果您按照建议签出),它会从closure-library.googlecode.com 中提取大量谷歌库:

GET base.js
GET deps.js
GET error.js
GET string.js
GET asserts.js
GET array.js
GET useragent.js
GET browserfeature.js
GET tagname.js
GET classes.js
GET math.js
GET coordinate.js
GET size.js
GET object.js
GET dom.js
GET json.js
GET util.js
GET descriptor.js
GET fielddescriptor.js
GET message.js
GET serializer.js
GET objectserializer.js
GET stringbuffer.js
GET lazydeserializer.js
GET pbliteserializer.js

我相信如果我使用闭包编译器编译它(“如果你给 use_closure_library 参数的值为 true,编译器会在源代码中查找 goog.require() 语句并提供任何此类语句请求的闭包库代码。” , https://developers.google.com/closure/compiler/docs/api-ref)我可以减少请求的原始数量,但这对于电话号码解析器来说仍然是相当多的内容,甚至是功能齐全的一款。

我的问题有两个可能的答案:

  1. 一种在 JavaScript 中使用 libphonenumber 而无需引入所有 Google JavaScript 基础库的方法
  2. 具有 JavaScript 和 Java 实现的备用独立(因为没有几十个依赖项)一流的电话号码处理库

任何和所有建议都非常感谢。

4

4 回答 4

8

我有一个自定义版本(当前为 220KB),用于我的International Telephone Input插件,并公开了大量的辅助功能。阅读源代码以获取详细信息。

于 2014-09-28T05:50:58.560 回答
5

你也可以使用我的库。 https://github.com/Gilshalem/phoneparser

它只有一种方法,但你可以用它做很多事情

parsePhone("12025550104");
result: { countryCode:1, areaCode:202, number:5550104, countryISOCode:"US" }
于 2014-07-01T10:15:59.900 回答
1

以下是 JavaScript 中 Google libphonenumber 的两个实现,它们具有零依赖关系并在单个文件中实现。我已经毫无问题地使用了 Nathan Hammond 的版本,但它不在 NPM 上。Rui Marinho 的版本在 NPM 上。

于 2018-03-13T10:24:43.997 回答
0

我只花了2天时间弄清楚这一点。现在,无论如何,你可以从这里下载一个缩小版的 libphonenumber-js

用通常的方式将其放置到位

<script type="text/javascript" language="javascript" src="/static/js/libphonenumber-js.min.js"></script>

并忙于编码!

<script>
    $(".phone-format").keyup(function () {
            var val_old = $(this).val();
            var newString = new libphonenumber.AsYouType('US').input(val_old);
            $(this).focus().val('').val(newString);
    });
</script>
于 2018-08-10T21:24:29.923 回答