node.js实现markdowm转换成HTML
2018-01-24 17:02
429 查看
使用到的第三方包介绍
marked包 https://www.npmjs.com/package/marked功能是将markdown文本内容转换成HTML代码
例如:
var marked = require('marked'); console.log(marked('I am using __markdown__.')); // Outputs: <p>I am using <strong>markdown</strong>.</p>
browser-sync包 http://www.browsersync.cn/
功能是将根目录自动启动服务器,监听服务器中指定文件,当文件内容发生改变时,自动刷新浏览器;
例如:
// 引用 browser-Sync 模块 var browserSync = require("browser-sync"); // 将./app这个目录启动为服务器 browserSync({server: "./app"}); // 调用reload方法,刷新./app下文件core.css,注意传入的是文件名,不是路径 browserSync.reload("core.css");
当在命令行运行入口js文件时,自动启动服务器,监听3000端口
使用到的重要内置核心API
fs.watchFile(path, (curr, prev) => {// curr和prev都是path文件的stats
根据判断文件这两种状态的最近一次修改时间curr.mtime和prev.mtime是否相等,判断文件是否发生改变
}) http://nodejs.cn/api/fs.html#fs_fs_watchfile_filename_options_listener
实现思路:
监听markdown文件是否发生变化如果发生变化,读取md文件,并调用marked函数,将内容转换成HTMLconent
设计HTML模版,模版预留{{{style}}}和{{{content}}}
并将CSS文件读取写入模版,替换{{{style}}}
将HTMLconent替换{{{content}}}
启动browser-Sync服务器,进行浏览器自动刷新
具体代码
//Mrakdown文件自动转换 const fs = require('fs'); const path = require('path'); const util = require('util'); const marked = require('marked'); const browserSync = require("browser-sync"); var template = `<!DOCTYPE html> <html> <meta charset="utf-8"> <head> <title>MD转HTML</title> <style>{{{style}}}</style> </head> <body> <div class="vs"> {{{content}}} </div> </body> </html>`; //接受需要转换的文件路径 const target = path.join(__dirname, process.argv[2] || '../README.md'); // 启动浏览器自动刷新服务器 browserSync({server: path.dirname(target)}); //监视文件变化 fs.watchFile(target, (curr, prev) => { console.log(`current file's stats: ${curr.size},previous file's stats: ${prev.size}, `); // 判断文件到底有没有变化 if (curr.mtime === prev.mtime) { return false; } // 读取md文件转换成HTML fs.readFile(target, 'utf8',(error, content) => { if (error){ throw error; } var html = marked(content); fs.readFile(path.join(__dirname, './github.css'), (error, css) => { html = template.replace('{{{content}}}', html).replace('{{{style}}}', css); // 将拼接好的HMTL文件保存在当前md文件目录里 var filename = target.replace('.md', '.html'); fs.writeFile(filename, html, 'utf8', () => { console.log('completed'); browserSync.reload(path.basename(filename)); }); }) }); });
相关文章推荐
- 利用Nodejs+Express将Markdown转换为HTML(附源码)
- JS实现HTML实体与字符的相互转换(二)
- js实现HTML转换成图片
- JS实现HTML实体与字符的相互转换(一)
- 【Node.js基础篇】(六)实现如同jsp标签的HTML模板
- HTML+CSS+JS+node.js实现websocket聊天室
- 通过Dreamweaver画图把android复杂多点击的页面转换成html,再通过android和js的交互实现点击
- window.location.href妙用 标签里用js 利用这个简单的转换思路 实现 一直也无法实现的在 页面的html标签使
- Node.js实现的指定目录xml文件标签对去除及转换为txt文本文件
- cocos2dx-js 将html控件元素转换成cc.Node
- JS实现HTML标签转义及反转义
- js获取时间并实现字符串和时间戳之间的转换
- Asp.Net中的字符串和HTML十进制编码转换实现代码
- 用node.js实现ORM的一种思路
- NodeJS express访问html,css,JS等静态资源文件
- js实现字符串和数组之间相互转换操作
- 使用js实现大小写字母转换功能
- 实现在HTML页面加载完毕后执行某个JS的两种方法
- node.js的express实现jsonp
- 利用js方法实现html静态页面间参数传递