MarkDown,写作神器,还是有必要掌握一下。写作也是一种很重要的能力,需要长久坚持和锻炼。
写作能力重不重要?语文重不重要?读书重不重要?
我觉得语文和写作能力是所有能力的基础,是重中之重。因为你所有感知和获取的信息的加工整理都离不开语文,你对外界产生的理解和影响也离不来语文。它甚至可能影响你的求职,你的工作,你的人际关系。你对其他信息的感知和获取,机遇的把握等等都离不开它,鲁迅的一只笔杆子抵得上千军万马。
以下为一个最简单的,使浏览器支持MarkDown渲染和语法高亮的示例,可以为以后的个人的markdown博客储备。
后续计划写个专栏,介绍下自己做一个markdown的个人博客网站是多么的简单,写博客就成了往目录里丢md文件这样简单。
使用了流行的markdown-it(MarkDown渲染),highlight.js(语法高亮)和mermaid.js(画流程图、时序图等的js库)组件。
先看一个我的个人博客截图,后续准备开源出来,没使用数据库,只使用md文件和配置文件就完成了所有功能。
所以部署也很简单,不用先建库,建表,直接放到服务器的一个任意目录里运行即可,写博客就是往目录里丢md文件而已。
增加功能,把微信公众号打通,使用自己的公众号发布文章,直接电脑上编译好md文件,往聊天窗口一丢就完成了文章的发布。至于文章分类,文章排序和推荐文章,都是内部搞了个算法自动完成的。且前台如果有新评论或留言,会自动推送到我的公众号里。
附图,测试demo浏览器显示出来的效果:
附个人的markdown博客截图,使用go语言加mardown实现。
附demo的完整的html的使用代码,仅在一个html文件中,可直接用浏览器打开运行看到效果:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>markdown in the browser</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/railscasts.min.css"> <link rel="stylesheet" href="./mytable.css"> <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/atom-one-dark.min.css"> --> <script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.0.0/build/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/markdown-it/10.0.0/markdown-it.min.js"></script> <script src="https://cdn.bootcss.com/mermaid/8.0.0-rc.8/mermaid.min.js"></script> <style> .md_source{ display: none } </style> </head> <body> <pre class="md_source"> # Welcome to Yang's Blog! this is a most simple demo, used markdown-it and highlight.js in the browser to rendering markdown files ## used markdown-it in the browser > 你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器。 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 *** Rendered by **markdown-it**. ### 表格demo,欢迎使用Markdown Name | Age --------|------ Bob | 27 Alice | 23 ### 代码高亮例子 ```golang package main import "fmt" func main() { fmt.Println("hello ") } ``` # 一级标题 ## 二级标题 ### 三级标题 ### 表格例子 欢迎使用Markdown | Command | Description | | --- | --- | | `git status` | List all *new or modified* files | | `git diff` | Show file differences that **haven't been** staged | ### 链接 [baidu](https://baidu.com) ### 插入图片 ![imgs](https://ucc.alicdn.com/images/user-upload-01/2019091813595558.png) - 项目 - 项目 - 项目 - 列表信息 + 二级列表 * 三级列表 1. 项目1 2. 项目2 3. 项目3 - [ ] 计划任务 - [x] 完成任务 创建脚注格式类似这样 [^RUNOOB] > 最外层 > > 第一层嵌套 > > > 第二层嵌套 ```mermaid graph LR A --- B B-->C[fa:fa-ban forbidden] B-->D(fa:fa-spinner); ``` </pre> <div class="mermaid"> graph LR A --- B B-->C[fa:fa-ban forbidden] B-->D(fa:fa-spinner); </div> <div class="md_render"> </div> <script> var md; var defaults = { html: false, // Enable HTML tags in source xhtmlOut: false, // Use '/' to close single tags (<br />) breaks: false, // Convert '\n' in paragraphs into <br> langPrefix: 'language-', // CSS language prefix for fenced blocks linkify: true, // autoconvert URL-like texts to links typographer: true, // Enable smartypants and other sweet transforms // options below are for demo only _highlight: true, _strict: false, _view: 'html' // html / src / debug }; const mermaidChart = (code) => { try { mermaid.parse(code) return `<div class="mermaid">${code}</div>` } catch ({ str, hash }) { return `<pre>${str}</pre>` } } defaults.highlight = function (str, lang) { var esc = md.utils.escapeHtml; console.log(str) console.log(lang) if (lang && hljs.getLanguage(lang)) { try { return '<pre class="hljs"><code>' + hljs.highlight(lang, str, true).value + '</code></pre>'; } catch (__) {} }else if(lang == 'mermaid'){ return mermaidChart(str) //return '<pre class="mermaid">' + mermaid.mermaidAPI.render('mermaid', str) + '</pre>'; }else{ return '<pre class="hljs"><code>' + esc(str) + '</code></pre>'; } }; md = window.markdownit(defaults); $('.md_render').html(md.render($('.md_source').html())); mermaid.initialize({startOnLoad:true}); </script> </body> </html>