當(dāng)jQuery遭遇CoffeeScript的時(shí)候 使用分享
更新時(shí)間:2011年09月17日 19:41:14 作者:
雖然對(duì)ruby不太了解,但是看到CoffeeScript詩一般的代碼確實(shí)被怔住了,和jQuery之前給我的感覺是如此的相似——都是一個(gè)字,美,當(dāng)jQuery遭遇到CoffeeScript時(shí),會(huì)蹦出什么樣的火花呢?
當(dāng)我多年前初次接觸jQuery時(shí)我感覺我來到了程序員的天堂。它極大簡(jiǎn)化了DOM操作。函數(shù)式編程變得如此容易,盡管更多適合RIA開發(fā)的框架近年來在浮現(xiàn),但是我仍舊無法想象一個(gè)沒有jQuery的程序人生是多么的罪惡,相信你也有同感~
而來到CoffeeScript的世界,同樣的美妙故事再次上演。在寫了幾行代碼后我相信你將不會(huì)再想念原生的Javascript了。CoffeeScript包含了許多新特性,當(dāng)將它與jQuery結(jié)合時(shí),你會(huì)發(fā)現(xiàn)一片新天地。
本文的目的就在于展示CoffeeScript和jQuery協(xié)同工作時(shí)美妙場(chǎng)景。
像老板一樣指揮你的代碼
CoffeeScript提供了一堆酷斃了的數(shù)組迭代方法。最好的事莫過于這不僅僅能工作于數(shù)組,還能工作于jQuery對(duì)象了。來行詩一般的代碼吧:
formValues = (elem.value for elem in $('.input'))
這行代碼將會(huì)被翻譯為如下的Javascript:
var elem, formValues;
formValues = (function() {
var _i, _len, _ref, _results;
_ref = $('.input');
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
elem = _ref[_i];
_results.push(elem.value);
}
return _results;
})();
老實(shí)說最初這樣寫代碼確實(shí)讓人提心吊膽的,但是一旦你開始擁抱CoffeeScript的魔法時(shí),你會(huì)愛上它的。
飛一般的方法綁定
在jQuery的回調(diào)中使用"=>"將會(huì)大大減省你手動(dòng)綁定方法到對(duì)象的麻煩。還是來看段代碼吧:
下面是編譯輸出的Javascript:
var object;
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
object = {
func: function() {
return $('#div').click(__bind(function() {
return this.element.css({
color: 'red'
});
}, this));
}
};
代碼中的@element指向了一個(gè)jQuery的對(duì)象,該對(duì)象是在其他地方指定的——比如object.element = $('#some_div').
任何使用"=>"所指定的回調(diào)函數(shù)都會(huì)自動(dòng)綁定到原來的對(duì)象上,沒錯(cuò),這很酷。
在2011年函數(shù)是這樣調(diào)用的
瞅一眼這個(gè):
$.post(
"/posts/update_title"
new_title: input.val()
id: something
-> alert('done')
'json'
)
使用CoffeeScript,多個(gè)參數(shù)可以寫成多行來調(diào)用,逗號(hào)和大括弧是可選的,這使得一些jQuery中簽名比較長的方法比如$.post() 和 $.animate() 等更加易讀。這兒還有一個(gè)例子:
$('#thing').animate
width: '+20px'
opacity: '0.5'
2000
'easeOutQuad'
很美味的Coffee不是嗎?要注意第一個(gè)參數(shù)是一個(gè)匿名的對(duì)象,你甚至可以省略調(diào)用函數(shù)的元括弧。
讓初始化來的更性感吧
我最初開始使用jQuery時(shí)我是這樣做頁面初始化的:
$(document).ready(function() {
some();
init();
calls();
})
CoffeeScript和新版的jQuery使得上面的代碼進(jìn)化的如此性感:
$->
some()
init()
calls()
函數(shù)定義語法在CoffeeScript里本身已經(jīng)非??崃?,能在上面這些場(chǎng)合使用使得其更酷了。你會(huì)發(fā)現(xiàn)所有需要回調(diào)的函數(shù)調(diào)用在CoffeeScript中都是如此簡(jiǎn)單。
更多關(guān)于CoffeeScript請(qǐng)?jiān)L問其官網(wǎng)
而來到CoffeeScript的世界,同樣的美妙故事再次上演。在寫了幾行代碼后我相信你將不會(huì)再想念原生的Javascript了。CoffeeScript包含了許多新特性,當(dāng)將它與jQuery結(jié)合時(shí),你會(huì)發(fā)現(xiàn)一片新天地。
本文的目的就在于展示CoffeeScript和jQuery協(xié)同工作時(shí)美妙場(chǎng)景。
像老板一樣指揮你的代碼
CoffeeScript提供了一堆酷斃了的數(shù)組迭代方法。最好的事莫過于這不僅僅能工作于數(shù)組,還能工作于jQuery對(duì)象了。來行詩一般的代碼吧:
formValues = (elem.value for elem in $('.input'))
這行代碼將會(huì)被翻譯為如下的Javascript:
復(fù)制代碼 代碼如下:
var elem, formValues;
formValues = (function() {
var _i, _len, _ref, _results;
_ref = $('.input');
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
elem = _ref[_i];
_results.push(elem.value);
}
return _results;
})();
老實(shí)說最初這樣寫代碼確實(shí)讓人提心吊膽的,但是一旦你開始擁抱CoffeeScript的魔法時(shí),你會(huì)愛上它的。
飛一般的方法綁定
在jQuery的回調(diào)中使用"=>"將會(huì)大大減省你手動(dòng)綁定方法到對(duì)象的麻煩。還是來看段代碼吧:
復(fù)制代碼 代碼如下:
object = func: -> $('#div').click => @element.css color: 'red'
下面是編譯輸出的Javascript:
復(fù)制代碼 代碼如下:
var object;
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
object = {
func: function() {
return $('#div').click(__bind(function() {
return this.element.css({
color: 'red'
});
}, this));
}
};
代碼中的@element指向了一個(gè)jQuery的對(duì)象,該對(duì)象是在其他地方指定的——比如object.element = $('#some_div').
任何使用"=>"所指定的回調(diào)函數(shù)都會(huì)自動(dòng)綁定到原來的對(duì)象上,沒錯(cuò),這很酷。
在2011年函數(shù)是這樣調(diào)用的
瞅一眼這個(gè):
復(fù)制代碼 代碼如下:
$.post(
"/posts/update_title"
new_title: input.val()
id: something
-> alert('done')
'json'
)
使用CoffeeScript,多個(gè)參數(shù)可以寫成多行來調(diào)用,逗號(hào)和大括弧是可選的,這使得一些jQuery中簽名比較長的方法比如$.post() 和 $.animate() 等更加易讀。這兒還有一個(gè)例子:
復(fù)制代碼 代碼如下:
$('#thing').animate
width: '+20px'
opacity: '0.5'
2000
'easeOutQuad'
很美味的Coffee不是嗎?要注意第一個(gè)參數(shù)是一個(gè)匿名的對(duì)象,你甚至可以省略調(diào)用函數(shù)的元括弧。
讓初始化來的更性感吧
我最初開始使用jQuery時(shí)我是這樣做頁面初始化的:
復(fù)制代碼 代碼如下:
$(document).ready(function() {
some();
init();
calls();
})
CoffeeScript和新版的jQuery使得上面的代碼進(jìn)化的如此性感:
復(fù)制代碼 代碼如下:
$->
some()
init()
calls()
函數(shù)定義語法在CoffeeScript里本身已經(jīng)非??崃?,能在上面這些場(chǎng)合使用使得其更酷了。你會(huì)發(fā)現(xiàn)所有需要回調(diào)的函數(shù)調(diào)用在CoffeeScript中都是如此簡(jiǎn)單。
更多關(guān)于CoffeeScript請(qǐng)?jiān)L問其官網(wǎng)
注:已經(jīng)有一本關(guān)于CoffeeScript的書在七月發(fā)行了,其中有一整章的內(nèi)容是關(guān)于jQuery的。
相關(guān)文章
精選的10款用于構(gòu)建良好易用性網(wǎng)站的jQuery插件
這篇隨筆收集了10款非常給力的jquery 插件,幫助你構(gòu)建易用性良好的網(wǎng)站,希望對(duì)你有用!2011-01-01jQuery對(duì)checkbox 復(fù)選框的全選全不選反選的操作
這篇文章主要介紹了jQuery對(duì)checkbox 復(fù)選框的全選全不選反選的操作 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08jquery實(shí)現(xiàn)帶縮略圖的可定制高度畫廊效果(5種)
這篇文章主要介紹了jquery可定制高度畫廊效果,很有藝術(shù)感,功能實(shí)現(xiàn)非常簡(jiǎn)單,推薦給大家,有需要的小伙伴可以參考下。2015-08-08jquery實(shí)現(xiàn)最簡(jiǎn)單的滑動(dòng)菜單效果代碼
這篇文章主要介紹了jquery實(shí)現(xiàn)最簡(jiǎn)單的滑動(dòng)菜單效果代碼,涉及jQuery基于鼠標(biāo)事件操作頁面元素動(dòng)態(tài)變換的基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09基于jQuery實(shí)現(xiàn)中英文切換導(dǎo)航條效果
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)中英文切換導(dǎo)航條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09jQuery實(shí)現(xiàn)兩列等高并自適應(yīng)高度
想要使用jQuery實(shí)現(xiàn)兩列等高并自適應(yīng)高度,其實(shí)也很簡(jiǎn)單,原理就是取得左右兩邊的高度,然后判斷這個(gè)值,把大的值賦給小的就行了。下面就跟小編一起來看下吧2016-12-12