/**********markdown2html.js***********/
// 載入套件
var fs = require('fs');
var showdown = require('showdown');
var converter = new showdown.Converter();
showdown.setFlavor('github');
converter.setOption('tables', true);
var md = fs.readFileSync("markdown.md", "utf8");
var html = converter.makeHtml(md);
fs.writeFileSync("markdown.html", html);
/**********markdown2html.js***********/
/************ helloHandlebars.js ************/
var Handlebars = require("Handlebars");
var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " +
"{{kids.length}} kids:</p>" +
"<ul>{{#kids}}<li>{{name}} is {{age}}</li>{{/kids}}</ul>";
var template = Handlebars.compile(source);
var data = { "name": "Alan", "hometown": "Somewhere, TX",
"kids": [{"name": "Jimmy", "age": "12"}, {"name": "Sally", "age": "4"}]};
var result = template(data);
console.log("result=%s", result);
// Would render:
// <p>Hello, my name is Alan. I am from Somewhere, TX. I have 2 kids:</p>
// <ul>
// <li>Jimmy is 12</li>
// <li>Sally is 4</li>
// </ul>
/************ helloHandlebars.js ************/
確認樣本引擎正不正確的測試程式
/**************bookHandlebars.js*************/
var fs = require("fs");
var handlebars = require("handlebars");
var showdown = require('showdown');
var converter = new showdown.Converter();
var md = fs.readFileSync("user/markdown/markdown.md", "utf8");
var viewHtml = fs.readFileSync("view.html", "utf8");
var viewRender = handlebars.compile(viewHtml);
var bookJson = fs.readFileSync("user/markdown/book.json", "utf8");//讀取
var book = JSON.parse(bookJson); // 轉成一個物件,被用在側邊欄
book.html = converter.makeHtml(md); // 轉成 html
var html = viewRender(book);
fs.writeFileSync("user/markdown/markdown.html", html); // 套樣板
/**************bookHandlebars.js*************/
07-templateServer
套樣板
靜止伺服器
/************** templateServer.js ****************/
var fs = require('mz/fs');
var showdown = require('showdown');
var handlebars = require('handlebars');
var koa = require('koa');
var serve = require('koa-static');
var route = require('koa-route');
var path = require('path');
var render = {
view:handlebars.compile(fs.readFileSync("view.html", "utf8")),
}
function *view(book, file) { // view(mdFile):convert *.md to html
var bookPath = path.join(__dirname, "/user/"+book);
var filePath = path.join(__dirname, "/user/"+book+"/"+file);
var fstat = yield fs.stat(filePath);
if (fstat.isFile()) {
if (this.path.endsWith(".md")) {
this.type = "html";
var md = yield fs.readFile(filePath, "utf8");
var bookJson = yield fs.readFile(bookPath+"/book.json", "utf8");
var book = JSON.parse(bookJson); // 建立 book 物件
book.html = converter.makeHtml(md); // 轉換成 html
var page = render.view(book); // 拿去套樣板
console.log("page=", page);
this.body = page;
} else {
this.type = path.extname(this.path);
this.body = fs.createReadStream(filePath);
}
}
}
/*
var md = fs.readFileSync("user/markdown/markdown.md", "utf8");
var viewHtml = fs.readFileSync("view.html", "utf8");
var viewRender = handlebars.compile(viewHtml);
var bookJson = fs.readFileSync("user/markdown/book.json", "utf8");
var book = JSON.parse(bookJson);
book.html = converter.makeHtml(md);
var html = viewRender(book);
fs.writeFileSync("user/markdown/markdown.html", html);
*/
var app = koa();
var converter = new showdown.Converter();
converter.setOption('tables', true);
app.use(serve(path.join(__dirname, '')));
app.use(route.get('/view/:book/:file', view));
if (!module.parent) app.listen(3000);
console.log('listening on port 3000');
/************** templateServer.js ****************/