文件结构

2018-11-14 13:11:34

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

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

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

根目录

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

开发环境

根目录:[ProjectDir]/src/backend/app/public/[InstanceId]/cms

  • InstanceId: 实例Id,通过多实例可以实现多CMS站点的搭建

生产环境

根目录:[HomeDir]/cabloy/[ProjectName]/public/[InstanceId]/cms

  • HomeDir: 默认为当前用户的Home目录,可以通过模块a-base配置

src/backend/config/config.prod.js

config.modules = {
  'a-base': {
    publicDir: 'CustomDir',
  },
};

一级目录

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 布局目录 中间文件 layout不是官方强制定义的目录。主题可根据自己的需要添加,规划自己的页面元素
main 主渲染模版目录 两个渲染时机
main/article.ejs 文章渲染模版 当需要渲染文章时使用此模版文件
main/index 首页渲染模版目录 当需要渲染首页时使用此目录中的模版文件。为什么是目录?在一个复杂的站点中,根据场景需要可以有多个类首页模版文件
plugins 插件目录 一次构建 在一次构建时,把所有插件源码文件和资源写入plugins目录
static 静态文件目录 一次构建 如文件articles.ejs,通过ajax调用后端API获取文章清单,从而可以集中实现目录标签搜索等功能

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

  • 写入同一个目录,便于各文件之间的包含引用


评论: