在编译时如何让TextMate在CoffeeScript中查看“require”表达式?

时间:2011-07-18 01:18:45

标签: javascript jquery textmate coffeescript

在TextMate中编写CoffeeScript并希望使用第三方Javascript库(如jQuery或Raphael)时,需要添加“require”,如下所示:

$ = require 'jquery'

这在使用命令行中的coffee -c myfile.coffee时工作正常,但在尝试使用此错误进行编译时在TextMate包中失败:

Error: Cannot find module 'jquery'
at Function._resolveFilename (module.js:317:11)
at Function._load (module.js:262:25)
at require (module.js:346:19)
at Object. (.:3:7)
at Object. (.:4:4)
at Module._compile (module.js:402:26)
at Object.run (/usr/lib/node_modules/coffee-script/lib/coffee-script.js:62:19)
at /usr/lib/node_modules/coffee-script/lib/command.js:120:29
at Socket. (/usr/lib/node_modules/coffee-script/lib/command.js:154:14)
at Socket.emit (events.js:61:17)

在此示例中,代码全部位于项目根目录的同一目录中。

指定时会出现同样的情况:

$ = require 'jquery.js'

其他人如何使用TextMate包在CoffeeScript中进行编译?除了最琐碎的代码之外,这对我来说似乎是一个显而易见的事。除了语法高亮之外,这肯定是这个包中最重要的部分之一吗?

1 个答案:

答案 0 :(得分:3)

您点击了“运行”命令(⌘R),相当于coffee myfile.coffee

您想要“编译和显示JS”(⌘B),相当于coffee -c --print --bare myfile.coffee。这应该打开一个带有编译输出的窗口

var $;
$ = require('jquery');

至于require - 像jQuery和Raphael这样的库,我希望你理解require只是一个用于加载模块的运行时函数;它没有编译时的意思。您可能来自C ++或Java这样的语言,其中有一个“链接器”。另一方面,在CoffeeScript中,代码一次编译为JavaScript一个文件,JavaScript文件被单独加载到运行时环境中(无论是浏览器还是像Node.js这样的框架)。