## 文件结构的特点 Cabloy-CMS采用精细的文件结构,带来了如下便利: - 便于定制CSS、JS - 便于定制图片等各类静态资源 - 便于实现多语言 - 便于调试与发布 ::: alert-info 建议先把服务运行起来,并`整站构建`一次,就可以清晰的看到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` ``` javascript config.modules = { 'a-base': { publicDir: '/path/to/public', }, }; ``` - `publicDir`: 必须是绝对路径,相当于在生成环境中覆盖路径`{HomeDir}/cabloy/{ProjectName}/public`,那么根目录最终可表达为: `{publicDir}/{InstanceId}/cms` ## 一级目录 ![12](https://portal.cabloy.com/api/a/file/file/download/9c0c87d3ab9e4a43a065f905b5a2f756.png) |名称|说明| |-|-| |dist|`构建`的输出目录| |en-us/zh-cn|语言源码目录| ## 输出目录 ![13](https://portal.cabloy.com/api/a/file/file/download/ccec20e8496444cabea6aab8151aee32.png) |名称|说明|渲染时机|备注| |-|-|-|-| |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](https://portal.cabloy.com/api/a/file/file/download/56007eebecf240e2b2123a8e45d9a0c4.png) |名称|说明|备注| |-|-|-| |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`目录进行定制