2

我有一个src/templates/满是小胡子模板的目录。我将如何组合和缩小这些内容,以便在我的 CoffeeScript 应用程序中使用它们?

我已经按照https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的指示将我的 CoffeeScript src 合并和缩小到 js 中。

4

1 回答 1

8

首先,我假设您的模板正在被导出到全局对象(例如,每个模板都执行,window.userpane =而不仅仅是userpane =)。这是最重要的。如果您正在这样做,并且您正在成功连接和编译,那么唯一剩下的就是在每次连接后进行自动缩小。

简短的回答:目前还没有很好的工具。你最好的选择是扩展你现有的 Cakefile 像

fs.watchFile 'concatenated.js', ->
  exec 'uglifyjs concatenated.js'

(要安装UglifyJS,请运行npm install uglify-js。)

现在,这并不能解决确保脚本以合理的顺序连接的问题。(例如,如果您window.templates = {}在文件 A 和templates.userpane =文件 B 中都有,那么在文件 B 之前连接文件 A 非常重要。)为此,您应该留意Sprockets,它可以让您在每个 JS 的顶部指示归档它的依赖关系,然后按照尊重这些依赖关系的顺序组合它们。Sprockets 的创建者 Sam Stephenson 是 CoffeeScript 社区的活跃成员,Sprockets 中对 CoffeeScript 的一流支持将在 Sprockets 2 中提供(此处为 repo )。

更新:template这是一个 Cake 任务,用于对目录中的所有内容进行实际读取和连接:

templateJs = ''
files = fs.readdirSync 'template'
for file in files
  contents = fs.readFileSync file, 'utf8'
  name = file.replace /\..*/, '' # remove extension
  templateJs += "window.#{name} = '#{contents}';"

然后在你连接的 JS 前面加上templateJs. 请注意,这假定模板中没有单引号 ( ')。要么在它们前面加上反斜杠,要么始终使用双引号。

于 2011-04-24T04:00:10.227 回答