我刚刚使用CoffeeScript而且我已经遇到了课程。 我想让我的文件像节点一样构建,这样我就可以要求一个包含这样的类的JavaScript文件。
Test = require "test.js"
Test.start()
其中start是Test Class的方法。
这可能吗?
答案 0 :(得分:4)
这可能吗?
与Node不完全相同。浏览器环境中没有同步require
。但是,您可以尝试使用众多异步库中的一个来查看AMD。最着名的实现是require.js。
答案 1 :(得分:3)
我发现在浏览器环境中使用CommonJS模块(Node.js使用的模块)的最简单方法是使用Browserify。我个人也更喜欢CommonJS模块定义到AMD的定义,但这只是个人品味。
另外,请注意,为了导出您的课程以便require 'test'
直接为您提供课程构造函数,您必须将课程分配到module.exports
:
# In test.coffee
module.exports = class Test
@start = -> console.log 'start!'
然后将该文件编译为test.js
,您就可以使用它了:
Test = require './test'
Test.start()
在Node.js中,这将是正常工作。在浏览器中,您需要首先使用Browserify(或其他工具)处理文件以使其正常工作(它将创建正确的require
函数以及一些exports
和module.exports
CommonJS模块的变量正常工作)。
答案 2 :(得分:2)
看一下stitch,hem(灵感来自针脚,但有更多整洁的功能)和browserify。
就个人而言,我更喜欢下摆。你可以用它做这样的事情:
# app/lib/model.coffee
module.exports = class Model
...
# app/lib/util.coffee
helper1 = -> ...
helper2 = -> ...
module.export = {helper1, helper2}
# app/index.coffee
Model = require 'lib/model'
{helper1} = require 'lib/util'
# do whatever you want with required stuff
...
Hem负责动态编译CoffeeScript并将所有需要的代码捆绑在一起(它还支持npm模块和任意js libs作为代码的外部依赖项,有关更多详细信息,请参阅文档)。