happypeter / haoduoshipin

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

shownote 不要放到数据库,保存成 .md 文件 #390

Closed happypeter closed 9 years ago

happypeter commented 9 years ago

1.md 2.md 3.md ... meteorjs 从文件系统中读取这些数据,用 marked/highlightjs 渲染一下,显示在页面上。

放到一个 gitrepo 里面,这样我可以方便的用 sublime 来编辑了。而且跟我自己用 gulp 搭建的写书环境,或者 blog 环境也是兼容的,太棒了

billie66 commented 9 years ago

视频的 shownote 放到 meteor 项目的 private 目录下,meteor 把 private 目录中的文件都看做是静态assets 文件,在 build 的时候直接拷贝到相应目录 。通过 server 端的 Assets.getText() 接口读取 private 目录中的文件内容。

Meteor.methods({
  'getShowNote': function(episodeId) {
    return Assets.getText('shownote/' + episodeId.toString() + '.md');
  }
});

当访问视频展示页面的时候,在挂载 react 组件之前调用 getShowNote 方法

 componentWillMount() {
    let that = this;

    Meteor.call('/episodes/getShowNote', episodeId, function(err, res){
      if (err) {
        console.log('Can not find the note file of this episode!');
        return;
      }
      that.setState({showNote: res});
    });
  },

这样,视频笔记就可以单独编辑了,也不需要储存到数据库。另外,meteor 一个强大的功能是,若项目文件有改动,meteor 则自动重启。