URL匹配规则

网站所有的URL都是通过模板的文件路径决定的。
假设某个网站的模板文件路径为template/post.jade, 默认对应的是http://domain.com/post

URL限制性规则

系统会保留一些特殊的路径,不允许访问或者以其它方式被占用。(下述规则,URL 本身大小写不敏感。)

  1. /fb_static/ 开头的,这是系统自带的静态资源,此路径下的用户自己无法定义。
  2. /service/ 开头的,系统专用的一些页面路径,用户无法自定义。
  3. /configs/ 开头的,不允许访问。
  4. /licenses/ 开头的,不允许访问。
  5. /mails/ 开头的,不允许访问。
  6. /_data/ 开头的,不允许访问。
  7. .csv 结尾,并且处于根路径下的,不允许访问。
  8. .md.mk.markdown.txt Markdown 后缀结尾的 URL,并且能(直接)匹配到具体的 Markdown 文件,如果没有特别声明,不允许访问。

URL匹配优先级

  1. 静态资源、文件优先匹配
  2. URL 中呈现为 Markdown 文件类型的,匹配 Markdown 的默认呈现方式
  3. template目录下的模板文件的匹配

注: 一个直接路径(比如 hello.md )的Markdown文件的呈现,其页面不可自定义;但是可以换一种思路,在 template 目录下创建一个 x.jade,那么访问 /x/hello.md就能处理 hello.md 这个文档的呈现了。

模板文件与URL匹配的规则

  1. step1, 访问网站首页时, 匹配index.jade模板.
  2. step2, 完整匹配URL, 比如访问/path/sub_path匹配/path/sub_path.jade.
  3. step3, 仅匹配URL的第一部分, 比如访问/first_path/sub_path, 但是/first_path/sub_path.jade不存在,则会尝试匹配first_path.jade.
  4. step4, 如果之前步骤都未匹配到,但是存在site_routes.jade,尝试匹配之。
  5. 以上匹配都失败后,则使用404.jade作为Not Found的页面。

特别说明: 如果网站根目录下有 index.md,并且使用了 SmartPage 作为渲染引擎,则网站首页会呈现index.md的内容,但是如果是http://yourdomain.com/?status=loaded 这个特殊的?status=loaded增加后,则又会尝试使用 index.jade 作为首页的模板渲染。

注: URL的第一部分, 默认是指第一个/之前的, 如果URL中存在~~, 则取~~前的字符作为第一部分.

/path/sub_path 的第一部分是 `path`
/path/sub_path/~~hello/world 的第一部分则是`path/sub_path`

模板文件与混合路径的URL匹配

如果模板文件处于template目录内,那么文件名中有+连接多个关键词,可以实现一个页面匹配多个URL的效果。
比如template/index+tags+archive.jadetemplate/index+tags+archive.jade能同时处理首页/tags/archive这三个URL。

Scss/Sass/Less/CoffeeScript的原生支持

比如template/styles.scss,只有访问http://yoursite.com/template/style.scss?raw=true的时候,才会保留源格式;其它都是自动编译为CSS进行呈现。
对LESS格式的文件也是同样支持的,但是除了基本的层级关系、变量应用外,对LESS的支持相对有限,比如对应extend的写法并不支持。
另外需要注意的是,编译的过程是忽略所有include/import类似的引用逻辑。
同样,F也支持后缀为.coffee的Coffee Script脚本的自动编译。

注意事项

  1. 文件路径中不要出现. #以及非英文字符.
  2. 不要试图使用index.jade完成整个网站的route匹配,这样会增加网站自定义、未来维护的难度和成本。