我为我的前端项目使用Coffeescript,直到现在我一直在使用Middleman,并且我想切换到Gulp。随着中间人,我能够做这样的事:如何将变量从gulp传递给javascript或coffeescript资产
if foo is "<%= bar %>"
# do something
其中bar
是config.rb
一个变量。我想用Gulp做同样的事情。有没有办法将变量和/或函数从gulp文件传递给脚本资源?
我为我的前端项目使用Coffeescript,直到现在我一直在使用Middleman,并且我想切换到Gulp。随着中间人,我能够做这样的事:如何将变量从gulp传递给javascript或coffeescript资产
if foo is "<%= bar %>"
# do something
其中bar
是config.rb
一个变量。我想用Gulp做同样的事情。有没有办法将变量和/或函数从gulp文件传递给脚本资源?
我结束了使用gulp-template
编译lodash templates看起来几乎与erb
相同。因此,让我们一起来slim
模板的一个例子,它通常是这样的:
doctype html
html
head
title = project_title
body
#content
- if html5?
p Routes look like "example.com/some/route"
- else
p Routes look like "example.com/#!/some/route"
#footer
| Copyright © #{year} #{author}
现在翻译成:
doctype html
html
head
title <%= projectTitle %>
body
#content
<% if isHtml5() { %>
p Routes look like "example.com/some/route"
<% } else { %>
p Routes look like "example.com/#!/some/route"
<% } %>
#footer
| Copyright © <%= year %> <%= author %>
通知<% .. %>
之间的代码不再被红宝石,是普通的JavaScript。您可以以任何想要的疯狂组合使用它,但是您必须仔细考虑其中的输出:if .. else
和段落之间没有缩进差异,正如您期望从一个超薄模板中所看到的那样。
要公开数据的模板,传递一个对象来gulp-template
这样的:
var gulp = require('gulp');
var template = require('gulp-template');
var slim = require('gulp-slim');
gulp.task('slim', function() {
return gulp.src('src/*.slim')
.pipe(template({
projectTitle: 'Example',
year: '2015',
author: "Master Yoda"
isHtml5: function(){
// ...
}
}))
.pipe(slim({pretty: true}))
.pipe(gulp.dest('dist'));
});
文档可以在这里找到:https://github.com/sindresorhus/gulp-template
对于这种特殊的情况下,另一种是gulp-jade
玉模板(与slim类似,但是您可以使用vanilla jade语法而不使用gulp-templates
)。
其他通用模板引擎包括:痛饮,胡子等..
你指的是这个[中间人(https://www.npmjs.com/package/middleman)?你能否添加一些关于你如何使用中间人的细节,以及你期望在这个系统中扮演什么样的角色? – Ben 2015-01-16 15:52:20
啊不,我指的是我之前使用的[Middleman ruby app](https://middlemanapp.com/),而不是gulp/grunt来生成资产。这个位''<%= bar %>''是'erb' sintax,所以基本上我能够将一些变量和一些助手从一个'config.rb'暴露给任何模板:P – 2015-01-16 16:14:04
我最终使用'lodash'模板,发布一个很快回答我的问题 – 2015-01-16 16:15:17