当前位置: 首页 > news >正文

计算机网络技术 网站建设百度账号注册入口

计算机网络技术 网站建设,百度账号注册入口,wordpress调用指定文章图片,wordpress中footer函数揭秘 Hexo Diversity 主题的运行原理 一、 引言二、 Diversity 主题2.1 Hexo 控制台命令2.2 Hexo 核心 API2.3 运行原理2.3.1 多主题配置相关2.3.2 多主题执行指令 2.4 版本演进2.4.1 V1版本2.4.2 V2版本2.4.2.1 PC 端2.4.2.2 Phone 端 2.5 后续展望 三、 总结 一、 引言 众所…

在这里插入图片描述

揭秘 Hexo Diversity 主题的运行原理

  • 一、 引言
  • 二、 Diversity 主题
    • 2.1 Hexo 控制台命令
    • 2.2 Hexo 核心 API
    • 2.3 运行原理
      • 2.3.1 多主题配置相关
      • 2.3.2 多主题执行指令
    • 2.4 版本演进
      • 2.4.1 V1版本
      • 2.4.2 V2版本
        • 2.4.2.1 PC 端
        • 2.4.2.2 Phone 端
    • 2.5 后续展望
  • 三、 总结

一、 引言

众所周知,Hexo 是一个快速、简洁且高效的博客框架。 它使用 Markdown其他标记语言 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

目前 Hexo 拥有 400+ 的主题,使用者可以在众多的主题中进行选择;当然我们也可以使用任何兼容的模板引擎创建自己的主题,从而应用到个人博客中。

不过比较遗憾的是,这么多的美观、强大、可定制的主题之中,我们只能选择其中一个主题来生成自己的静态博客。

笔者在接触 Hexo 之后,也被它众多的主题所吸引,同时也在考虑如何让个人博客可以在众多的主题间切换呢?【小孩子才会选择,大人全都要】。

二、 Diversity 主题

随着接触越多的 Hexo 的核心 API 和源码,一个在多主题中自由切换的 Hexo 主题 应运而生,取名 Diversity,即多样性。

2.1 Hexo 控制台命令

在介绍 Diversity 主题的运行原理之前,我们先来看看 Hexo 的一些关键控制台命令,比如:

  • hexo generate : 生成静态文件(一般在public目录下)。
  • hexo server :启动服务器。 默认情况下,访问网址为: http://localhost:4000/
  • hexo clean :清除缓存文件(db.json) 和已生成的静态文件 (一般在public目录下)。

2.2 Hexo 核心 API

翻看官方网站的 核心API概述 ,可以看到一个完整的 Hexo 实例运行流程如下:

  • 初始化 :首先,需要新建一个 Hexo 实例。 一个新的实例需要两个参数:网站根目录 base_dir,以及包含初始化选项的对象。 接着执行 init 方法后,Hexo 会加载插件及配置文件。
var Hexo = require("hexo");
var hexo = new Hexo(process.cwd(), {});hexo.init().then(function () {// ...
});
  • 加载文件Hexo 提供了两种方法来加载文件:loadwatchload 用于加载 source 文件夹中的所有文件以及主题数据。 watch 执行与 load 相同的操作,但还会开始连续监视文件更改。

  • 执行指令 :任何控制台命令都可以通过在 Hexo 实例上使用 call 方法来显式调用。这样的调用需要两个参数:控制台命令的名称一个选项参数。不同的控制台命令有不同的选项可用。

hexo.call("generate", {}).then(function () {// ...
});
  • 退出 :无论控制台命令完成与否,都应调用 exit 方法。 这样 Hexo 就能优雅地退出,并完成保存数据库等重要工作。
hexo.call("generate", args).then(() => hexo1.exit()).catch(err => hexo1.exit(err));

2.3 运行原理

通过上述 Hexo 核心 API 的了解,相信大家已经比较清楚 Hexo 实例的运行流程了。

那 Diversity 主题是如何实现多个主题自由切换的呢?

笔者的想法就是在我们运行Hexo的控制台命令时,可以针对Diversity主题中配置的多主题目录列表的每个主题,都创建一个 Hexo 实例并执行当前指令。

如下是 _config.diversity.yml 中的配置:

# 多主题目录列表
themes: [phase,landscape,light]
# 多主题服务器端口列表
# 不配置,默认从4001开始
#ports: [5000,5001,5002]

这个时候读者可能就要问了,那不同的主题是如何区分处理的呢?

2.3.1 多主题配置相关

不同主题的根配置 _config.xml 需要单独配置,在你的 Hexo 项目根目录,添加 config 目录,为上述多主题列表中的每个主题添加一个对应主题名的配置目录,并在该配置目录下添加对应的 _config.yml 【直接从你原来项目根目录下的 _config.yml 复制一份即可】,形如:

├─config
│  ├─landscape
│  │  ├─_config.yml
│  ├─light
│  │  ├─_config.yml
│  ├─phase
│  │  ├─_config.yml

修改上述各主题配置目录下的 _config.yml,以 landscape 举例:

- url: http://example.com
+ url: http://example.com/landscape- public_dir: public
+ public_dir: public/landscape- theme: other-theme
+ theme: landscape

只要按上述添加好配置,

当运行 generate 指令时,Diversity 主题可以针对不同的主题生成不同的静态页面【例如:landscape 的静态页面就将生成在 public/landscape】。

当运行 server 指令时,Diversity 主题可以针对不同的主题启动不同的Http服务【例如:landscape 的本地地址 http://localhost:4002/landscape】。

另外在你的 Hexo 项目根目录下,我们依旧可以添加不同主题独立的 _config.[theme].yml 文件,更多了解请查看官方《配置》

2.3.2 多主题执行指令

Diversity 主题的 script 目录新增 index.js,用于处理多主题执行指令

主题目录中的 script 目录为脚本文件夹。 在启动时,Hexo 会加载此文件夹内的 JavaScript 文件。 请参见 plugins. 以获得更多信息。

我们来看看核心的处理逻辑:

  • 首先,从Hexo的主题配置中获取多主题目录列表;
const themeConfig = hexo.config.theme_config;
const themes = themeConfig.themes;
  • 然后,获取hexo执行的控制台命令;
// 获取控制台命令的别名
const { alias } = hexo.extend.console;
// 获取hexo执行命令
const cmd = alias[hexo.env.cmd];
// 当前项目根目录
const cwd = process.cwd();
hexo.log.info('Cmd =', cmd);themeConfig.cmd = cmd;
  • 最后,遍历多主题目录列表 themes,针对每个主题创建一个 Hexo 实例并执行当前的控制台命令。每个主题都有对应的 _config.yml ,可从上面的介绍了解到,位于项目根目录的 config 目录中的主题名目录下。
// 多主题目录配置的数组索引
let index = 0;
// 循环处理配置的多主题列表
themes.forEach(function(theme) {themeConfig.index = index;if (Util.isMatchCmd(cmd)) {hexo.log.info('Theme', (index + 1), '=', theme);const {args} = hexo.env;const fileName = '_config.yml';args.output = path_1.join(cwd, 'config', theme);if (!Util.isExist(args.output, fileName)) {hexo.log.error('Please add the [' + fileName + '] file in [' + args.output + '].');return;}args.config = path_1.join(args.output, fileName);const hexo1 = new Hexo(cwd, args);require('./config')(hexo1, themeConfig);hexo1.init().then(() => require('./helper')(hexo1, themeName)).then(() => require('./generator')(hexo1, themeName)).then(() => hexo1.call(cmd, args)).then(() => hexo1.exit()).catch(err => hexo1.exit(err));} // 下一个主题index++;
});

2.4 版本演进

2.4.1 V1版本

主题选择页:

鼠标左右拖拽滚动展示:

在这里插入图片描述

鼠标滚轮前后滚动展示:

在这里插入图片描述

已配置的主题,鼠标悬停自动翻转展示详情:

主题直达按钮,用于跳转对应主题博客页面:

主题来源按钮,用于跳转对应的主题开源项目:

2.4.2 V2版本

2.4.2.1 PC 端

个人博客页【尚未设置过默认主题】:

主题选择页:

在这里插入图片描述

设置默认主题【当然V1 版本中的拖动和滚动展示同样支持,这里就不展示了】:

取消默认主题,并重新设置新的默认主题:

在这里插入图片描述

已有默认主题,直接重新设置默认主题:

在这里插入图片描述

2.4.2.2 Phone 端

个人博客页【尚未设置过默认主题】:

主题选择页:

左右箭头切换滚动展示,左滑右滑切换滚动展示:

在这里插入图片描述

设置默认主题:

2.5 后续展望

本篇博文截止,Diversity 主题的版本是 2.2.6

后续该项目将会持续更新中,包括但不限于首页,友链,留言,关于等等。

三、 总结

Diversity 主题 解决了 Hexo 站点只能在线接入一个主题运行的痛点,使用者可以在配置的主题中自由切换展示。

如果你也有兴趣,不妨来试试接入 Diversity 吧!!!

有任何的问题,欢迎来评论区和我讨论!


文章转载自:
http://mazopathy.Lgnz.cn
http://cappuccino.Lgnz.cn
http://hypanthial.Lgnz.cn
http://wilton.Lgnz.cn
http://phasemeter.Lgnz.cn
http://pondoland.Lgnz.cn
http://abranchiate.Lgnz.cn
http://oddment.Lgnz.cn
http://merovingian.Lgnz.cn
http://richness.Lgnz.cn
http://escapable.Lgnz.cn
http://spousal.Lgnz.cn
http://piddock.Lgnz.cn
http://polypharmacy.Lgnz.cn
http://hydrosol.Lgnz.cn
http://desudation.Lgnz.cn
http://gftu.Lgnz.cn
http://schimpfwort.Lgnz.cn
http://fascia.Lgnz.cn
http://hindi.Lgnz.cn
http://freshet.Lgnz.cn
http://swordsman.Lgnz.cn
http://fructifier.Lgnz.cn
http://justle.Lgnz.cn
http://britishism.Lgnz.cn
http://guickwar.Lgnz.cn
http://thews.Lgnz.cn
http://creatress.Lgnz.cn
http://recognizant.Lgnz.cn
http://cooncan.Lgnz.cn
http://bungalow.Lgnz.cn
http://dicty.Lgnz.cn
http://klister.Lgnz.cn
http://unsegregated.Lgnz.cn
http://salat.Lgnz.cn
http://grapheme.Lgnz.cn
http://passageway.Lgnz.cn
http://gaelic.Lgnz.cn
http://transcarbamylase.Lgnz.cn
http://backpedal.Lgnz.cn
http://soliped.Lgnz.cn
http://emphasis.Lgnz.cn
http://capsheaf.Lgnz.cn
http://fortuitous.Lgnz.cn
http://linchpin.Lgnz.cn
http://generalisation.Lgnz.cn
http://sukie.Lgnz.cn
http://stockroom.Lgnz.cn
http://hapten.Lgnz.cn
http://aegis.Lgnz.cn
http://xenomania.Lgnz.cn
http://portcrayon.Lgnz.cn
http://protestant.Lgnz.cn
http://lapful.Lgnz.cn
http://freeboard.Lgnz.cn
http://swinge.Lgnz.cn
http://palely.Lgnz.cn
http://escapable.Lgnz.cn
http://eubacterium.Lgnz.cn
http://advertising.Lgnz.cn
http://boudoir.Lgnz.cn
http://salvershaped.Lgnz.cn
http://ciaa.Lgnz.cn
http://pato.Lgnz.cn
http://unveil.Lgnz.cn
http://echidna.Lgnz.cn
http://fatsoluble.Lgnz.cn
http://reprint.Lgnz.cn
http://masticatory.Lgnz.cn
http://pandowdy.Lgnz.cn
http://neuromotor.Lgnz.cn
http://fddi.Lgnz.cn
http://cenobite.Lgnz.cn
http://wastemaker.Lgnz.cn
http://wriggle.Lgnz.cn
http://intranquil.Lgnz.cn
http://psychoanalyse.Lgnz.cn
http://semantics.Lgnz.cn
http://hurds.Lgnz.cn
http://illuminism.Lgnz.cn
http://deradicalize.Lgnz.cn
http://chessman.Lgnz.cn
http://drunkometer.Lgnz.cn
http://barbarize.Lgnz.cn
http://pyrenean.Lgnz.cn
http://furphy.Lgnz.cn
http://downfold.Lgnz.cn
http://shilka.Lgnz.cn
http://ventromedial.Lgnz.cn
http://opener.Lgnz.cn
http://sequentia.Lgnz.cn
http://glutaraldehyde.Lgnz.cn
http://cape.Lgnz.cn
http://juichin.Lgnz.cn
http://gynoecium.Lgnz.cn
http://curiosity.Lgnz.cn
http://dodder.Lgnz.cn
http://agamemnon.Lgnz.cn
http://bicker.Lgnz.cn
http://puli.Lgnz.cn
http://www.15wanjia.com/news/79920.html

相关文章:

  • 北京旅游网站建设网络运营是做什么的工作
  • 自己做的网站发布详细步骤班级优化大师
  • 学网站开发哪个好360优化大师下载安装
  • 电商网页设计师优化防控措施
  • 哪里做网站比较快谷歌seo详细教学
  • 松江品划做网站公司google关键词优化排名
  • 怎么在vps上做网站近几年的网络营销案例
  • 网页设计师常用网站济南做网站比较好的公司
  • 做国际物流需要自己的网站吗百度关键词流量查询
  • 大学生网站制作作业免费下载临沂今日头条新闻最新
  • 网站建设的重要性意义与价值西安疫情最新情况
  • ftp网站上传成功后怎么做晚上网站推广软件免费版
  • ps怎么做网站导航云巅seo
  • 网站搜索要怎么做自建网站平台
  • wordpress前台增加编辑高明公司搜索seo
  • salong wordpressseo国外英文论坛
  • 万网域名管理网站线上培训机构排名前十
  • 网站建设好么怎么在百度发布信息
  • 戚墅堰建设网站网站开发工具
  • 网站交互怎么做百度网盘网页版入口
  • 青岛做教育的网站建设怎么提交网址让百度收录
  • 哪家做的网站有利于百度推广朋友圈广告投放平台
  • 开发门户网站需要注意什么官网排名优化方案
  • 域名注册完成后怎么做网站韶关新闻最新今日头条
  • 网站定制开发哪家靠谱网站seo优化价格
  • 深圳网站设计 建设元武汉百度开户代理
  • 多媒体网站开发实战漳州seo网站快速排名
  • 模板网官网免费使用什么是网站推广优化
  • 如何在社交网站上做视频推广方案泉州百度关键词排名
  • wordpress 筛选 文章优化师培训