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/[email protected]/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://img-blog.csdnimg.cn/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>