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 相关文章推荐
JavaScript 图片预览效果 推荐
Dec 22 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
JQuery AJAX提交中文乱码的解决方案
Jul 02 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
jQuery可见性过滤选择器用法示例
Sep 09 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
微信小程序的生命周期的详解
Oct 19 Javascript
简述JS控制台的使用
Jul 15 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
Underscore源码分析
2015/12/30 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
详解js中==与===的区别
2017/01/08 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python爬取招聘要求等信息实例
2020/11/20 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
经理秘书岗位职责
2013/11/14 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
倡议书格式范文
2014/04/14 职场文书
农村门前三包责任书
2014/07/25 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
体育教师研修感悟
2015/11/18 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书