主题是存储在nvPress根目录/nv-themes
文件夹中的,为便于开发,本文以开发版为例进行讲解。
::: tip
对于Docker而言,是被映射出来的主题目录,在运行时应该将 /usr/src/app/nv-themes
文件夹映射到本地。
:::
一个主题至少包含3个部分:
- theme.json 主题基础资料
- 前台页面文件夹
- function.js 为网站添加一些特性和功能,您可以使用它来调用 nvPress 内置函数或定义自己的函数
接下来我们创建这三个部分。
步骤
主题文件夹
将您的资源管理器定位到 nvPress根目录/nv-themes
,新建文件夹,==文件夹名称使用英文小写+短横线或下划线形式,不要使用空格或其他特殊符号==。例如:pandastudio-example-theme
theme.json
在主题文件夹中新建theme.json
文件,内容编写如下:
{
"name": "示例主题",
"url": "http://",
"description": "这是一个示例主题",
"version": "1.0.0",
"author": "PANDA Studio",
"author_url": "https://panda.panda-studio.cn",
"update_excludes": ["sample_file.js","sample_directory"]
}
说明
- name:主题名称
- url:将会在后台-主题作为链接存在,可以是主题demo也可以是主题介绍页面
- description:主题简要描述
- version:版本号
- author:作者
- author_url:作者链接
- update_excludes:更新时,保留根目录中指定的文件/文件夹
前台文件夹
由于是前后端分离主题,前端是静态的html页面。这里的前台文件夹指的就是存储这个页面的文件夹。
在主题文件夹中新建文件夹,名称不做要求。例如:dist
function.js
在主题文件夹中新建function.js
文件,主题的接口、钩子、配置都会在这里编写。
在这里使用渲染助手来实现一个 ==客户端渲染(CSR)== 主题的示例,通常用于Vue等纯前端主题:
nv_render_assistant({
// 客户端渲染:CSR,服务器端渲染:SSR
rendering_mode: "CSR",
// 将主题目录下的 dist 文件夹内容暴露出来,访问前台相当于访问这个文件夹
root_folder: get_theme_path("./dist/")
})
至此,我们已经得到了基础的主题结构:
nvPress主目录
├ nvpress
├ packages
├ nv-admin
├ nv-content
├ nv-plugins
└ nv-themes
└ example-theme
├ dist
├ function.js
└ theme.json
调试
::: tip
重启nvPress服务,进入后台-主题,启用刚才新建的“示例主题”,等待5秒后重启服务。可看到主题启用成功提示:
主进程已启动
已加载主题:example-theme
Express启动成功,端口:8081
::: tip 为什么要等5秒?
nvPress的数据写入有延迟写入特性:为防止数据在短时间内发生连续多次的写入影响硬盘性能,在上一次写入后的5秒内,若有再次修改,则延缓5秒后再统一写入数据文件。
因此,为保证数据成功修改到数据文件,需至少5秒后再重启服务,以免数据丢失。
:::