libphonenumber standalone (without masses of googl

2019-01-30 23:24发布

I am looking at using http://code.google.com/p/libphonenumber/ for a well-established project. Today the project does not use Google's libraries for JavaScript, favoring jQuery, jQueryUI, requirejs, and so on.

libphonenumber looks awesome ... except that the javascript version (svn co http://libphonenumber.googlecode.com/svn/trunk/javascript/ libphonenumber-js) is laced with goog.require calls. If one runs the demo (libphonenumber-js/i18n/phonenumbers/demo.html if you checked out as suggested) it pulls in tons of google libraries from 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

I believe if I compile this using the closure compiler ("If you give the use_closure_library parameter a value of true, the compiler looks for goog.require() statements in the source code and supplies the Closure Library code requested by any such statements.", https://developers.google.com/closure/compiler/docs/api-ref) I can cut down the raw number of requests, but this still seems like a rather excessive amount of content for a phone number parser, even a full-featured one.

My question has two possible answers:

  1. A way to use libphonenumber in JavaScript without having to pull in all the Google JavaScript base libraries
  2. An alternate standalone (as in doesn't have dozens of dependencies) first-class phone number processing library with both JavaScript and Java implementations

Any and all suggestions most appreciated.

4条回答
等我变得足够好
2楼-- · 2019-01-31 00:16

Here are two implementations of Google libphonenumber in JavaScript that have zero dependencies and are implemented in a single file. I've used Nathan Hammond's version without issue but it is not on NPM. Rui Marinho's version is on NPM.

查看更多
劫难
3楼-- · 2019-01-31 00:17

You can also use my lib. https://github.com/Gilshallem/phoneparser

Its only got one method but you can do a lot with it

parsePhone("12025550104");
result: { countryCode:1, areaCode:202, number:5550104, countryISOCode:"US" }
查看更多
老娘就宠你
4楼-- · 2019-01-31 00:25

I just spent 2 days figuring this out. For now, anyway, you can download a minified version of libphonenumber-js from here

drop it in place, with the usual

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

and get busy coding!

<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>
查看更多
等我变得足够好
5楼-- · 2019-01-31 00:27

I've got a custom build (currently 220KB) that I use for my International Telephone Input plugin, with plenty of helper functions exposed. Read the source for details.

查看更多
登录 后发表回答