第2节:Hexo的进阶

一、资源文件的显示

创建md的同名文件夹后,资源文件的路径不能写为./xxx/1.jpg(虽然markdown有效),只能为xxx/1.jpg

其他参考:hexo官网:资源文件夹

二、hexo链接的持久化

参考文档:

永久链接(Permalinks)的官网文档:https://hexo.io/zh-cn/docs/permalinks.html

hexo链接持久化终极解决之道:https://blog.csdn.net/yanzi1225627/article/details/77761488?utm_source=blogxgwz4

1、背景

大家知道hexo默认的链接是http://xxx.yy.com/2018/12/14/hello-world 这种类型的,这源于站点目录下的配置_config.yml里的配置:permalink: :year/:month/:day/:title/,所以,我们当我们在浏览器中浏览的时候,其地址实际上为如上所述。因而我们在处理链接跳转的时候,就也得跟着加上这部分前缀了。

2、链接优化

由于上诉中的日期前缀部分通常容易变化,所以为了我们的链接持久化,我们需要将其去掉,即我们在_config.yml中做如下修改:

1
2
# permalink: :year/:month/:day/:title/
permalink: :title/

此时网页链接写法

设文件《1Hexo的使用.md》和《2Hexo的进阶.md》处于同级目录下,则

当你在《1Hexo的使用.md》的时候想要链接进《2Hexo的进阶.md》的时候,

平时在markdown中的写法:./2Hexo的进阶.md

现在在Hexo网页中的写法1:../2Hexo的进阶

*现在在Hexo网页中的写法2:/文档管理/Hexo/2Hexo的进阶(因为根目录为/)

附:如果你想保持.md后缀,可将上诉改为

1
2
# permalink: :year/:month/:day/:title/
permalink: :title/.md

三、修改博客文章顺序/解决置顶问题

Hexo默认只提供了按发布日期的排序。

原理:在Hexo生成首页HTML时,将top值高的文章排在前面,达到置顶功能

怎么置顶:每篇文章增加一个属性top,普通文章设置值为1,置顶文章设置为1以上。

1
2
3
4
5
6
7
title: Hexo增加置顶属性
date: 2018-09-14 14:57:57
top: 1
tags:
- 博客
- Hexo
- 置顶

生成首页的是扩展插件node_modules/hexo-generator-index中。所以修改Hexo文件夹下的node_modules/hexo-generator-index/lib/generator.js,在生成文章之前进行文章top值排序。

最终的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'use strict';

var pagination = require('hexo-pagination');

module.exports = function(locals) {
var config = this.config;
var posts = locals.posts.sort(config.index_generator.order_by);

// >>>>>>> 添加以下内容,实现置顶功能 >>>>>>>>
posts.data = posts.data.sort(function(a, b) {
if(a.top && b.top) {
if(a.top == b.top) return b.date - a.date;
else return b.top - a.top;
}
else if(a.top && !b.top) {
return -1;
}
else if(!a.top && b.top) {
return 1;
}
else return b.date - a.date;
});
// <<<<<<<< 添加以上内容,实现置顶功能 <<<<<<<<

var paginationDir = config.pagination_dir || 'page';
var path = config.index_generator.path || '';

return pagination(path, posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};

四、让部分文件不显示在feed中

想让以下文件不在feed中显示,但又不影响其网页地址的访问。

1
2
3
4
5
6
7
8
9
source/_posts/Architecture架构/框架相关/WebView相关/h5_native_interacte/h5js/dvlp_h5js_demo_hardware.json
source/_posts/Architecture架构/框架相关/WebView相关/h5_native_interacte/h5_open_app/dvlp_h5_open_app_app_route_url_demo.html


http://localhost:4000
https://dvlproad.github.io

https://dvlproad.github.io/Architecture架构/框架相关/WebView相关/h5_native_interacte/h5js/dvlp_h5js_demo_hardware.json
https://dvlproad.github.io/Architecture架构/框架相关/WebView相关/h5_native_interacte/h5_open_app/dvlp_h5_open_app_app_route_url_demo.html

要确保特定的 .json 文件不被Hexo渲染并出现在feed中,你可以使用 skip_render 配置项。这个配置项告诉Hexo忽略指定的文件或文件夹,直接将它们复制到 public 目录中,而不进行任何处理。

根据你希望排除的文件路径,你应该在Hexo的配置文件 _config.yml 中添加如下配置:

1
2
skip_render:
- '_posts/Architecture架构/框架相关/WebView相关/h5_native_interacte/h5js/dvlp_h5js_demo_hardware.json'

这行配置会确保 dvlp_h5js_demo_hardware.json 文件不会被Hexo渲染,并且不会出现在生成的feed中。请注意,路径是相对于 source 目录的,并且不以斜杠 / 开头

完成配置后,为了确保更改生效,你需要执行以下命令来清除Hexo的缓存并重新生成站点:

1
2
hexo clean
hexo generate

使用 skip_render 配置项是处理这种情况的推荐方法,因为它可以精确控制哪些文件不应该被Hexo处理。这样,你就可以确保只有你希望被渲染的文件才会出现在最终的站点中。

四、其他

其他参考文章:hexo+github博客搭建,hexo目录,hexo设置详解

第1节:使用Hexo创建博客

参考文章

前言:新电脑上的使用

1、终端执行 hexo -v,检查是否安装过hexo,且安装成功

如果已安装 hexo,则终端执行 hexo -v能够显示结果

hexo -v

2、node建议安装 v12.19.0版本,否则会出现如下常见错误1

2、查看项目目录下是否已存在由在该目录下执行npm install命令后生成的 node_modules 文件夹

如果不存在,则无法执行,请通过以下命令在该项目目录下生成 node_modules 文件夹

1
2
cd 到项目目录
npm install

若已存在,则通过以下命令,即可生成本地网络路径

1
2
cd 到项目目录
hexo s

常见错误1、hexo部署到github时,提示typeError [ERR_INVALID_ARG_TYPE] The “mode“ argument must be integer. Receive

原因:node版本过高导致的。

解决方法:使用 12.19.0 版本的时候,可以部署成功。版本的安装命令如下:

1
sudo n v12.19.0

PS:node指定版本的安装、切换、删除 请进入本博客中的 node 查看

参考文章:hexo部署到github时,提示typeError ERR_INVALID_ARG_TYPE The “mode“ argument must be integer. Receive

一、主要命令

操作 命令/配置 备注
初始化 hexo init
清除缓存文件和已生成的静态文件 hexo clean
生成缓存(db.json)和静态文件(public) hexo generatehexo g
本地预览查看 hexo s 开启hexo服务器,用于本地查看
发布到远程Step1
配置发布地址
在_config.yml中完善,详情看下
发布到远程Step2
重新部署到服务器
hexo deployhexo d 附:hexo d到Github上的也只是html文档,不是.md格式的文档。

上述配置发布地址(在_config.yml中完善)

1
2
3
4
deploy:
type: git
repository: https://github.com/dvlproad/dvlproad.github.io.git
branch: master

二、常用的创建

操作 命令 备注
创建md博文 hexo n "xxxx"
创建分类 hexo new page categories
创建关于 hexo new page about

三、常用的主题

Hexo主题:https://hexo.io/themes/

目前尝试过的主题有:BlueLake

四、发布容易遇到的问题

hexo g error1_Template render error1

1、首先肯定是我们的文件夹中有文档存在问题?那怎么确认是哪个文档问题呢?

答:我们通过排除法。先把可能的文件夹都移到项目外,然后执行 hexo -g 看是否还是异常。直到 hexo -g 正常,即可找到问题文件夹和文件。

2、至于是该文件/文档中的哪部分出现问题了。怎么排查?

答:依然还是可以用排除法。先把该文档可能的文案移除,然后执行 hexo -g 看是否还是异常。直到 hexo -g 正常,即可找到问题出现在哪个段落,甚至是哪一行。

3、如何该行中的哪个内容出现问题?

答:点击查看 https://hexo.io/docs/troubleshooting.html,其描述的是

hexo g error1_Template render error1

即我们的文档中使用大括号后加特殊字符的格式时候,有特殊字符未配对。可能是多余了,也可能是少了。经如下修复后,运行正常。

hexo g error1_Template render error_3fix

点击此处,进入下一节的正式学习 >

第1节:阿里云服务器ECS域名绑定

[toc]

阿里云服务器ECS域名绑定

一、注册域名

1、几个阿里云域名注册的网址

image-20201119104549954

image-20201119104142314

image-20201119104236120

二、域名解析/绑定

其他参考:阿里云域名和ip绑定步骤

image-20201119104809178

image-20201119105543285

之后,通过在浏览器地址栏输入 goapi.work,其都会自动帮我们加上www前缀。

同时,即使IP地址的格式中带需要有端口,如:202.106.0.20:8080,也只添加202.106.0.20即可。

访问的时候,因为我们的ip地址需要带端口,所以访问的时候需要多填个端口。如 http://www.goapi.work:3000 访问

image-20201119110133082

End

至此,利用阿里云服务器ECS的使用介绍结束。

第1节:GitBook的使用

参考文章

一、主要命令

操作 命令/配置 备注
初始化/生成书籍目录 gitbook init 执行完后,你会看到多了两个文件:README.md 和 SUMMARY.md
本地预览查看 gitbook serve 开启gitbook服务器,用于本地查看。其包含了也包含在 gitbook build命令
构建书籍 gitbook build 默认将生成的静态网站输出到 _book 目录

编辑 SUMMARY.md 文件的示例:

1
2
3
4
5
6
7
8
9
10
11
# 目录

* [前言](README.md)
* [第一章](Chapter1/README.md)
* [第1节:衣](Chapter1/衣.md)
* [第2节:食](Chapter1/食.md)
* [第3节:住](Chapter1/住.md)
* [第4节:行](Chapter1/行.md)
* [第二章](Chapter2/README.md)
* [第三章](Chapter3/README.md)
* [第四章](Chapter4/README.md)

二、常用的创建

操作 命令 备注
创建md博文 新建文件
创建分类 新建文件夹
创建关于 新建文件夹

三、常用的主题

image-20200927023836954

image-20200927024212824

文档管理

为什么要用新的文档创作平台

​ 通常,我们最开始学习和使用的办公软件就是 Word、Excel 和 PowerPoint。这里不是说它们已经过时了,不是说 GitBook 能够替代它们。相反,Microsoft 的办公软件很优秀并且经受了时间的考验,但是正因为它功能丰富,导致稍显臃肿(二八定律:80%的时间里我们只会只用20%的功能)。

​ 所以,如果你和我一样,不满足于传统的写作方式,正在寻找一种令人愉悦的写作方式,那么可以尝试以下几种文档创作方式!

一、gitbook与hexo的比较

gitbook hexo+GithubPage
网址 gitbook官网 hexo官网
常用于 书籍文档类 博客文档类
参考案例 腾讯移动分析 美团技术团队博客 只是猜测
个人实践 https://devbook.site https://dvlproad.github.io
定制型 相对固定 根据设置的不同hexo主题,显示不同排版效果
优点 以书籍形态,层次顺序明确;
非常适合知识架构的分类整理及递进。
虽不是书籍类,但也有层次;
定制型更强。
缺点 官网非翻墙使用不了
所以需要申请域名来映射使用
访问限制 暂未了解,目前都是无差别访问 暂未了解,目前都是无差别访问
文档存放 GitHub GitHub、Gitlab、SVN等都可以
文档编写 Markdown本地编写 Markdown本地编写
本地预览 执行gitbook seve即可预览 执行hexo seve即可预览
远程生效 更新GitHub就可以 执行hexo d进行发布即可

附:几个类似GitBook的在线文档创作平台

参考:几个类似GitBook的在线文档创作平台

在线文档创作平台 为免费用户提供 官网地址 文档示例
GitBook(首推)
img
① 一个公共空间
②一个私有空间(支持两个用户的团队)
③ 支持自定义域名
https://www.gitbook.com/ https://amazing-apps.gitbooks.io/windows-apps-that-amaze-us/zh-CN/
看云(国内最靠谱的选择)
img
①不限量公开文档
②0个私有文档
③完整文档功能
https://www.kancloud.cn/ https://www.kancloud.cn/manual/thinkphp/1678
北半球
img
感觉规模并不大,所幸这是一个开源项目,你可以自行搭建属于自己的北半球 https://www.beibq.cn/ https://www.beibq.cn/book/beibq_guide

总结:

如果希望托管在平台,请根据项目数量选择使用GitBook或者看云;

如果自建,则只有GitBook和北半球提供了源代码,供用户自行搭建。


点击此处,进入本章第1节的正式学习 >

第0节:app打包规范

[toc]

app打包规范

一、配置规范

参数说明

说明如下:

序号 变量 描述 其他
0 PlatformType 平台 iOS
Android
1 BRANCH 打包的分支
2 channelsJsonString 要打包的多渠道
仅对Android生效
不进行多渠道:不传值
默认的多渠道:useDefault
指定多渠道:[“CHANNEL 华为 huawei”, “CHANNEL 抖音 douyin”]
3 PackageNetworkType 网络环境 测试环境1
测试环境2
开发环境1
预生产环境
生产环境
4 PackageTargetType 功能类型/发布平台 生成最后只发布到蒲公英的包
生成最后只发布到TestFlight的包
生成最后要发布到AppStore的包
5.1 PgyerUploadUrlType 是否上传到蒲公英 以下内容仅对蒲公英生效
直接上传到最终地址
先上传到临时地址,通过后再添加到最终地址
不上传
5.2 ShouldBackupToCos 是否备份上传到Cos 默认值true,测试打生产包时一般为false
5.3 ShouldUploadToAppStore 是否上传到AppStore
5.4 ChangeLog 更新说明

1、生产环境

参数示例:

1
2
3
4
5
"formal_product": {
"BRANCH": "custom_input",
"channelsJsonString": "useDefault",
"ShouldBackupToCos": "true"
}

说明如下:

序号 是否必填 变量 描述 其他
1 必填 BRANCH 打包的分支
2 安卓:必填
iOS:填了也无效
channelsJsonString 要打包的多渠道 不进行多渠道:不传值
默认的多渠道:useDefault
指定多渠道:[“CHANNEL 华为 huawei”, “CHANNEL 抖音 douyin”]
3 可选 ShouldBackupToCos 是否备份上传到Cos

2、测试环境

参数示例:

1
2
3
4
5
6
7
8
"test": {
"BRANCH": "custom_input",
"channelsJsonString": ["CHANNEL 华为 huawei", "CHANNEL 抖音 douyin"],
"ChangeLog": "custom_input",
"Test1": true,
"Test2": true,
"NotificatePeople": "all"
}

说明如下:

序号 是否必填 变量 描述 其他
1 必填 BRANCH 打包的分支
2 安卓:必填
iOS:填了也无效
channelsJsonString 要打包的多渠道
3 可选 ShouldBackupToCos 是否备份上传到Cos

3、开发/任意环境

序号 变量 描述 其他
1 BRANCH 打包的分支
2 channelsJsonString 要打包的多渠道 不进行多渠道:不传值
默认的多渠道:useDefault
指定多渠道:[“CHANNEL 华为 huawei”, “CHANNEL 抖音 douyin”]
3 PackageNetworkType 网络环境 测试环境1
测试环境2
开发环境1
预生产环境
生产环境
4 PackageTargetType 功能类型/发布平台 生成最后只发布到蒲公英的包
生成最后只发布到TestFlight的包
生成最后要发布到AppStore的包
5.1 PgyerUploadUrlType 是否上传到蒲公英 以下内容仅对蒲公英生效
直接上传到最终地址
先上传到临时地址,通过后再添加到最终地址
不上传
5.2 ShouldBackupToCos 是否备份上传到Cos 默认值true,测试打生产包时一般为false
5.3 ShouldUploadToAppStore 是否上传到AppStore
5.4 ChangeLog 更新说明