在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):zhhlwd/vuepress-theme-indigo-material开源软件地址(OpenSource Url):https://github.com/zhhlwd/vuepress-theme-indigo-material开源编程语言(OpenSource Language):Vue 64.3%开源软件介绍(OpenSource Introduction):vuepress-theme-indigo-material最近更新
对于老版本升级
介绍vuepress-theme-indigo-material 的原主题是hexo-theme-indigo, github 的 star 数高达2042, fork 的有451个, 它在静态博客网站中的应用处处可见.在这里首先感谢原作者. 然而它的定位是仅支持 IE10+ 等现代浏览器。既然不需要支持老版本浏览器, 在前端发展迅猛的今天, 已经有许多技术能够让网址更快, 所以我用VuePress来重写了它. 其实 indigo 的原作者已经在用 vuepress 重写了, 但是项目一直没有进展, 所以我接过了这个任务, 最后重写的效果是挺满意的. 本主题在我的有 51 篇博客笔记下, 部署在 github page,网页加载速度非常快,更快的是,网页加载完成后,此后每个页面的打开速度,都是仿佛在点击本地文件. 具体感受,国内请点击码云的 博客网站(国内 gitee),国外请点击我的博客网站(国外 github)来亲身感受, 部署在 github page 下 正如 VuePress 文档所说:
用 Lighthouse 来测试网站的截图 您换主题的理由
浏览器兼容性由于博客面向的群体比较都是技术人员, 所以本主题只在最新版的谷歌浏览器和火狐浏览器测试无误 vuepress 默认有编译一些对老版本浏览器的兼容, 具体控制请看它官网配置 快速上手注意请确保您的 Node.js 版本 >= 8 安装 git 最好 npm 下载改用cnpm 以下的操作已经假设您已经会基本的 npm, git 和 vue 常识和操作 使用模板分支由于文件较琐碎, 配置又容易出错,很容易出错,为此我已经准备好了一套模板, 部署在 template 分支下,您只需要的是下载下来, 双击目录下的 init.sh 文件,等它完成就行了,
下载分支的命令: git clone -b template https://github.com/zhhlwd/vuepress-theme-indigo-material.git 这是 template 的目录说明 一定要注意! 模板 docs 目录下的文件夹除了 posts 和 about 可以动,其他都不能动, 原因是 vuepress 在编译时会注册这些文件夹和文件为路由, 如果您把它们删了,即使您后面用 addRouter 再注册成功也不行,编译时没有注册的当跳转到时会让 vue 从根实例重新渲染, 这会导致应用很多状态没了 ,例如折叠的侧边栏重新打开,文章列表每打开一次就重新渲染一次, 使用本主题在内容上,您只要把新文章放在 posts 目录下, 文件顶部写好相关信息, 和自由定义 about 目录下的 index.md 文件就行了 |-- template
|-- .babelrc // 主题的babel配置, 按需加载element ui所需
|-- .gitignore // 让git忽略跟踪dist文件夹等等, 不要把docs文件夹加进去
|-- deploy.sh // 部署到git 远程仓库的shell文件, 要部署时双击即可, 前提是配置的构建目录位置没变
|-- init.sh // (只要执行一次)克隆template分支到本地后, 双击它, 一步完成所有操作, 等他完成下载, 开启测试服务器, 打开http://localhost:8080/看到效果
|-- package-lock.json
|-- package.json
|-- 目录说明.md
|-- docs // 存放所有开发环境的目录
|-- index.md // 首页,不用改
|-- .vuepress
| |-- config.js // 主题的配置
| |-- public // 存放静态文件的目录, 例如img, ico ...
| |-- avatar.jpg
| |-- brand.jpg
| |-- favicon.ico
|-- about // 展示在自我介绍页面的内容
| |-- index.md // 不能删除, 可以添加内容
|-- tags // 不能删除, 不能动
| |-- index.md // 不能删除, 不能动
|-- all // 不能删除, 不能动
| |-- index.md // 不能删除, 不能动
|-- posts // 存放所有文章的目录
最后 init.sh 文件 只运行一次 即可, 以后使用的是 package.json 中提供的两个命令, npm run dev
npm run build 分别是运行本地环境开启服务器预览和运行编译打包, 它和平时的 vue 项目流程一模一样 配置请去看vuepress 的文档 填写 docs/.vuepress/config.js的相关字段.具体作用我都有相关注释, 没写的更多配置在vuepress 文档中查询 静态资源您可以将它们放在 .vuepress/public 中, 具体请看vuepress 文档, 值得一提的是
开始写作和原主题的新建一个 md 文件不一样, vuepress 没有内置像这些命令 hexo n '新md文件名'
hexo d //push 到远程分支 由于没有自动生成 md 文件的命令,需要手动创建 Markdown 文件,而且要放在 ./docs/posts/ 下, 然后还需要文件顶部像原主题那样写上信息
上下的---符号不能少, 字段后面空一格再写值 不然会报错. markdown 文件的元信息title: 文章名只读取这里写的名字,所以一定要写, 我的建议是最好文章名和文件名保持一致 date: 主题用了 vuepress 的内置插件@vuepress/plugin-last-updated, 也可以不用写了, 然而此插件依赖的是在 git 仓库中的提交时间,这就是为什么 init.sh 中要进行 git init 的原因 在本主题中一篇文章的创建时间的确定顺序是 md 文件顶部的信息中的 date 字段==>git 仓库的提交时间===>都没有那就是当前时间 注意的是这只是一种容错机制, 这不意味着不用管时间了, 最后条件的当前时间并没有写进对应文件, 如果每次编译都匹配的是最后一条条件会导致这个文章永远排序在最开头, 因为每次编译都是取的当前时间, 所以对于以前的文章, 开头信息没有 date 的, 要么手动加上, 格式一定要是 YYYY-MM-DD HH:mm:ss, 才能计算出正确的时间顺序,要么把文章迁移到 ./docs/posts/ 目录下后, 运行
这样退求其次的以当前时间重置那些没写 date 的文章 而对于使用本主题之后的文章最好不用写 date 字段了,以免出错, 而是每次新建文章后进行一次 commit, 让主题取 git 仓库的时间, 并且这种工作流能让您的提交历史对应对应文章的时间
tags: 字段必须是数组,如果没有则要写上一个空数组 [],这样此文章会被分类到 '未分类',我的建议是最好写上内容, 它是文章的内容标签, 是一种分类 categories字段已经放弃, 因为它和tags字段的作用重复 摘要* :vuepress 内置了文章内容摘抄功能,这也是本主题首先判断收录的,如果没有才去从文章内容中截取一段,所以您可以完全自定义文章在首页列表的摘要了,例如一段简单明了的介绍,会让人更加想点击进去,这功能开启方式是 <!-- more --> 注释,该注释之前的内容会被抓取为文章的摘要
文章评论功能评论功能用的是Vssue 虽然 Vssue 支持多个平台,但是本主题只选用的是 github 的 V3 api, 这是一个为了减少构建大小的决策. 在docs/.vuepress/config.js的vssue字段 如果需要评论功能,需要把它的 need 改为 true, 不需要就改为 false, 不要不去填写 如果需要则需要创建两个新的 github OAuth App,Vssue 的文档有简单明了的操作过程, 填写的 url 一个是http://localhost:8080/, 一个是您将要部署到的网站地址, 它们分别用在本地测试环境和线上环境,对应的字段分别是development和production 还有一个字段是option,是一个对象,存放development和production共有的属性,具体可以参考 template 分支的模板配置 拿到两组clientId和clientSecret后,还要一个存放 issue 评论的 github 仓库,得到owner和repo, 也就是仓库所有者名和仓库名, 存放 issue 的仓库在本地环境和线上环境中可以相同, 除了这四个字段是必须的,其它字段可以自行去Vssue 的文档中查询 一个问题是, 在打开一篇新文章编译的页面时,Vssue 会去创建一个新 issue, 就会让您的页面从定向到 github 登录页, 您不登录就一直重定向 ,您不登录, 您的访客也会重定向,这非常影响网页体验, 所以您需要去打开文章,登录了让 Vssue 创建,这样只要一次, 您和访客在这个页面以后都不会重定向了 还有如果点击登录 github 不成功,请在点击一次 全站搜索关于 搜索, 搜索的是文章内容, 也就是说假如文章标题不在内容里面您搜索标题关键词是没有匹配的, 搜索不区分大小写,但是区分空格和标点符号, 一个技巧是找到一个关键词, 例如我搜索 flex-w 就能唯一的搜到我关于 flex 的博客 部署写完文章, 在本地预览无误后, 可以直接双击 deploy,sh 文件, 然后脚本运行编译打包 push 到远程仓库
模板中构建输出位置是 ./dist 如果不用 deploy.sh 文件,而是手打命令,要注意的是,一定要在 dist 目录下运行这三步
因为根目录有一个仓库用来保存每个文章的时间, 不能删除, 当您 dist 目录没有一个仓库时,运行 push 命令就会往上一个文件夹找,从而把根目录 push 到远程仓库, 而我们只要的是 dist 目录下的文件 还有一个地方就是 vuepress 每次 build 都会清空覆盖 dist 文件夹, 会把上一次的仓库也清空,所以每次 build 后都要进行上面的三步才去 push, 这也是我提供脚本的原因 vuepress 的构建的确麻烦不少, 但是相当于它的网页运行速度, 这是可以忍受的,我用了我的主题,就不想用回原来的 hexo 了, 迷上了网页一点就开的速度... 自定义主题的文字已经暴露出去,在 config.js 中能够自定义,如果您需要完全的自定义. 您可以下载 template 分支, 然后把 master 分支下的内容放在模板的./docs/.vuepress/theme/下, 把 config.js 中的theme 字段去掉,再在项目根文件夹下(docs 文件夹的上一级)执行 cnpm i,剩下的和 vuepress 开发主题差不多. UI 变化
计划
已知问题
提问可以在 issue 提问, 也可以是加入 qq 群, 我们一起讨论
最后感谢您能看到这里, 您都看到这里了, 您能给我一个 star 吗? github 地址:https://github.com/zhhlwd/vuepress-theme-indigo-material |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论