Vuepress 搭建带评论功能的静态博客的实现


Posted in Javascript onFebruary 17, 2019

vuepress 是 Vue 驱动的静态站点生成工具

本文仅介绍,搭建静态博客的过程,具体教程及文档请点击进入 vuepress中文网

点击查看项目代码

vuepress初始化

下面初始化

# 将 github 新创建的仓库克隆到本地
git clone git@github.com:zhb333/readme-blog.git

# 进入项目
cd readme-blog

# npm 初始化, 按照提示回车
npm init

# 安装 vuepress
npm i vuepress -D

# 安装 gh-pages
npm i gh-pages -D

# 创建一个 docs 目录
mkdir docs

# 创建一个 markdown 文件
echo '# Hello VuePress' > docs/README.md

npm 脚本

然后,给 package.json 添加一些 scripts 脚本:

{
 "scripts": {
  "dev": "vuepress dev docs",
  "build": "vuepress build docs",
  "deploy": "npm run build && gh-pages -d docs/.vuepress/dist"
 }
}

运行本地开发环境

运行 vurepress 的本地开发环境

npm run dev

访问 localhost:8080 , 已经成功开启

基础配置

生成静态资源

执行下面的命令,生成静态资源

npm run build

默认情况下,构建的文件会位于 docs/.vuepress/dist 中,该文件可以通过 docs/.vuepress/config.js 中的 dest 字段进行配置。

配置

创建 docs/.vuepress/config.js, 并进行简单配置

var config = {

 // 静态网站部署的目录
 base: '/readme-blog/',

 // 网站标题
 title: '标 の 博客',

 // <meta name="description" content="...">
 description: '种一棵树最好的时间是十年前,其次是现在', 

 markdown: {
  
  // 显示代码行号
  lineNumbers: true
 }
}

module.exports = config

博客首页

公共文件

创建 docs/.vuepress/public 用于存放公共文件

我在 public/ , 存在了 favicon.ico 图标, 以及 zlx.jpg 首页的头像图片

简单的首页编写

将 docs/README.md设置为首页, 修改代码为:

---
home: true
heroImage: /zlx.jpg
footer: MIT Licensed | Copyright © 2018 ZhangHuanbiao
---

设置网站 ico 图标

配置网站的 ico 图标, 修改 .vuepress/config.js:

const config = {
 head: [
  ['link', { rel: 'icon', href: '/favicon.ico' }]
 ]
}

导航栏

配置导航栏

使用 vuepress 的默认主题配置导航栏 .vuepress/config.js:

const nav = [
 {
  text: '前端栈',
  items: [
   { text: 'Vue', link: '/WEB/Vue/vuepress-blog' },
   { text: 'React', link: '/WEB/React/react-router' }
  ]
 }
]

const config = {
 themeConfig: {

  // 项目的 github 地址
  repo: 'zhb333/readme-blog',

  // github 地址的链接名
  repoLabel: '代码',

  // 配置导航栏
  nav,
 },
}

创建有效的导航资源

为了使得导航栏的链接点击有效, 我们创建两个文件:

docs/WEB/Vue/vuepress-blog.md

# 使用`vuepress`搭建静态博客
## vuepress初始化
## 基础配置
## 博客首页
## 导航栏

docs/WEB/React/react-router.md

# react-router

侧边栏

侧边栏配置

使用 vuepress 的默认主题配置侧边栏 .vuepress/config.js:

const sidebar = {
 '/WEB/': [
  {
   title: 'Vue',
   children: [
    'Vue/vuepress-blog'
   ]
  },

  {
   title: 'React',
   children: [
    'React/react-router'
   ]
  }
 ]
}

const nav = [
 {
  text: '前端栈',
  items: [
   { text: 'Vue', link: '/WEB/' + sidebar['/WEB/'][0]['children'][0] },
   { text: 'React', link: '/WEB/' + sidebar['/WEB/'][1]['children'][0] }
  ]
 }
]

var config = {
 themeConfig: {

  // 当前 markdown 的 github 代码链接
  editLinks: true,

  // 链接显示的文本
  editLinkText: '查看原文|编辑此页',

  nav,
  sidebar,
 },
}

侧边栏效果

访问: http://localhost:8080/readme-blog/WEB/Vue/vuepress-blog.html, 可以看到侧边栏已经生成

将静态博客网站部署到外网

使用 gh-pages 进行项目部署

npm run deploy

过几分钟后,访问 https://zhb333.github.io/readme-blog/, 便可以看到在外网成功部署的静态博客

评论功能

我们使用 valine 来实现评论功能:

Valine - 一款快速、简洁且高效的无后端评论系统。

点击进入 Valine官网 ,需要先注册才能食用

安装 Valine

# Install leancloud's js-sdk
npm install leancloud-storage --save

# Install valine
npm install valine --save

注册 vuepress 全局组件

创建 .vuepress/components/Valine.vue

<template>
 <div id="vcomments"></div>
</template>

<script>
export default {
 name: 'Valine',
 mounted: function(){
  // require window 
  const Valine = require('valine');
  if (typeof window !== 'undefined') {
   this.window = window
   window.AV = require('leancloud-storage')
   
  }
   
  new Valine({
   el: '#vcomments' ,
   appId: '',// your appId
   appKey: '', // your appKey
   notify:false, 
   verify:false, 
   avatar:'mm', 
   placeholder: 'just go go' 
  });
 },
}
</script>

使用 Valine

只需要在 markdown 中调用即可

<Valine></Valine>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
javascript数据类型示例分享
Jan 19 Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
微信开发 微信授权详解
Oct 21 Javascript
原生js实现对Ajax的封装(仿jquery)
Jan 22 Javascript
vue项目中mock.js的使用及基本用法
May 22 Javascript
koa2的中间件功能及应用示例
Mar 05 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
javascript实现移动端轮播图
Dec 09 Javascript
详解javascript replace高级用法
Feb 17 #Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 #Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 #Javascript
JavaScript遍历DOM元素的常见方式示例
Feb 16 #Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 #Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 #Javascript
mocha的时序规则讲解
Feb 16 #Javascript
You might like
php中session定期自动清理的方法
2015/11/12 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python实时获取cmd的输出
2015/12/13 Python
python中的set实现不重复的排序原理
2018/01/24 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Python 互换字典的键值对实例
2019/02/12 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
中医药大学市场营销专业自荐信
2013/09/29 职场文书
工程测量与监理专业应届生求职信
2013/11/27 职场文书
股东协议书范本
2014/04/14 职场文书
小学运动会演讲稿
2014/08/25 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
个人股份合作协议书
2014/10/24 职场文书
优秀教师个人总结
2015/02/11 职场文书
格列佛游记读书笔记
2015/06/30 职场文书