自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

當jQuery遭遇CoffeeScript——妙不可言

開發(fā) 前端
雖然對ruby不太了解,但是看到CoffeeScript詩一般的代碼確實被怔住了,和jQuery之前給我的感覺是如此的相似——都是一個字,美,當jQuery遭遇到CoffeeScript時,會蹦出什么樣的火花呢?

雖然對ruby不太了解,但是看到CoffeeScript詩一般的代碼確實被怔住了,和jQuery之前給我的感覺是如此的相似——都是一個字,美,當jQuery遭遇到CoffeeScript時,會蹦出什么樣的火花呢?

當我多年前初次接觸jQuery時我感覺我來到了程序員的天堂。它極大簡化了DOM操作。函數(shù)式編程變得如此容易,盡管更多適合RIA開發(fā)的框架近年來在浮現(xiàn),但是我仍舊無法想象一個沒有jQuery的程序人生是多么的罪惡,相信你也有同感~

而來到CoffeeScript的世界,同樣的美妙故事再次上演。在寫了幾行代碼后我相信你將不會再想念原生的Javascript了。CoffeeScript包含了許多新特性,當將它與jQuery結合時,你會發(fā)現(xiàn)一片新天地。

51CTO推薦專題:jQuery從入門到精通

本文的目的就在于展示CoffeeScript和jQuery協(xié)同工作時美妙場景。

像老板一樣指揮你的代碼

CoffeeScript提供了一堆酷斃了的數(shù)組迭代方法。最好的事莫過于這不僅僅能工作于數(shù)組,還能工作于jQuery對象了。來行詩一般的代碼吧:

  1. formValues = (elem.value for elem in $('.input')) 

這行代碼將會被翻譯為如下的Javascript:

  1. var elem, formValues;  
  2. formValues = (function() {  
  3.   var _i, _len, _ref, _results;  
  4.   _ref = $('.input');  
  5.   _results = [];  
  6.   for (_i = 0, _len = _ref.length; _i < _len; _i++) {  
  7.     elem = _ref[_i];  
  8.     _results.push(elem.value);  
  9.   }  
  10.   return _results;  
  11. })(); 

老實說最初這樣寫代碼確實讓人提心吊膽的,但是一旦你開始擁抱CoffeeScript的魔法時,你會愛上它的。

飛一般的方法綁定

在jQuery的回調(diào)中使用"=>"將會大大減省你手動綁定方法到對象的麻煩。還是來看段代碼吧:

  1. object =  
  2.   func: -> $('#div').click => @element.css color: 'red' 

下面是編譯輸出的Javascript:

  1. var object;  
  2. var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };  
  3. object = {  
  4.   func: function() {  
  5.     return $('#div').click(__bind(function() {  
  6.       return this.element.css({  
  7.         color: 'red' 
  8.       });  
  9.     }, this));  
  10.   }  
  11. }; 

代碼中的@element指向了一個jQuery的對象,該對象是在其他地方指定的——比如object.element = $('#some_div').

任何使用"=>"所指定的回調(diào)函數(shù)都會自動綁定到原來的對象上,沒錯,這很酷。

在2011年函數(shù)是這樣調(diào)用的

瞅一眼這個:

  1. $.post(  
  2.   "/posts/update_title" 
  3.   new_title: input.val()  
  4.   id: something  
  5.   -> alert('done')  
  6.   'json' 

使用CoffeeScript,多個參數(shù)可以寫成多行來調(diào)用,逗號和大括弧是可選的,這使得一些jQuery中簽名比較長的方法比如$.post() 和 $.animate() 等更加易讀。這兒還有一個例子:

  1. $('#thing').animate  
  2.   width: '+20px' 
  3.   opacity: '0.5' 
  4.   2000  
  5.   'easeOutQuad' 

很美味的Coffee不是嗎?要注意第一個參數(shù)是一個匿名的對象,你甚至可以省略調(diào)用函數(shù)的元括弧。

讓初始化來的更性感吧

我最初開始使用jQuery時我是這樣做頁面初始化的:

  1. $(document).ready(function() {  
  2.   some();  
  3.   init();  
  4.   calls();  
  5. }) 

CoffeeScript和新版的jQuery使得上面的代碼進化的如此性感:

  1. $->  
  2.   some()  
  3.   init()  
  4.   calls() 

函數(shù)定義語法在CoffeeScript里本身已經(jīng)非??崃耍茉谏厦孢@些場合使用使得其更酷了。你會發(fā)現(xiàn)所有需要回調(diào)的函數(shù)調(diào)用在CoffeeScript中都是如此簡單。

更多關于CoffeeScript請訪問其官網(wǎng)

注:已經(jīng)有一本關于CoffeeScript的書在七月發(fā)行了,其中有一整章的內(nèi)容是關于jQuery的。

原作:How CoffeeScript makes jQuery more fun than ever—— Stefan Buhrmester

翻譯:filod

轉(zhuǎn)載聲明:請注明原作者、翻譯者以及譯文鏈接。

【編輯推薦】

  1. Web開發(fā)者愛不釋手的18款超贊jQuery插件
  2. jQuery給力插件大閱兵
  3. 25個超棒的jQuery日歷和日期選取插件
  4. 從零開始學習jQuery之讓頁面動起來
  5. 分享10個超炫的jQuery網(wǎng)站
責任編輯:陳貽新 來源: filod
相關推薦

2022-08-04 06:57:54

CSS拼圖游戲

2013-09-10 09:31:43

云計算成本云計算運維成本云計算現(xiàn)金流

2012-03-21 21:38:27

蘋果

2017-10-13 22:54:10

服務器

2023-04-13 21:59:44

ChatGPT聊天機器人

2011-03-22 17:29:41

LAMPWindowsAMP

2015-04-23 09:34:18

CoffeeScripJavaScript開

2010-07-26 15:32:08

Perl腳本語言

2015-10-23 09:23:38

數(shù)據(jù)中心經(jīng)濟移民

2010-07-26 15:55:51

Perl腳本語言

2013-07-23 14:55:31

設計師HTML5

2011-08-03 11:08:27

HTML 5

2017-06-01 14:13:15

圖片優(yōu)化PSSEO

2009-04-21 18:52:39

2010-04-23 09:16:13

電信云CTO

2011-04-18 09:03:22

2010-05-05 17:27:04

Windows PhoOffice Mobi

2010-10-26 11:22:26

2014-04-03 16:50:28

CactiNagios監(jiān)控

2011-08-04 10:56:44

點贊
收藏

51CTO技術棧公眾號