欢迎光临
我们一直在努力

3个增强本地JavaScript功能的JS库

我们必须承认本地JavaScript的不完善,正是如此,才有了那么多完善它的框架,例如jQuery,mootools,prototype等等。今天我们不讨论框架,而是来探讨一下可以拓展JavaScript功能的额外插件,它们通常是通过拓展类、字符串、日期和对象等实现的。

举个例子,JavaScript现有的Date函数的局限性就很明显。而SugarJS增加了40种以上的日期操作函数,以下是其中的一部分:

Date.create(d,locale):支持多种格式的日期构造函数
compare(obj):日期的数值比较
Format(format,locale):将日期格式化
isLeapYear():如果是闰年则返回真
其他
我们相信本文中提到的三种JS库将会给您带来帮助。当然,如果你还知道其他的,欢迎和我们分享。

1.SUGAR

Sugar给我们带来了一些有用的方法,让你能够用更少的代码完成更多的事。

例:

getLatestTweets(function(t) { 
var users = t.map('user').unique(); 
var total = users.sum('statuses_count').format(); 
var top = users.max('followers_count').first(); 
var count = top.followers_count.format(); 
var since = Date.create(top.created_at); 
return users.length + ' users with a total of ' + total + ' tweets.n' + 
top.screen_name + ' is the top with ' + count + ' followersn' + 
'and started tweeting ' + since.relative() + '.'; 
}); 

/* 
Result: 
>20 users with a total of 211,776 tweets. 
TagalogQuotes is the top with 68,554 followers 
and started tweeting 7 months ago. 
*/

2.UNDERSCORE.JS

和sugarjs类似,underscore.js提供了许多不拓展内置对象的函数支持。Underscore支持60多个函数,既包括常用函数对象:map,select,invoke——以及更多专业工具:function binding,javascript templating,deep equality testing等等。它委托给内置函数,所以现代浏览器通过each,map,reduce,filter,every,some和indexOf实现本地功能运用。

例:

_.shuffle([1, 2, 3, 4, 5, 6]);
=> [4, 1, 6, 3, 5, 2]

_.first([5, 4, 3, 2, 1]);
=> 5

_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
=> [1, 2, 3, 101, 10]

var func = function(greeting){ return greeting + ': ' + this.name };
func = _.bind(func, {name : 'moe'}, 'hi');
func();
=> 'hi: moe'

var hello = function(name) { return "hello: " + name; };
hello = _.wrap(hello, function(func) {
    return "before, " + func("moe") + ", after";
});
hello();
=> 'before, hello: moe, after'

3.PHP.JS

PHP.JS实现了PHP现有函数的JavaScript版本。作为一个PHP开发人员,我惊讶于它的模仿程度之高。

例:

function array_merge () {
    var args = Array.prototype.slice.call(arguments),
        argl = args.length,
        arg,
        retObj = {},
        k = '',
        argil = 0,
        j = 0,
        i = 0,
        ct = 0,
        toStr = Object.prototype.toString,
        retArr = true;

    for (i = 0; i < argl; i++) {
        if (toStr.call(args[i]) !== '[object Array]') {
            retArr = false;
            break;
        }
    }

    if (retArr) {
        retArr = [];
        for (i = 0; i < argl; i++) {
            retArr = retArr.concat(args[i]);
        }
        return retArr;
    }

    for (i = 0, ct = 0; i < argl; i++) {
        arg = args[i];
        if (toStr.call(arg) === '[object Array]') {
            for (j = 0, argil = arg.length; j < argil; j++) {
                retObj[ct++] = arg[j];
            }
        }
        else {
            for (k in arg) {
                if (arg.hasOwnProperty(k)) {
                    if (parseInt(k, 10) + '' === k) {
                        retObj[ct++] = arg[k];
                    }
                    else {
                        retObj[k] = arg[k];
                    }
                }
            }
        }
    }
    return retObj;
}

如果你知道其他好的JS库的话,请一定记得和大家分享哦。

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » 3个增强本地JavaScript功能的JS库

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址