论坛已然有了雏形

上文说到我做了个论坛,其实那时我还没做界面,仅仅把model层做了下,这次借助bootstrap3.0做了下界面,感觉真的有个样子了

相比nodeclub来说,主要是有了板块这个概念,同时它是响应式的,我更加关注论坛在手机浏览器上的显示效果

这次制作的原则是留白,一切都要最简单,方便以后的扩展,使用的颜色基本都是灰色和白色

由于我坚持完全使用bootstrap(主要是我不想放任何静态文件,全靠cdn),因此有不少布局我都有点茫然,一个劲的翻bootstrap官网

例如这个帖子列表,我一开始都感觉自己不会写了,后来动手设计了一下,试着实现,结果一下子就出来了

不过这完全依赖bootstrap的栅格,可以看下手机和电脑的效果,同一段html代码,在pc和手机上显示居然如此不同

新版的bootstrap确实在响应式上花了大工夫,每次实现一个效果,我都觉得bootstrap精妙绝伦,上次有人在微博上吐槽“什么时候bootstrap也是技能了?”。 在我看来bootstrap绝壁是个大技能,熟练使用的话完全可以快速建站。我下一个计划就是准备弥补一下自己CSS薄弱的问题,好好学习bootstrap,认真看一下源码

手机上效果

电脑上效果

另外想说的是我这次使用的模板引擎是jade,很早前我就知道jade,但觉得它语法怪异,上手有难度,于是自己实现了一个简单的模板引擎,现在看来和ejs几乎一样,非常的简单,一个文件

这次突然转向jade,完全是因为新版的ejs放弃了layout这个概念,理由是layout会触发复杂IO操作(大概这意思)。于是ejs推荐用include header.html这样的方法在引入子模板,显然,这样的问题是除了引入header.html,我们还需要foot.html,每个文件都这么写蛋都碎了。这个问题本质的原因是include是父模板引用子模板,而layout是子模板嵌入父模板,根本不是一个概念

然而,就算有layout,依然会有问题,比如我们希望子模板来定义title,但title标签显然是在layout中的

在真正建站的时候,使用jade模板将解决所有问题,没错,就是所有问题

我如此青睐jade主要是它提供了三个父子模板关系的标识block, include, extends

这三个标识看上去特别熟悉,它是django模板中的功能,我在使用django模板的时候就觉得真心碉堡了,一直想做一个有这样功能的nodejs的模板引擎。

看到jade后才知道自己想多了,jade早就已经完美,解决了我长久以来所有的问题

奇怪的是jade的官网并没有提到这方面的功能,这让人很不解,我甚至都忘了当时是怎么发现jade有这个功能的

来看下使用jade和使用ejs的一段html代码

没有尖三角,没有结束标签看上去简洁不少,jade的优点实在太多,光是注释用起来这么爽就足以完爆其他模板

可以这么说,制作论坛本意是搞mongodb的,但最大的收获不是mongodb也不是bootstrap,就是jade模板的使用