我有一个模块:
# a.coffee:
@f = -> console.info 'Hell, oh, world!' # Note that exports == this以及我需要它的另一个模块:
# b.coffee:
a = require './a'
a.f()我希望在没有显式构建步骤来生成a.js的情况下,在b.coffee中运行代码。
在NodeJS中,我所需要做的就是在执行任何其他操作之前执行一次require('coffee-script')。
对于浏览器,有没有类似的技巧?
发布于 2013-05-31 23:07:07
在我告诉你如何做之前,我想明确的是,任何人都不应该在任何类似于生产环境的环境中这样做,因为这会迫使每个浏览器在每次加载页面时编译它。考虑到这一点:
查看http://jashkenas.github.io/coffee-script/#scripts。如果您通过脚本标记将CoffeeScript编译器放在页面中,则可以使用<script type="text/coffeescript">标记包含CoffeeScript文件(甚至内联源代码)。脚本将按照它们在html中出现的顺序进行编译和运行。
发布于 2013-05-31 22:10:41
浏览器本身并不支持coffeescript。如果您只希望能够对咖啡文件进行更改并引用它,而不必每次都手动运行命令,则可以使用咖啡编译器查看该文件,并在对其进行更改时更新js文件。
coffee --watch --compile experimental.coffee但是,在浏览器中工作时,必须有一个步骤来创建和引用js文件。
根据评论进行更新
既然您想要一个库支持commonjs模块,那么您可能需要研究一下browserify。它支持您想要用它的transform函数做的事情:https://github.com/substack/node-browserify#btransformtr。
不过,这可能永远不会像你想的那样好。编译过程必须发生,浏览器才能读取coffeescript。出于性能原因,如果这发生在服务器上,而不是每次都使用users time 的客户机上,那会更好!
编译可以很简单。因为您只希望在服务器上有静态文件,所以编写一个脚本来获取所有咖啡文件,将它们打包到一个压缩的js文件中,然后您就可以在html中引用该文件。这可以使用can编译器或grunt之类的构建工具来完成。
https://stackoverflow.com/questions/16856221
复制相似问题