文件结构的特点

Cabloy-CMS采用精细的文件结构,带来了如下便利:

  • 便于定制CSS、JS
  • 便于定制图片等各类静态资源
  • 便于实现多语言
  • 便于调试与发布

建议先把服务运行起来,并整站构建一次,就可以清晰的看到Cabloy-CMS的文件结构

根目录

开发环境中,为了便于调试,CMS文件根目录位于源代码项目内部。而在生产环境中,CMS文件根目录缺省放置在当前用户的Home目录

名称 环境
根目录 开发环境 {ProjectDir}/src/backend/app/public/{InstanceId}/cms
根目录 生产环境 {HomeDir}/cabloy/{ProjectName}/public/{InstanceId}/cms
  • InstanceId: 实例Id,通过多实例可以实现多站点的搭建
  • HomeDir: 默认为当前用户的Home目录

可以在项目配置文件中修改模块a-base的参数

src/backend/config/config.prod.js

config.modules = {
  'a-base': {
    publicDir: '/path/to/public',
  },
};
  • publicDir: 必须是绝对路径,相当于在生成环境中覆盖路径{HomeDir}/cabloy/{ProjectName}/public,那么根目录最终可表达为: {publicDir}/{InstanceId}/cms

一级目录

12

名称 说明
dist 构建的输出目录
en-us/zh-cn 语言源码目录

输出目录

13

名称 说明 渲染时机 备注
articles 存储所有渲染的文章页面 两个渲染时机
assets 资源文件 整站构建
plugins 插件的资源文件 整站构建
static 静态文件 整站构建 如文件articles.html,通过ajax调用后端API获取文章清单,从而可以集中实现目录标签搜索等功能
zh-cn 其他语言的文件输出目录 支持多语言时,缺省语言在根目录下,其他语言在子目录
index.html 首页 两个渲染时机 为了提升首页加载性能,首页可能会包含最近发布的文章。所以,当文章单独渲染时,也会再次渲染首页
robots.txt SEO相关 整站构建 不论是否有多语言,只有一个robots.txt根目录
sitemap.xml SEO相关,当前语言的站点地图文件 整站构建,文章单独渲染时修改内容
sitemapindex.xml SEO相关,站点地图文件索引 整站构建 不论是否有多语言,只有一个sitemapindex.xml根目录

语言源码目录

14

名称 说明 备注
intermediate 中间文件目录 整站构建时,将主题插件自定义源码的所有源码文件和资源统一写入intermediate目录,然后再执行渲染逻辑
custom 自定义源码目录 用户可以在custom目录添加自定义源码文件,在整站构建时,会自动覆盖intermediate中相同路径的文件
custom/dist 特别输出目录 在实际生产环境中,会有一些第三方用途的文件,如Google站点验证文件,可以放置在这个目录,以便整站构建时输出
名称 说明 备注
assets 资源文件
layout 布局目录 可根据自己的需要规划和添加页面元素
main 主渲染模版目录
main/article.ejs 文章渲染模版 当需要渲染文章时使用此模版文件
main/index 首页渲染模版目录 当需要渲染首页时使用此目录中的模版文件。为什么是目录?在一个复杂的站点中,根据场景需要可以有多个类似首页的模版文件
plugins 插件目录 整站构建时,把所有插件源码文件和资源写入plugins目录
static 静态文件目录 如文件articles.ejs,通过ajax调用后端API获取文章清单,从而可以集中实现目录标签搜索等功能

为什么需要把所有源码文件(主题插件自定义源码)都写入intermediate目录?

  • 集中归集到同一个目录,便于各文件之间的包含引用,也便于通过custom目录进行定制