我想在CoffeeScript代碼中重用JavaScript庫(sim.js)。在sim.js的例子中,有3個文件,「sim-0.26.js」,「buffet_restaurant.js」和「buffet_restaurant.html」這樣連接在一起(我已經消除了一些簡化的參數):從CoffeeScript調用JavaScript「新」
裏面的 「buffet_restaurant.html」,有
<script type="text/javascript" src="./buffet_restaurant_files/sim-0.26.js"></script>
<script type="text/javascript" src="./buffet_restaurant_files/buffet_restaurant.js"></script>
<script type="text/javascript">
$(function() {
$("#run_simulation").click(function() {
var results = buffetRestaurantSimulation();
...
其中buffetRestaurantSimulation是buffet_restaurant.js內部的功能。在buffet_restaurant.js代碼開始了這樣的:
function buffetRestaurantSimulation()
{
var sim = new Sim();
...
其中辛在SIM-0.26.js被定義,這樣的:
function Sim(){...};
本示例運行正常。我想在node.js的CoffeeScript文件中重複使用「Sim」。因此,我想這(從茉莉節點調用):
sjs = require "./sim-0.26.js"
mysim = new sjs.Sim()
那裏SIM-0.26.js是在同一個目錄中testsim.spec.coffee,包含此代碼的文件。當我調用此使用:
jasmine-node --coffee ./testsim.spec.coffee
我得到這個:
mysim = new sjs.Sim();
^
TypeError: undefined is not a function
我懷疑我做一噸的東西是錯誤的。我對這一切都很陌生。
任何想法?
你是說我不能再使用(調用)一個普通的老JavaScript庫,除非我修改它以使用「出口」? – 2012-08-17 02:25:59
@DougKnesek:它不是一個「普通的舊JavaScript」,它是一個「node.js命名空間」的東西:如果你不導出它,它不會存在,不管CoffeeScript或JavaScript。 – 2012-08-17 02:30:25