深入淺出CoffeeScript

出版時(shí)間:2012-5  出版社:人民郵電出版社  作者:[英] Trevor Burnham  頁數(shù):104  譯者:寸 志  
Tag標(biāo)簽:無  

內(nèi)容概要

作為唯一所有主流瀏覽器都支持的腳本語言,JavaScript儼然已成為Web開發(fā)領(lǐng)域最具號(hào)召力的語言,但它的種種語言怪癖以及在各種瀏覽器間實(shí)現(xiàn)不一致等問題也為開發(fā)人員所詬病。2009年底,CoffeeScript橫空出世。它吸收了JavaScript語言的精華,并添加了很多現(xiàn)代語言腳本的特性,很快便得到了大量Web開發(fā)人員的青睞。
本書由CoffeeScript重要貢獻(xiàn)者Trevor
Burnham操刀,從基礎(chǔ)知識(shí)入手,全面詳盡地介紹了CoffeeScript這門新語言。通過一個(gè)5×5拼字游戲,作者將CoffeeScript各方面的知識(shí)融入其中,通俗易懂地講解了CoffeeScript如何與jQuery等非常流行的類庫完美集成,如何游刃有余地結(jié)合Socket.IO實(shí)現(xiàn)Node.js雙通道異步通信。每章結(jié)尾都有精心設(shè)計(jì)的習(xí)題,有助于讀者鞏固所學(xué)的CoffeeScript知識(shí)并更上一層樓。
掌握CoffeeScript,Web開發(fā)之旅將更輕松、快捷和優(yōu)雅!

作者簡介

作者
Trevor Burnham
全棧式Web框架開發(fā)專家,DataBraid創(chuàng)始人,開源擁躉,技術(shù)布道師。其Twitter賬號(hào)@TrevorBurnham和@CoffeeScript擁有大批追隨者。
譯者
寸志
2011年7月畢業(yè)于同濟(jì)大學(xué)信息安全專業(yè),在校期間,曾榮獲微軟精英大挑戰(zhàn)優(yōu)勝獎(jiǎng),第三屆三葉草軟件競賽三等獎(jiǎng)等。現(xiàn)任大眾點(diǎn)評(píng)網(wǎng)前端工程師。熱愛互聯(lián)網(wǎng),熱衷研究新技術(shù),崇尚開源精神,喜歡運(yùn)動(dòng)和閱讀。豆瓣社區(qū)@island205,博http://island205.com/,Twitter賬號(hào)@island205,歡迎讀者與他交流探討技術(shù)問題。

書籍目錄

第1章 入門指南 1
1.1 安裝CoffeeScript 1
1.2 CoffeeScript編輯器 4
1.3 “邂逅”coffee 5
1.3.1 編譯為JavaScript 6
1.3.2 REPL 7
1.4 調(diào)試CoffeeScript 8
1.5 預(yù)備 9
第2章 函數(shù)、作用域和上下文 11
2.1 函數(shù)基礎(chǔ)知識(shí) 11
2.1.1 訪問arguments對(duì)象 13
2.1.2 條件表達(dá)式和異常 14
2.2 作用域:你在哪里看到它們 16
2.3 上下文 18
2.4 屬性參數(shù)(@arg) 21
2.5 默認(rèn)參數(shù)(arg=) 22
2.6 參數(shù)列(...) 24
2.7 項(xiàng)目:5×5游戲輸入分析器 25
2.8 做得好,年輕的學(xué)徒 29
2.9 練習(xí) 29
第3章 集合與迭代 31
3.1 作為哈希表的對(duì)象 31
3.1.1 JavaScript基礎(chǔ)知識(shí):一節(jié)JavaScript補(bǔ)習(xí)課
31
3.1.2 精簡的JSON 32
3.1.3 同名鍵值對(duì) 33
3.1.4 吸收操作符:'a?.b' 33
3.2 數(shù)組 34
3.2.1 區(qū)間 35
3.2.2 切分和剪接 35
3.3 集合的迭代 37
3.4 條件迭代 39
3.5 列表解析 40
3.6 模式匹配(或解構(gòu)賦值) 41
3.7 項(xiàng)目:5×5單人游戲 42
3.8 進(jìn)階 48
3.9 練習(xí) 48
第4章 模塊與類 51
4.1 模塊:解構(gòu)程序 51
4.2 原型的威力 53
4.3 類:原型函數(shù) 55
4.4 使用extends來繼承 56
4.5 項(xiàng)目:重構(gòu)5×5游戲 59
4.5.1 Dictionary類 60
4.5.2 Grid類 61
4.5.3 Player類 62
4.5.4 Console.Coffee接口 63
4.6 就如“一勺糖” 63
4.7 練習(xí) 64
第5章 jQuery Web交互開發(fā) 66
5.1 jQuery之道 66
5.2 操作DOM 67
5.3 學(xué)會(huì)選擇 68
5.4 響應(yīng)事件 69
5.5 項(xiàng)目:基于瀏覽器的5×5游戲 71
5.5.1 index.html 71
5.5.2 style.css 72
5.5.3 jq5×5.coffee 73
5.6 未來是jQuery化的 77
5.7 練習(xí) 77
第6章 Node.js服務(wù)器端程序 79
6.1 什么是Node.js 79
6.2 使用exports和require構(gòu)建模塊化代碼 80
6.3 異步思想 81
6.4 項(xiàng)目:多人5×5游戲 84
6.4.1 5×5server.coffee 85
6.4.2 5×5client.coffee 89
6.4.3 都結(jié)束了 91
6.5 客戶端、服務(wù)器端——有何不同 91
6.6 練習(xí) 91
附錄A 練習(xí)答案 92
附錄B 運(yùn)行CoffeeScript的幾種方法 98
附錄C JavaScript開發(fā)者備忘錄 102

章節(jié)摘錄

   入門指南   如果你讀過前言,那么現(xiàn)在應(yīng)該已經(jīng)了解了CoffeeScript是什么,它從何而來,以及它為什么是繼Herman Miller牌辦公椅之后,對(duì)程序員來說最棒的東西了。但是實(shí)際上你還沒寫過一行代碼,等不及了是吧?   好,深呼吸下,時(shí)候到了。在本章中,我們將在你的操作系統(tǒng)中安裝CoffeeScript,配置好編輯器,最后再運(yùn)行一些代碼!   1.1 安裝CoffeeScript   CoffeeScript編譯器是用CoffeeScript寫成的,這就產(chǎn)生了一個(gè)先有雞還是先有蛋的問題:我們是如何在一個(gè)還沒裝CoffeeScript編譯器的系統(tǒng)上運(yùn)行編譯器的呢?如果能找到某種方法,在機(jī)器上瀏覽器之外運(yùn)行JavaScript代碼,且允許這些代碼訪問本地文件系統(tǒng)就好了……   對(duì),其實(shí)我們有Node.js!大家把Node當(dāng)成一個(gè)JavaScript的Web服務(wù)器(詳見6.1節(jié)),但是它可不止這個(gè)功能。從根本上講,它是JavaScript代碼和操作系統(tǒng)之間的一個(gè)橋梁。Node也有一個(gè)名為npm的很棒的工具,即Node包管理器(Node Package Manager) 。如果你是Ruby程序員,可以將其想象為Node版的RubyGems 。npm已經(jīng)成為安裝管理Node程序和類庫約定俗成的標(biāo)準(zhǔn)了。   本節(jié)的剩余內(nèi)容講述Node和npm的安裝,有了它們,我們就能夠使用CoffeeScript標(biāo)準(zhǔn)的coffee編譯器了(我們?cè)诘?章同樣需要使用Node和npm)。如果你迫不及待地想要實(shí)踐一下的話,可以訪問http://coffeescript.org/,點(diǎn)擊“Try CoffeeScript”按鈕,然后直接跳到下一章去(要在瀏覽器中顯示console輸出,需要某些工具,比如說Fire Lite )?!? 準(zhǔn)備好了?那我們就開始吧。   使用Node.js和npm安裝CoffeeScript   盡管有很多不借助Node來運(yùn)行CoffeeScript代碼的方法(附錄2會(huì)談到其中幾種),然而我還是假定你在全書中用的是標(biāo)準(zhǔn)的coffee命令,專門運(yùn)行在Node上的。但是只有在第6章才會(huì)明確需要使用Node和npm?!? 請(qǐng)注意,使用Windows系統(tǒng)的用戶,在繼續(xù)之前你需要先安裝Cygwin 。Cygwin基本上相當(dāng)于一個(gè)Linux模擬器。雖然Node.js在0.6版本的藍(lán)圖中計(jì)劃直接支持Windows,但是在寫作本書之時(shí),使用Cygwin是現(xiàn)有的最可靠的方法。   Mac用戶需要安裝Xcode ,重點(diǎn)并不在于這個(gè)程序,而在于那些隨它一起安裝的命令行開發(fā)工具。嘗試運(yùn)行命令gcc(GNU編譯器集合)來檢測系統(tǒng)中是否已經(jīng)安裝了這些工具:   如果輸出如上所示,那就說明準(zhǔn)備就緒了。如果沒有的話,那么就請(qǐng)安裝Xcode(Mac用戶),或者直接安裝標(biāo)準(zhǔn)創(chuàng)建工具(Linux或者Cygwin環(huán)境下)?!? 無論是什么系統(tǒng)(Linux/Unix/Mac),現(xiàn)在都配置好標(biāo)準(zhǔn)創(chuàng)建工具了吧?太棒了!現(xiàn)在去訪問http://gist.github.com/579814,此處列出的安裝方法之多會(huì)讓你眼花繚亂,它們都出自npm的創(chuàng)建者Isaac Schlueter。對(duì)于所有Mac用戶,我推薦使用Homebrew 方法(先安裝Homebrew)。對(duì)于其他系統(tǒng)的用戶,列表中的第一個(gè)選擇則最為直接,也是最好的方式。Node是個(gè)很大的程序包,安裝它需要花幾分鐘?!? 安裝好Node之后,運(yùn)行最新的npm遠(yuǎn)程安裝腳本:   如果你碰到權(quán)限錯(cuò)誤,可以使用chown 改變Node安裝目錄的屬權(quán)(該方法可以減少很多麻煩),也可用sudo sh 替換普通sh?!? 無論選擇哪種方法,都要測試一下node和npm是否已經(jīng)存在于系統(tǒng)的環(huán)境變量PATH中了:   (簡單的提一下與版本相關(guān)的事情:Node的版本號(hào)為偶數(shù)時(shí)API保持穩(wěn)定。因此,本書的例子在最新的0.4.x版本下應(yīng)該運(yùn)行正常。但是Node 0.5.x版則會(huì)以API的變化為重點(diǎn),而這些變化將會(huì)包含到0.6.x穩(wěn)定版中。說到npm,本書中假定你使用的是npm 1.x。因此,如果你還在使用npm 0.x,是時(shí)候升級(jí)了。)   現(xiàn)在抓取最新發(fā)布的CoffeeScript:   參數(shù)-g是--global的縮寫,它使已安裝好的庫在全局系統(tǒng)中都可用(默認(rèn)情況下,npm install [package]把指定的程序包安裝到當(dāng)前的子目錄node_module中,這樣便于安裝只適用于特定項(xiàng)目的類庫)。只要是安裝那些包含二進(jìn)制可執(zhí)行程序的程序包,我都推薦使用-g參數(shù)?!? npm install命令的輸出結(jié)果告訴我們,作為安裝包的一部分,兩個(gè)二進(jìn)制可執(zhí)行程序cake和coffee已安裝好了。讓我們測試下coffee是否已經(jīng)在系統(tǒng)的PATH 中了:   如果這樣不行,那就看一下npm install輸出結(jié)果中->符號(hào)之前的路徑(例如/usr/local/bin),然后把它添加到系統(tǒng)的PATH中去。如果使用的是Mac默認(rèn)bash終端的話,在你的~/.profile文件中添加下面這行代碼即可:   注意不要遺漏:$PATH這部分,否則/usr/local/bin會(huì)直接替換掉系統(tǒng)的PATH變量,而不是將自己添加到里面!要讓這行代碼生效,需要保存好文件并且開啟一個(gè)新的會(huì)話終端(比方說,把老的終端關(guān)掉打開一個(gè)新的)?!? 如果使用的是其他系統(tǒng)或終端,步驟可能會(huì)略有不同,可以輸入echo $SHELL搞清楚你使用的是哪個(gè)終端。不要忘了在修改完文件之后重新打開會(huì)話終端,以便修改生效?!? 最后一步:就像要想在任何地方都能夠使用二進(jìn)制程序就必須把它們放到PATH中一樣,npm安裝的Node類庫也必須添加到NODE_PATH中。可以輸入如下命令查看Node安裝類庫的位置:   (該命令同時(shí)還列出了npm全局安裝的所有類庫。去掉-g就可以看到安裝在當(dāng)前目錄下的所有類庫。)我們需要把該路徑下的子目錄node_module添加到NODE_PATH中。在筆者的系統(tǒng)中,就是將如下內(nèi)容添加到~/.profile文件中:   同樣,你的系統(tǒng)上需要采取的操作步驟可能會(huì)有所不同。要測試NODE_PATH是否有效,打開一個(gè)新的會(huì)話終端輸入命令node,即可打開Node.js的REPL ——一個(gè)交互式命令運(yùn)行環(huán)境。接著輸入:   我保證,這是本書中唯一一行你需要輸入的JavaScript代碼!   如果NODE_PATH設(shè)置得不正確,會(huì)看到一個(gè)Error: Cannot find module ‘coffee-script’的錯(cuò)誤提示。如果只是看到一段很長的對(duì)象描述,那就沒有問題了。完成后,可以輸入process.exit()或者使用  –  來退出Node的REPL?!? 順便說一下,coffee-script庫已經(jīng)超出了本書的范圍;我能說的就是,在CoffeeScript或JavaScript程序中,它能讓你把CoffeeScript編譯成JavaScript。你可以基于此做一些非??岬氖虑椋确秸f你可以自己寫一個(gè)包含自定義后期處理的編譯器,或者可以寫一個(gè)像Cakefile 那樣的打包腳本?!? 嘿!我知道安裝過程似乎花了很多時(shí)間,不過請(qǐng)相信我,既然我們獲得了為自己所用的Node和npm的全部能力,那付出終將獲得回報(bào)。現(xiàn)在讓我們來配置下編輯環(huán)境吧。   在刀鋒上起舞   如果你一定要用最新的CoffeeScript,這實(shí)際上也非常容易。只需要使用git 把CoffeeScript的代碼倉庫克隆下來,然后使用npm從本地目錄中安裝它即可:   這將安裝CoffeeScript當(dāng)前的master分支,它多少有點(diǎn)不穩(wěn)定??梢赃\(yùn)行如下命令來還原到特定版本的CoffeeScript(比如說1.1.1):   1.2 CoffeeScript編輯器   在https://github.com/jashkenas/coffee-script/wiki/Text-editor-plugins上可以找到一份最新的支持CoffeeScript的編輯器列表。如果你使用的是Mac系統(tǒng),那我推薦使用由Jeremy Ashkenas維護(hù)的TextMate插件 。在撰寫本書時(shí),Vim、Emacs、gedit、jEdit以及IntelliJ IDEA也分別有插件提供了對(duì)CoffeeScript的支持。   最近,使用基于Web的編輯器編寫代碼已成為可能,這些編輯器支持實(shí)時(shí)協(xié)作,不依賴于任何特殊的設(shè)備。目前對(duì)CoffeeScript支持得最好的Web編輯器是安裝了Cloud9 Live CoffeeScript Extension 的Could9。   當(dāng)然,你可以使用任何自己喜歡的編輯器,但是支持CoffeeScript的編輯器會(huì)給你帶來3大優(yōu)勢——語法高亮、自動(dòng)縮進(jìn)以及內(nèi)置的編譯快捷方式。前兩個(gè)優(yōu)點(diǎn)理解起來很容易,但是第三個(gè)優(yōu)點(diǎn)是很多程序員沒有好好利用的部分?!? 在TextMate中,可以使用 R(運(yùn)行)來運(yùn)行CoffeeScript文件,或者只用 B(生成)來查看編譯后的JavaScript。編譯只需幾毫秒,因此如果對(duì)于一個(gè)CoffeeScript表達(dá)式如何轉(zhuǎn)化為JavaScript不是很確定,那么快速編譯就是搞清楚這一過程的最快方法。如果有被選中的文本,則這些命令僅僅運(yùn)行選中部分的代碼而不是整個(gè)文件,這就讓測試小塊代碼以及定位語法錯(cuò)誤變得容易多了。如圖2所示   圖2 直接在TextMate中運(yùn)行選擇的代碼   稍微注意下,一些編輯器(包括TextMate)不會(huì)默認(rèn)采用PATH值,這就意味著在你試圖運(yùn)行coffee命令時(shí)可能會(huì)出現(xiàn)類似于command not found的錯(cuò)誤。如果遇到這種問題,打開編輯器的配置(可能在Shell Variables下面)設(shè)置PATH,以匹配在終端中運(yùn)行echo $PATH命令時(shí)得到的輸出值。你愿意的話也可以順便設(shè)置下NODE_PATH。   1.3 “邂逅”coffee   既然你已經(jīng)把編輯器設(shè)置好了,那就是時(shí)候介紹標(biāo)準(zhǔn)命令行編譯器coffee了。讓我們從必修的“Hello world!”程序開始。打開編輯器,創(chuàng)建一個(gè)名為hello.coffee的文件,添加如下內(nèi)容:   直接運(yùn)行它:   有幾件事情你可能會(huì)感到奇怪:首先,console.log函數(shù)是從哪里冒出來的?(答案:它是一個(gè)Node.js的全局函數(shù)。)其次,JavaScript在哪里呢,不是說CoffeeScript會(huì)編譯為JavaScript嗎?   事實(shí)上coffee會(huì)將hello.coffee隱式地編譯為JavaScript,然后將輸出結(jié)果直接傳遞給Node,以使其立即執(zhí)行。如果這不能滿足你的需求,可以使用coffee眾多選項(xiàng)中的一個(gè)或多個(gè),使用coffee -h命令可以查看這些選項(xiàng):   如果想查看剛才編譯器隱藏的JavaScript,可以運(yùn)行:   可以查看1.3.1節(jié)“包裹中的JavaScript”專題對(duì)多余兩行代碼的解釋?!? 1.3.1 編譯為JavaScript   -c(編譯)可能是最常用的參數(shù),它可以把輸出的JavaScript保存到文件中。除了使用.js擴(kuò)展名代替.coffee之外,新文件的文件名與原始文件的相同。讓我們繼續(xù)使用咖啡因飲料的主題:   編譯輸出到相同路徑下的一個(gè)名為mochaccino.js的文件中。使用-o(輸出)參數(shù)并讓目標(biāo)目錄名稱緊跟其后,就可以把輸出保存在其他地方:   該示例讀取source目錄(包含其子目錄)下的所有.coffee并把對(duì)應(yīng)的.js文件寫入output。注意-co是-c-o的縮寫。其順序很重要:輸出目錄名必須緊接在-o之后?!? 另外一個(gè)比較常用的參數(shù)是-w(監(jiān)聽),它可以讓coffee命令在后臺(tái)持續(xù)運(yùn)行。結(jié)合-c,它在每次開發(fā)者作出改變之后重新編譯代碼。它甚至能在多目錄下工作且能保持嵌套的目錄文件結(jié)構(gòu)不變。因此,如果運(yùn)行下面的命令, coffee目錄下的所有文件都會(huì)不斷地被重新編譯到j(luò)s目錄中:   它會(huì)持續(xù)運(yùn)行直到使用  –  來終止編譯器?!? 包裹中的JavaScript   你可能想知道為什么CoffeeScript編譯后的代碼會(huì)被包裹在一個(gè)函數(shù)內(nèi)?原因用一個(gè)詞來說就是命名空間。如果將一堆JavaScript文件上載到一個(gè)瀏覽器程序中,它們會(huì)被當(dāng)做一個(gè)大的代碼塊,這容易產(chǎn)生不可預(yù)料的結(jié)果:   寫第一個(gè)文件的人,對(duì)代碼可能造成的破壞一無所知!為避免發(fā)生災(zāi)難可以把每個(gè)文件用一個(gè)匿名函數(shù)包裹起來,這樣就隔開了兩個(gè)declareNuclearWar聲明(參見2.2節(jié)),這種方式叫做模塊模式?!? 為了讓模塊之間可以互相通信,必須“輸出”一些變量(我們會(huì)在4.1節(jié)詳細(xì)介紹)?!? 如果一定要除去包裹函數(shù),使用-b(暴露)參數(shù)來運(yùn)行coffee命令即可。   1.3.2 REPL   不帶任何參數(shù)直接運(yùn)行coffee會(huì)進(jìn)入編程老手所說的REPL,即Read-Eval-Print Loop。通俗地說,就是你輸入點(diǎn)什么,它執(zhí)行,然后你查看輸出結(jié)果,周而復(fù)始。   這很適合用來小試一下這門語言。REPL運(yùn)行在Node.js環(huán)境中,并且它會(huì)輸出所有表達(dá)式的結(jié)果。例如,如果我們想回憶一下JavaScript中parseInt的某些怪異行為,可以這樣試試:   coffee相關(guān)的內(nèi)容就介紹到這里。再順便說一句,如果想了解coffee是如何工作的,可以查看帶注釋的源碼。如果你愿意,甚至可以對(duì)其進(jìn)行反向工程,編寫自己的CoffeeScript編譯器接口(就像筆者寫的Jitter 一樣)?!? 不要忘了coffee只是一個(gè)輕量級(jí)的工具,它并不提供代碼壓縮或者編譯后自動(dòng)運(yùn)行測試之類的功能。如果想把這些功能添加到自己的項(xiàng)目中,你就應(yīng)該編寫自己的生成腳本,通常就是所謂的Cakefile。你可以在CoffeeScript wiki 上找到一些Cakefile相關(guān)的文檔?!? 幾乎可以編寫CoffeeScript代碼了——但還有一個(gè)問題,如果遇到錯(cuò)誤該怎么辦呢?   1.4 調(diào)試CoffeeScript   很多使用類似CoffeeScript這類語言編寫代碼的人都會(huì)遇到以下問題,即運(yùn)行時(shí)錯(cuò)誤參考的是編譯后的代碼而不是原始代碼。這確實(shí)是個(gè)問題,而且大家也探討過幾個(gè)解決方案。可不幸的是,目前留給你的只有那些行號(hào)與原始代碼沒有任何關(guān)系的棧跟蹤信息?!? 幸好,CoffeeScript編譯后的JavaScript有很強(qiáng)的可讀性。如果你了解這兩種語言之間的對(duì)應(yīng)關(guān)系(我希望讀完本書后你能做到這一點(diǎn)),那么在原始CoffeeScript代碼中找到與程序中出錯(cuò)的地方相匹配的位置就非常容易了?!? 雖然不甚理想,但這就是站在技術(shù)最前沿所要付出的代價(jià)。隨著CoffeeScript生態(tài)圈的日漸成熟,工具越變?cè)胶?,追蹤錯(cuò)誤將會(huì)越來越容易。Mozilla基金會(huì)的那些家伙為了給Firefox添加CoffeeScript調(diào)試支持正在拼命工作。Node也不會(huì)落后太遠(yuǎn)。但在此之前,還是徹底測試你的代碼,使用調(diào)試模式日志,搞懂你的JavaScript代碼吧?!? 有中間選擇么?有的,在裝配了開發(fā)控制臺(tái)(或者像之前提到的Firebug Lite之類的書簽工具)的Node.js或者瀏覽器中,可以使用console.log來顯示消息。這可能會(huì)有兩個(gè)問題:一是你并不想要輸出每個(gè)細(xì)節(jié),二是如果console.log不存在的話你就不會(huì)調(diào)用它。通常的解決方案就是使用包裝函數(shù),但是這樣的話,當(dāng)輸出內(nèi)容時(shí)就無法獲得關(guān)鍵的JavaScript代碼行號(hào)(因?yàn)樗械娜罩径际菑耐粋€(gè)地方,即包裝函數(shù)里輸出的)。因此我推薦如下方式:   在這個(gè)例子中,當(dāng)且僅當(dāng)?shù)刂窓诘?ldquo;哈希”中包含字符串debug(比如page.html#debug),并且瀏覽器中存在console對(duì)象時(shí),debugMode才為true。這為你提供了一種非常容易的方法,確保在頁面加載時(shí)能夠開啟或關(guān)閉輸出所有額外的信息。將debugMode聲明為window的屬性可以讓其成為全局變量?!? 一種更簡單但沒有那么通用的方式是使用吸收操作符(詳見3.1.4節(jié))以保證當(dāng)console存在時(shí)才調(diào)用console.log:   在Node下,有大量的類庫(可以使用谷歌快速搜索node logging library)能夠顯示不同冗余度的輸出。我的styout 也包含其中,它還提供對(duì)控制臺(tái)色差輸出的支持?!? 日志信息可以代替注釋,在開發(fā)過程中它提供了更多關(guān)于代碼如何運(yùn)行的信息。比如,下面是一段典型的注釋完好的代碼:   可以像下面這樣,調(diào)用console.log來代替注釋:   另外一種習(xí)慣是在代碼中使用斷言,標(biāo)準(zhǔn)的console對(duì)象中有一個(gè)assert函數(shù)對(duì)此提供很好的支持,它接受一個(gè)值和錯(cuò)誤信息作為參數(shù)(值為非真時(shí)顯示錯(cuò)誤信息)?!? 最后,編寫結(jié)構(gòu)良好的代碼是避免錯(cuò)誤的最重要的保證。盡管現(xiàn)在還不存在任何工具可以指出導(dǎo)致運(yùn)行時(shí)錯(cuò)誤的確切代碼行號(hào),但至少應(yīng)該能夠查到程序中可能引發(fā)錯(cuò)誤的那部分代碼?!? 1.5 預(yù)備   本章中我們學(xué)習(xí)了如何使用Node.js和npm在你的機(jī)器上安裝CoffeeScript。你還使用自己最愛的編輯器與這門語言來了次親密接觸,探究了使用CoffeeScript作為開發(fā)流程一部分的一些方法,并且認(rèn)識(shí)到了調(diào)試工作的挑戰(zhàn)性?!? 既然現(xiàn)在你已經(jīng)知道了如何運(yùn)行CoffeeScript代碼,是時(shí)候深入了解該語言自身的具體細(xì)節(jié)了。本書的剩余部分會(huì)有大量小代碼段,跟上思路的最好方法就是在編輯器中運(yùn)行這些代碼。如果搞不清楚它們是如何工作的,嘗試修改一兩行代碼看看會(huì)發(fā)生什么。你也可以時(shí)不時(shí)地看一下編譯后的JavaScript代碼?!? 想要運(yùn)行下面這種涉及某個(gè)文件的代碼段,還需要額外的代碼段才行:   GettingStarted/outOfContext.coffee   那些并不涉及某個(gè)文件的代碼段則能獨(dú)立運(yùn)行:   請(qǐng)相信我,如果你的編輯器配置了運(yùn)行命令的話將更加有趣,只需輕輕敲擊快捷鍵就能查看代碼運(yùn)行結(jié)果了。這是CoffeeScript初學(xué)者的最好伙伴!   ……

媒體關(guān)注與評(píng)論

   “學(xué)習(xí)CoffeeScript有助于讀者成為更優(yōu)秀的JavaScript開發(fā)人員。而且,本書讀來酣暢淋漓,對(duì)于準(zhǔn)備學(xué)習(xí)CoffeeScript的新手,這種體會(huì)尤為深刻。”   ——Brendan Eich,JavaScript之父   “很難想象現(xiàn)如今會(huì)有哪個(gè)Web程序沒有大量使用JavaScript。如果你用慣了Ruby之類的語言,再使用JavaScript就會(huì)明顯感覺在退步,這可不是什么愉快的事兒。來看看CoffeeScript吧:它是一個(gè)JavaScript預(yù)編譯器,移除了JavaScript中不必要的冗余,讓代碼編寫和源碼閱讀變成一件樂事。來,向著Coffee前進(jìn)吧!這是一本很棒的CoffeeScript入門書。”   ——David Heinemeier Hansson,Ruby on Rails之父   “CoffeeScript是編程語言領(lǐng)域最有意思的進(jìn)展之一,它吸納Ruby和Python等語言之精華,是一個(gè)極富表現(xiàn)力的語言。本書將指引你進(jìn)入CoffeeScript的世界;對(duì)于那些有志于提高JavaScript開發(fā)效率的開發(fā)者,本書同樣必不可少!”   ——Travis Swicegood,《版本控制之道——使用Git》作者

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    深入淺出CoffeeScript PDF格式下載


用戶評(píng)論 (總計(jì)13條)

 
 

  •   CoffeeScript,很不錯(cuò)的一門新語言
  •   將的很細(xì)致,書也很輕巧。很值得推薦的一本書
  •   有幾處錯(cuò)誤,內(nèi)容上佳,適合入門。
  •   我記得豆瓣閱讀上有類似的書,只要1塊9
  •   不是很厚,但寫得行云流水,讀起來很順暢。而且書中還附帶了一些注意點(diǎn),非常實(shí)用。
  •   語法簡練合理,是一本好書
  •   認(rèn)真學(xué)習(xí)學(xué)習(xí)?。?!
  •   內(nèi)容淺顯易懂 適合入門與語法學(xué)習(xí)
  •   還可以吧,不過書很薄啊!!!!!!!!!!!
  •   還不錯(cuò)!如果英文好的話,直接去網(wǎng)上搜英文原版的就行了,
  •   還是沒看,不過真得太簿了
  •   **送貨員, 送來兩本泥巴書, 要換貨還得去郵寄, 只想說一個(gè)字了。。。
  •   必學(xué)CoffeeScript
 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7