爲了讓我的CoffeeScript代碼能夠在Node.js和javascript上運行,我應該小心避免什麼?顯而易見的答案是「不要使用Node.js」函數,但我想知道是否有其他小的「陷阱」會破壞兩者之間的代碼。將Coffeescript編譯爲Node.js與瀏覽器的JS差異
3
A
回答
5
假設你不依賴超出了語言本身的任何API(例如,您不要使用超過setTimeout
/clearTimeout
和setInterval
/clearInterval
和附設於Math
其他任何功能),只有兩個事情要操心:
你可以依靠新的JS功能,如
Array::forEach
和Array::indexOf
在節點被周圍,而不是在瀏覽器中。 CoffeeScript分別幫助您避免這兩個陷阱,分別是for x in arr
和if x in arr
語法。在瀏覽器中,全局對象是
window
;在Node中,全局對象是global
,但您通常需要導出事物。因此,如Underscore.js等人所示,通常的解決方案是將root = this
寫入模塊的頂部,並將所有內容附加到root
。在最外層的範圍內,this
指向瀏覽器中的window
,Node中指向exports
。
我在這裏假設你是在單個腳本中定義你的模塊。如果不是的話,你應該看看像sstephenson的stitch這樣的工具,它可以讓你編寫一組模塊,它們可以在節點中彼此相隔require
,然後將它們拼接在一起用於瀏覽器。
相關問題
- 1. 的Node.js - CoffeeScript的編譯器的怪異行爲
- 2. JS跨瀏覽器不一致/差異
- 3. 與瀏覽器顯示器的差異
- 4. iOS瀏覽器的差異
- 5. 沒有node.js的CoffeeScript編譯器?
- 6. 編譯器差異
- 7. 與參考編譯器的差異
- 8. 克服瀏覽器差異
- 9. 瀏覽器中的Typescript transpile與預編譯的js文件
- 10. love2d編譯器行爲的差異
- 11. 編譯器 - 平臺差異
- 12. Tomcat Java編譯器差異
- 13. Jquery的.VAL()瀏覽器的差異
- 14. 莫名的跨瀏覽器的差異
- 15. 如何編譯瀏覽器
- 16. contenteditable嵌套的瀏覽器差異
- 17. 瀏覽器之間的HTML差異
- 18. 瀏覽器元素的定位差異
- 19. CoffeeScript編譯器API
- 20. 差異* .js文件帶捲曲打開,在瀏覽器中
- 21. 瀏覽器和Firebug覆蓋差異
- 22. HTTP緩存,瀏覽器差異
- 23. 差異在IE瀏覽器VS
- 24. 如何瀏覽到通過coffeescript標記編譯的javascript?
- 25. 如何使用Node.js自動編譯.coffeescript?
- 26. 編譯服務器端coffeescript與gulp
- 27. 火狐瀏覽器的風格與導航欄的差異
- 28. 差異呈現日期 - IE的JavaScript與瀏覽器的JavaScript
- 29. 標題在差異瀏覽器上呈現差異
- 30. 防止JS的運行條件編譯透露IE瀏覽器
+1 for'root = this' - 儘管強大的卡茨先生的[在本文中讓人放心的語氣](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and這個/),如果你像伯納姆先生說的那樣做,你的生活一般會簡單得多。 – fish2000 2012-03-02 03:10:17
應該被標記爲接受答案 – 2012-03-02 14:07:45