當(dāng)你在 CoffeeScript 上創(chuàng)建了一個函數(shù),并希望將它用在有網(wǎng)頁瀏覽器的客戶端和有 Node.js 的服務(wù)端時。
以下列方法輸出函數(shù):
# simpleMath.coffee
# these methods are private
add = (a, b) ->
a + b
subtract = (a, b) ->
a - b
square = (x) ->
x * x
# create a namespace to export our public methods
SimpleMath = exports? and exports or @SimpleMath = {}
# items attached to our namespace are available in Node.js as well as client browsers
class SimpleMath.Calculator
add: add
subtract: subtract
square: square
在上面的例子中,我們創(chuàng)建了一個新的名為 “SimpleMath” 的命名空間。如果 “export” 是有效的,我們的類就會作為一個 Node.js 模塊輸出。如果 “export” 是無效的,那么 “SimpleMath” 就會被加入全局命名空間,這樣就可以被我們的網(wǎng)頁使用了。
在 Node.js 中,我們可以使用 “require” 命令包含我們的模塊。
$ node
> var SimpleMath = require('./simpleMath');
undefined
> var Calc = new SimpleMath.Calculator();
undefined
> console.log("5 + 6 = ", Calc.add(5, 6));
5 + 6 = 11
undefined
>
在網(wǎng)頁中,我們可以通過將模塊作為一個腳本嵌入其中。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>SimpleMath Module Example</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="simpleMath.js"></script>
<script>
jQuery(document).ready(function (){
var Calculator = new SimpleMath.Calculator();
var result = $('<li>').html("5 + 6 = " + Calculator.add(5, 6));
$('#SampleResults').append(result);
});
</script>
</head>
<body>
<h1>A SimpleMath Example</h1>
<ul id="SampleResults"></ul>
</body>
</html>
輸出結(jié)果:
A SimpleMath Example
· 5 + 6 = 11