logo of Shuibaco

高效的模板写法

2017. / 1,263字 / 1,052阅 / 0评

欢迎来到《Bitcron主题制作系列教程》。上一篇介绍了一个.jade后缀的模板文件的基本结构,按照这个结构书写就能在Bitcron上被转换为实际的网页。但是一个网站的页面有很多种,比如首页、文章内页、归档页面等,这就对应了很多个Jade文档。一般来说网站的结构确定下来之后,除了最主要的内容部分(main)会随着页面变化而变化,其他部分比如页首(header)、菜单栏(nav)和页脚(footer)都是完全相同的。那么这篇就来说说要如何高效地书写模板文件才能更简洁更省力。

合并模板文件

如果页面间不同的部分实际上逻辑一致,调用手法也相同,能够用简约的代码来表达不同的页面,那么就可以考虑把这些文件合并。根据官方文档的说明,可以使用+进行合并(原文中两个举例重复了,我估计是为了表达文件名排序不分前后,所以进行了修改):

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

但根据Bitcron的模板规则,我发现最合适合并的还是index.jadecategory.jadetag.jade这三个文件。几乎不需要做任何更改,直接调用文章的API即可,也就是上文说的「能够用简约的代码来表达不同的页面」:

for post in posts
    h2= post.title
    .content= post.content

至于更复杂的情况,请参考主题「庸」中index+tag+category.jade写法

使用extends

如果不同的部分比较多或者需要更复杂的结构区分,那么上述方法可能会导致文件变得冗长,不易于维护。这时候还是需要分文件处理,但只修改不同的部分。因为如果每个页面都按照同样的写法重复一遍,一旦需要更改的时候就得每个都改过去,不论工程量是否浩大,这种做法也不够聪明。这时候用上block-extends的写法就能很好地解决这一问题。

不知道大家还记不记得我最初介绍base.jade的时候用了「模板中的模板」。顾名思义,它是一切的基础。如果网站结构复杂建议用base.jade先捋一遍结构,然后再在其他页面引用这个模板。

html
    head
        +h.headers
        +h.load('/template/style.scss')
        // 用block标记需要更改的部分
        block title
            title= site.title
    body
        header
            具体内容
        nav
            具体内容
        main
            // 用block标记需要更改的部分
            block content
                具体内容
        footer
            具体内容

采用block 任意代码的形式标记需要更改的部分,表示从这里开始往下的内容是可以更改的。然后在其他模板文件中引入base.jade,用相同的block 任意代码进行自定义。比如在归档页面archive.jade里可以这么写:

// 引入base.jade模板
extends base
// 修改标题部分
block title
    title= '归档 - ' + site.title
// 修改main中间的具体内容
block content
    具体内容

其他

以上两种是我常用的简化模板文件的方法,除此之外还有一些方法我不是太熟悉,这里只简单介绍一下。

使用include

跟extends刚好相反,是将页面分块化,再拼合起来。比如将评论代码写进comments.jade,再在post.jade里引用:

// 引入include文件夹中的comments.jade文件
include include/comments.jade

Bitcron已经很贴心地将很多常用代码块“规格化”了,所以不需要自己写,直接调用API即可,故而include我一次都没用过。

使用mixin

这部分我也因为没有使用过所以不是太了解,但我找到了一篇科普文——Bitcron模板如何重用代码,讲解得很清楚,如果有需要可以前去学习。

上一篇说明了每个模板文件的结构,这一篇讲解了所有模板文件间的联系,接下来就是细化到每个具体的模板文件,并介绍相对应的Bitcron中常用的API。那么下次见!

相关阅读

下一篇:Bitcron主题的首页
返回目录:Bitcron主题制作系列教程
上一篇:Jade文档的基本写法

1,116°
Bitcron主题的首页
Comments
Write a Comment
点击加载Disqus