我有一个src/templates/
满是小胡子模板的目录。我将如何组合和缩小这些内容,以便在我的 CoffeeScript 应用程序中使用它们?
我已经按照https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的指示将我的 CoffeeScript src 合并和缩小到 js 中。
我有一个src/templates/
满是小胡子模板的目录。我将如何组合和缩小这些内容,以便在我的 CoffeeScript 应用程序中使用它们?
我已经按照https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools的指示将我的 CoffeeScript src 合并和缩小到 js 中。
首先,我假设您的模板正在被导出到全局对象(例如,每个模板都执行,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
. 请注意,这假定模板中没有单引号 ( '
)。要么在它们前面加上反斜杠,要么始终使用双引号。