是否有一個全局對象可以從具有各種參數的玉模板中訪問?如何獲取正在執行的玉文件的文件名
是否有一個全局變量與當前正在執行的玉文件的路徑?
!!! 5
html
head
title Test
body
//- I want to be able to know what the current script file is...
p Hello, I am: #{globals.scriptfilename}
是否有一個全局對象可以從具有各種參數的玉模板中訪問?如何獲取正在執行的玉文件的文件名
是否有一個全局變量與當前正在執行的玉文件的路徑?
!!! 5
html
head
title Test
body
//- I want to be able to know what the current script file is...
p Hello, I am: #{globals.scriptfilename}
有一個全局變量。您可以使用節點的util.inspect(object)查看它的內容。
它不像JSON.stringify()
那樣用「[Circular]」自動替換循環引用。
使用樣板快速的應用程序,我發現這些:
['node','/Users/mike/Development/test/web.js']
'/Users/mike/Development/test/web.js'
如果」請使用gulp-jade
,將gulp-data
添加到組合中並使用此代碼:
var jade = require('gulp-jade');
var data = require('gulp-data');
gulp.src('**/*.jade')
.pipe(data(function (file) {
return {
relativePath: file.history[0].replace(file.base, '')
};
}))
.pipe(jade())
這會給你一個relativePath
在你的jade
模板中,類似於about/index.jade
,相對於基礎文件夾。
我不完全知道在哪裏/如何產生的file.history
的,但對我來說[0]
指出,原來的文件名(與磁盤上的絕對路徑)
你如何訪問模板中的'relativePath'? – dopatraman
這將是一個全局變量,所以只要在任何地方輸入'relativePath'即可。 –
不,不確定。 – dopatraman
我的解決辦法:
//gulpfile.js
var $path = require('path'),
jade = require('gulp-jade'),
isProduction = process.env.ENV == 'production';
gulp.task('watch', function() {
gulp.watch("**/*.jade")
.on('change', function(event) {
compileJade(event.path, isProduction);
});
});
function compileJade(path, isCompress) {
gulp.src(path)
.pipe(jade({
pretty: !isCompress,
locals: {
_path_: path,
_basename_: $path.basename(path)
}
}));
}
在玉文件,你可以使用_path_和_basename_這樣的:
<!-- #{_path_}, #{_basename_} -->
還有一兩件事要注意:字符串插不JAD工作e評論。所以下面的代碼將不會在結果html文件中插值:
// #{path}
當提示編輯時,確保您正在修改帖子中的所有內容,請不要選擇要修復的內容。如果在問題中添加新標籤,請確保您也修復語法,拼寫等。 – Taryn
感謝您的反饋 –
爲什麼選擇此選項? – dopatraman