转换工具
markdown转换使用python的markdown库
配置python环境,并安装markdown转换库
$ pip install markdown
编写python脚本
import sys
import markdown
import codecs
from markdown import extensions
# from markdown.treeprocessors import Treeprocessor
def main(argv):
print("收到的参数 === %s" %(argv))
name = argv[0]
in_file = 'Markdown/%s.md' % (name)
out_file = 'HTML/%s.html' % (name)
input_file = codecs.open(in_file, mode="r", encoding="utf-8")
text = input_file.read()
html = markdown.markdown(text,extensions=['markdown.extensions.toc','markdown.extensions.fenced_code','markdown.extensions.tables'])
# 保存文件
output_file = codecs.open(out_file, mode="w", encoding="utf-8")
output_file.write(html)
if __name__ == "__main__":
main(sys.argv[1:])
-
为什么用python来做转换?
1.好用的js库都是jquery的,我。。。
2.其它非jq的转换库三条不会和大多数网站一样生成带pre标签的html -
所以,我就找我朋友帮我写了一个python的转换工具,别说,害挺好用的 ~
后台文件服务
- 我实现的思路是,将前端提交的markdown字符串提交到web服务,再由web服务对其关键信息进行加密后,提交到文件服务,并在文件服务中生成.md文件,生成后转成html文件存储在文件服务器中相应的位置
- 我是用自己电脑做的文件服务器,为了图省事,就把文件夹放在桌面上了
- 最后那个files就是文件存储路径 /Users/musoul/Desktop/files
- 文件夹内部结构如下
- 生成的markdown文件会出现在Markdown文件夹中,转换完成的html文件,会放在HTML文件夹中
文件服务代码部分
- 项目文件结构
- router文件夹下的文件,用来做路由中间件,controller文件夹下的文件,用来处理接口请求
Home
- fileServer.js文件,用于创建web服务,以及接口的统一响应
const fileServer = require('express')()
const process = require('process');
const router = require('./router/index')
router(fileServer)
fileServer.all('*', (req, res, next) => {
// 所有的接口都可以访问
res.header('Access-Control-Allow-Origin', '*');//自定义中间件,设置跨域需要的响应头。
res.header('Access-Control-Allow-Headers', '*');//自定义中间件,设置跨域需要的响应头。
next()
})
fileServer.listen('8888', () => {
// 进入文件摆放路径
process.chdir('/Users/musoul/Desktop/files')
// cwd()获取node执行命令行时的路径
console.log(process.cwd())
})
router中间件
- index.js
const fileManager = require('./fileManager')
module.exports = function(fileServer) {
fileServer.use('/fileManager', fileManager)
}
- fileManager.js
const router = require('express').Router()
const fileManager = require('../controller/fileManager')
router.post('/writeToFile', fileManager.writeToFile)
module.exports = router
controller层
- fileManager.js
const fs = require('fs')
const childProcess = require('child_process')
class fileManager {
constructor(){}
writeToFile(req, res) {
const file_name = req.query.filename
const file_content = req.query.content
const cwd_path = process.cwd()
console.log(`${cwd_path}/${file_name}.md`)
fs.writeFile(`${cwd_path}/Markdown/${file_name}.md`, file_content, (err) => {
if (err) {
console.log(err)
return
}
var cmd = `python MarkdownToHTML.py ${file_name}`
childProcess.exec(cmd, (err, stdout, stderr) => {
if (err) {
console.log('error : ' + err)
return
}
console.log('stuout : ' + stdout)
console.log('stderr : ' + stderr)
})
var resData = {'res_code': 1, 'msg': 'markdown文件已转换成HTML文件', 'data': {}}
res.send(200, resData)
res.end()
return
})
}
}
module.exports = new fileManager()
效果展示
- 下面就是postman请求的返回
- 生成的markdown文件
- 效果
- 转换成的html文件
- 效果
最后
大家要是感兴趣的,可以去我的代码仓库下载一下,文件结构创建好就可以玩了,接口请求地址
method post
http://127.0.0.1:8888/fileManager/writeToFile
filename: 想要的文件名
content: markdown文本