歡迎您光臨本站 註冊首頁

3個增強本地JavaScript功能的JS庫

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

我們必須承認本地JavaScript的不完善,正是如此,才有了那麼多完善它的框架,例如jQuery,mootools,prototype等等。今天我們不討論框架,而是來探討一下可以拓展JavaScript功能的額外插件,它們通常是通過拓展類、字元串、日期和對象等實現的。

舉個例子,JavaScript現有的Date函數的局限性就很明顯。而SugarJS增加了40種以上的日期操作函數,以下是其中的一部分:

  • Date.create(d,locale):支持多種格式的日期構造函數
  • compare(obj):日期的數值比較
  • Format(format,locale):將日期格式化
  • isLeapYear():如果是閏年則返回真
  • 其他

我們相信本文中提到的三種JS庫將會給您帶來幫助。當然,如果你還知道其他的,歡迎和我們分享。

1.SUGAR

Sugar給我們帶來了一些有用的方法,讓你能夠用更少的代碼完成更多的事。

例:

  1. getLatestTweets(function(t) { 
  2. var users = t.map('user').unique(); 
  3. var total = users.sum('statuses_count').format(); 
  4. var top   = users.max('followers_count').first(); 
  5. var count = top.followers_count.format(); 
  6. var since = Date.create(top.created_at); 
  7. return users.length + ' users with a total of ' + total + ' tweets.n' + 
  8.       top.screen_name + ' is the top with ' + count + ' followersn' + 
  9.       'and started tweeting ' + since.relative() + '.'
  10. }); 
  11.  
  12. /* 
  13. Result: 
  14. >20 users with a total of 211,776 tweets. 
  15. TagalogQuotes is the top with 68,554 followers 
  16. and started tweeting 7 months ago.   
  17. */ 

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實現本地功能運用。

例:

  1. _.shuffle([1, 2, 3, 4, 5, 6]); 
  2. => [4, 1, 6, 3, 5, 2] 
  3.   
  4. _.first([5, 4, 3, 2, 1]); 
  5. => 5 
  6.   
  7. _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); 
  8. => [1, 2, 3, 101, 10] 
  9.   
  10. var func = function(greeting){ return greeting + ': ' + this.name }; 
  11. func = _.bind(func, {name : 'moe'}, 'hi'); 
  12. func(); 
  13. => 'hi: moe' 
  14.   
  15. var hello = function(name) { return "hello: " + name; }; 
  16. hello = _.wrap(hello, function(func) { 
  17. return "before, " + func("moe") + ", after"
  18. }); 
  19. hello(); 
  20. => 'before, hello: moe, after' 

3.PHP.JS

PHP.JS實現了PHP現有函數的JavaScript版本。作為一個PHP開發人員,我驚訝於它的模仿程度之高。

例:

  1. function array_merge () { 
  2.  var args = Array.prototype.slice.call(arguments), 
  3.      argl = args.length, 
  4.      arg, 
  5.      retObj = {}, 
  6.      k = '',  
  7.      argil = 0, 
  8.      j = 0, 
  9.      i = 0, 
  10.      ct = 0, 
  11.      toStr = Object.prototype.toString, 
  12.      retArr = true
  13.  
  14.  for (i = 0; i < argl; i++) { 
  15.      if (toStr.call(args[i]) !== '[object Array]') { 
  16.          retArr = false
  17.          break
  18.      } 
  19.  } 
  20.  
  21.  if (retArr) { 
  22.      retArr = []; 
  23.      for (i = 0; i < argl; i++) { 
  24.          retArr = retArr.concat(args[i]); 
  25.      } 
  26.      return retArr; 
  27.  } 
  28.  
  29.  for (i = 0, ct = 0; i < argl; i++) { 
  30.      arg = args[i]; 
  31.      if (toStr.call(arg) === '[object Array]') { 
  32.          for (j = 0, argil = arg.length; j < argil; j++) { 
  33.              retObj[ct++] = arg[j]; 
  34.          } 
  35.      } 
  36.      else { 
  37.          for (k in arg) { 
  38.              if (arg.hasOwnProperty(k)) { 
  39.                  if (parseInt(k, 10) + '' === k) { 
  40.                      retObj[ct++] = arg[k]; 
  41.                  } 
  42.                  else { 
  43.                      retObj[k] = arg[k]; 
  44.                  } 
  45.              } 
  46.          } 
  47.      } 
  48.  } 
  49.  return retObj; 
  50. }    

如果你知道其他好的JS庫的話,請一定記得和大家分享哦。

文章出自:favbulous.com



[火星人 ] 3個增強本地JavaScript功能的JS庫已經有466次圍觀

http://coctec.com/docs/program/show-post-71386.html