V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hustlzp
V2EX  ›  Node.js

分享一个自己用于制作简历的 Node.js 小脚本,把 Jade 和 YAML 编译成 HTML

  •  1
     
  •   hustlzp · 2014-09-24 19:30:04 +08:00 · 5236 次点击
    这是一个创建于 3715 天前的主题,其中的信息可能已经有所发展或是发生改变。

    拿了上海一家互联网金融小公司的 offer,面试的时候带着电脑把 Web 版简历给面试官看了下,感觉还是蛮加分的。

    挺简单的,就是用 YAML 做简历数据源,Jade做模板,然后编译成 HTML 就完了。使用 Gulp 来监控文件变化,自动编译。然后找个地方托管,比如 GitHub Pages 就可以了。

    Web简历地址: http://resume.hustlzp.com
    代码: https://github.com/hustlzp/resume

    主要的代码在这里:

    https://raw.githubusercontent.com/hustlzp/resume/gh-pages/gulpfile.js

    var fs = require('fs');
    var jade = require('jade');
    var gulp = require('gulp');
    var yaml = require('js-yaml');
    var moment = require('moment');
    var Promise = require("bluebird");
    
    var dataFile = 'data.yml';
    var jadeFile = 'index.jade';
    var htmlFile = 'index.html';
    
    // 将相关函数promisify
    Promise.promisifyAll(fs);
    var renderFile = Promise.promisify(jade.renderFile);
    
    // 将data.yml和index.jade编译为index.html
    gulp.task('build', function () {
      fs.readFileAsync(dataFile, "utf8").then(function (content) {
        return yaml.safeLoad(content);
      }).then(function (data) {
        // 输出未压缩的HTML
        data.pretty = true;
        data.updateTime = moment().format("YYYY-MM-DD");
        data.currentYear = moment().format("YYYY");
        return renderFile(jadeFile, data);
      }).then(function (html) {
        return fs.writeFileAsync(htmlFile, html);
      }).then(function () {
        console.log(moment().format("YYYY-MM-DD HH:mm:ss") + ' - SAVED');
      }).catch(function (err) {
        console.log(moment().format("YYYY-MM-DD HH:mm:ss") + ' - ERROR\n' + err);
        fs.writeFile(htmlFile, err);
      });
    });
    
    // 源文件变动时,触发编译
    gulp.task('watch', function () {
      gulp.watch([jadeFile, dataFile], ['build']);
    });
    
    // gulp运行时触发一次编译,然后开启监控进程
    gulp.task('default', ['build', 'watch']);
    
    6 条回复    2014-09-26 14:02:53 +08:00
    hustlzp
        1
    hustlzp  
    OP
       2014-09-24 19:34:16 +08:00
    @Livid 使用markdwon格式发布的,代码字符中好多白色的,和背景分不清啦~
    pcwuyu
        2
    pcwuyu  
       2014-09-24 22:05:21 +08:00
    不错啊。。看标题我还以为是免费生成简历来着的。。。。。
    hustlzp
        3
    hustlzp  
    OP
       2014-09-25 08:10:51 +08:00
    @pcwuyu 恩恩...只是一个自动编译的小脚本...
    tolerious
        4
    tolerious  
       2014-09-25 14:30:19 +08:00
    可惜了光电的娃娃啊
    hustlzp
        5
    hustlzp  
    OP
       2014-09-25 14:39:27 +08:00
    @tolerious 对光电确实不感兴趣啊...
    tolerious
        6
    tolerious  
       2014-09-26 14:02:53 +08:00
    @hustlzp 互联网金融,不错哇
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3367 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.