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获得内容和属性示例代码
Jan 16 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
Jquery中offset()和position()的区别分析
Feb 05 Javascript
详谈javascript异步编程
Feb 21 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
May 09 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
微信小程序报错: thirdScriptError的错误问题
Jun 19 Javascript
Postman动态获取返回值过程详解
Jun 30 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
python中sys模块是做什么用的
2020/08/16 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
心得体会范文
2014/01/04 职场文书
运动会通讯稿200字
2014/02/16 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python