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 相关文章推荐
jQuery实现360°全景拖动展示
Mar 18 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
axios的拦截请求与响应方法
Aug 11 Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
Sep 05 Javascript
javascript的hashCode函数实现代码小结
Aug 11 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
用js遍历 table的脚本
2008/07/23 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
python创建和使用字典实例详解
2013/11/01 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python批量提取word内信息
2015/08/09 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
python如何代码集体右移
2020/07/20 Python
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
员工培训协议书
2014/09/15 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
新闻稿怎么写
2015/07/18 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang