happypeter / haoduoshipin

好多视频
http://haoduoshipin.com
236 stars 88 forks source link

metainfo parsing #395

Closed happypeter closed 9 years ago

happypeter commented 9 years ago

比如有下面的文件内容:

metainfo = {
'video': 'qiniu.com/166.mp4',
'update': "2014年5月6日“,
}

# mardown 内容
...

如何把 metainfo 中的内容提取出来,插入到一个简单的模板中呢?
happypeter commented 9 years ago

一个思路是这样:

happypeter commented 9 years ago

https://www.npmjs.com/package/gulp-ejs

billie66 commented 9 years ago

https://github.com/paularmstrong/swig 模板引擎

var path = require('path');
var swig = require('gulp-swig');
var data = require('gulp-data');

var getJsonData = function(file) {
  return require('./src/json/' + path.basename(file.path).replace(/html$/, 'json'));
};

gulp.task('build', function () {
    return gulp.src('src/md/**/*.md')
        .pipe(markdown())
        .pipe(wrap({src: 'src/layout/default.html'}))
        .pipe(data(getJsonData))
        .pipe(swig())
        .pipe(gulp.dest('dist'));
});

修改文件之后,为了让相应的页面内容能够实时更新,上面的代码

.pipe(swig())

应该代替为

.pipe(swig({defaults: { cache: false }}))
billie66 commented 9 years ago

每一个视频对应一个 json 文件,位置 src/json/*.json,并且视频 json 文件的名字与视频笔记名相同,比如说第一个视频笔记名为 src/md/1.md, 则其对应的 json 文件名为 src/json/1.json

json 文件的格式为:

{
  "title": "the first episode",
  "desc": "intro react"
}

那对应的模板文件,src/layout/default.html 需要添加一些代码,如下:

<h3>{{ title }}</h3>
<p>{{ desc }}</p>
happypeter commented 9 years ago

对,就是这个效果