花了几天时间撸了一个个人博客
撸了一个自己的个人博客一直是想写一个自己的博客,最近有点时间,花费了几天就撸了一个,雏形已经有了,后续完善内容,优化功能,有很多地方还没来的及做处理,后续继续优化。自己能力有限,有些地方处理的不好,希望大家能够给予指正,以后自己的博客也会同步到这个网站上,下面进入正题。 github地址网站地址 ## 前端页面的文档 页面的话,直接使用vue-cli生成项目,安装相应依赖包,运行项目,该项目中安装的依赖包包含如下: vuex(数据管理)element-ui(ui库)axios(接口请求)sass(css预处理器)使用步骤// 克隆项目git clone git@github.com:dragonnahs/new_websit_blog.git// 进入前端页面目录cd baozi_blog// 安装依赖npm install // 运行项目npm run dev// 打包项目npm run build这里没有一步步讲实现,主要的地方大致说下,怎么实现的,挺简单的,可以先clone下来运行一遍试下,依赖于后台接口,所以尽量吧后台先跑起来。下面主要记录一些写代码过程中一些技术点。 markdown格式解析和高亮需要用到的库marked和highlight.js这两个,在博客详情页面使用, // tempalte(v-highlight时后续加的自定义指令,下面会说)<div class="markdown" v-html="compiledMarkdown" v-highlight></div>// script// 引入和初始化let marked = require('marked')let hljs = require('highlight.js')import 'highlight.js/styles/default.css'marked.setOptions({ renderer: new marked.Renderer(), gfm: true, tables: true, breaks: false, pedantic: false, sanitize: false, smartLists: true, smartypants: false, highlight: function (code, lang) { if (lang && hljs.getLanguage(lang)) { return hljs.highlight(lang, code, true).value; } else { return hljs.highlightAuto(code).value; } }})export default{ data () { return { blogInfo: {} } }, computed: { // 解析代码 compiledMarkdown(){ return marked(this.blogInfo.content || '', { sanitize: true }) } }}// 到这一步已经能够在页面看到解析完成之后的内容了,但是没有高亮样式,原因是vue-router在切换路由的时候会移除hight的事件,解决办法是自定义一个指令重新给代码加上对应的类名,实现代码高亮,具体代码如下// main.jslet hljs = require('highlight.js')// 自定义代码高亮指令Vue.directive('highlight',function (el) { let blocks = el.querySelectorAll('pre code'); blocks.forEach((block)=>{ hljs.highlightBlock(block) })})// 到此已经完美的解决了markdown的解析以及代码的高亮问题。登录验证既然涉及到博客管理后台,就肯定有登录验证的问题,使用的是token去验证权限。前端页面前端的路由守护,需要使用router.beforeEach方法,对每一个路由去进行判断,验证该路由是否需要登录权限,如果需要登录权限的话,就通过存储在本地的token去获取用户信息,得到用户信息,继续当前的路由跳转,不能的话就跳转到登录页去登录。这里的token是登录的时候后台给返回的,后台设置过期时间,登录后保存到本地session中 ...