Vuejs中使用markdown服務(wù)器端渲染的示例
啊哈,又是來推薦一個 vuejs 的 package,miaolz123/vue-markdown。 對應(yīng)的應(yīng)用場景是:你想使用一個編輯器或者是在評論系統(tǒng)中支持 markdown。這個 package 的有點還是挺多了,比如默認(rèn)就支持 emoji,這個就很完美啦!laravist 的新版就使用了 vue-markdown 來渲染評論。
安裝
直接使用 npm 來安裝:
npm install --save vue-markdown
使用
也是很簡單的,可以直接這樣:
import VueMarkdown from 'vue-markdown'
new Vue({
components: {
VueMarkdown
}
})
或者是這樣,舉一個具象化的例子是:比如我們有一個 Comment.vue 組件用來渲染評論,可以在這個組件中直接指明:
import VueMarkdown from 'vue-markdown';
<template>
<div>
<vue-markdown :source="comment.body"></vue-markdown>
</div>
</template>
export default { // ... other codes
props:['comment'],
data(){
return {
comment : this.comment
}
},
components: {
VueMarkdown
},
// ... other codes
}
然后在渲染的時候這個:
<div class="comments"> <div class="comments" v-for="comment in comments"> <comment :comment="comment"> </comment> </div> </div>
這里我們首先通過 comment props 傳入整個 comment(這個comment其實就是一個對象) ,然后在 Comment.vue 通過 :source 來給 veu-markdown 組件傳入每個評論的 body 字段內(nèi)容,注意這里的 comment.body 在數(shù)據(jù)庫中保存的就是評論的 markdown 格式的內(nèi)容。
Vuejs服務(wù)器端渲染markdown示例
const Koa = require('koa');
const _ = require('koa-route');
const vsr = require('vue-server-renderer');
const fs = require('fs');
const indexjs = require('./component/index.js');
const Vue = require('vue');
const MD = require('markdown-it')
const server = new Koa();
const route = {
index: (ctx, id) => {
// 解析markdown
const md = new MD().render(fs.readFileSync('./markdown/' + id + '.md', 'utf-8'));
// vue插入html代碼
const app = new Vue({
data: {
main: md
},
template: `
<div>
<div class="main" v-html="main"></div>
</div>`
});
// 其他變量設(shè)置
const context = {
htmlTitle: id
};
// 加載模板html文件
const renderer = vsr.createRenderer({
template: fs.readFileSync('./template/index.template.html', 'utf-8')
});
// 渲染
renderer.renderToString(app, context, (err, html) => {
if (err) {
ctx.response.status = 500;
} else {
ctx.response.body = html;
}
})
}
};
server.use(_.get('/post/:id', route.index));
server.listen(8080);
<!DOCTYPE html>
<html lang="CH-ZN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{htmlTitle}}</title>
</head>
<body>
<!--vue-ssr-outlet-->
</body>
</html>
總結(jié)
本文介紹的 vue-markdown 在某些應(yīng)用場景中其實超級好用,特別是對于評論系統(tǒng)想支持 markdown 這個需求來說,容易集成,優(yōu)點多多。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue.js路由mode配置之去掉url上默認(rèn)的#方法
今天小編就為大家分享一篇vue.js路由mode配置之去掉url上默認(rèn)的#方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue監(jiān)聽頁面變化的實現(xiàn)方法小結(jié)
在Vue.js應(yīng)用開發(fā)過程中,監(jiān)聽頁面變化是一個非常常見的需求,無論是為了響應(yīng)用戶交互、優(yōu)化性能,還是實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,監(jiān)聽頁面變化的能力都是不可或缺的,本文將詳細(xì)介紹如何在Vue項目中實現(xiàn)頁面變化監(jiān)聽,需要的朋友可以參考下2024-10-10
利用vue3仿蘋果系統(tǒng)側(cè)邊消息提示效果實例
這篇文章主要給大家介紹了關(guān)于如何利用vue3仿蘋果系統(tǒng)側(cè)邊消息提示效果的相關(guān)資料,文中通過實例代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-12-12
Vue3動態(tài)使用KeepAlive組件的實現(xiàn)步驟
在 Vue 3 項目中,我們有時需要根據(jù)路由的 meta 信息來動態(tài)決定是否使用 KeepAlive 組件,以控制組件的緩存行為,所以本文給大家介紹了Vue3動態(tài)使用KeepAlive組件的實現(xiàn)步驟,通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-11-11

