
----
蜂巢(OpenComb) 是一个 Node.js 的 Web 框架。

#概念

### 网页是可以组合的

网页总是可以分割成不同的视图区域，在蜂巢中，每个控制器(controller)对应一个视图(view)，
控制器本质上就是一个函数，它负责生成一段html，这段html就是视图。
控制器是可以“组合”的，任何一个网页都是由若干个控制器，各自负责一个区域，然后组合在一起共同渲染生而成。
针对控制器的组合方式，蜂巢提供了简单却十分有效的机制。

不同于其他框架，蜂巢的控制器具有很强的可重用性，每一个控制器都只负责自己的视图区域，而不需要处理其他任何事情，
因此，你可以安全地将若干控制器组合起来，生成一个网页。

### 扩展驱动


### 不必重复发明车轮


### 拥抱社区

### 健壮而敏捷

“敏捷”在web和移动开发领域被普遍接受，但是我们发现，绝大多数开发团队在开发过程中，是以牺牲健壮来换取敏捷的。

在这种方式下，创业者能够快速地完成其idea 的 demo ，以及最小可用产品；可是，在这些成果被认可以后，从下一轮迭代开始，开发往往陷入了困境：混乱的系统成为了“敏捷”的障碍。

你所完成的最小可用产品，往往只是实现了你要为用户解决的核心问题，虽然它能有效地收获用户的认同，
但是，此时的产品通常并不完善，还有需多关键特性仍然留在计划里，从可用性的角度来讲，还没有达到可用的程度。

在这个时候，产品的迭代如果停下来，放慢更新的速度，将是非常危险的事情，你会面临 idea/business model 被其他人模仿，以及用户流失的风险。

而前期为了“快速地”（我没有没有用“敏捷”这个词）发布产品，导致系统各项“健壮指标”低下，在这个时候，就会成为保持”敏捷“的一大障碍。

我认识不止一个创业团队，在产品的两三个迭代周期以后，面临不得不对系统进行大面积”重构"的尴尬处境。
产品无法继续“增量”式地成长，每轮迭代都在损害系统的“健壮性”，而面对混乱的系统，开发人员无论如何也“敏捷”不起来了。
这个时候，你可能在想要求你的员工（或你的老板可能在想要求你）加班来保证新版本准时上线。

而蜂巢所追求的“敏捷”，从来不会以牺牲系统的健壮为代价。只有健壮，才可能持续敏捷。

使用蜂巢，你的状态应该是这样的：用一个周末来完成 idea 的 demo，然后给你的朋友看；一些朋友觉得很有意思，决定加入进来和你一起工作；
接下来，你们用数周的时间（不应该更长）实现了这个创意的最小可用产品，并且发布；
在体验过你们的产品后，用户很容易就认同了你们的想法，于是你们决定投入更多的精力到这个产品上。
在往后的半年时间里，你们一轮又一轮的完成产品的迭代，保持高频率的产品更新，而且每一次更新都获得了用户的强烈反馈，你们收获到的成就感将使你们保持充分的信心，将这个产品支持下去。








---

## 可用的扩展

* ocxUser 基本的用户系统：实现可用户的注册、登陆等操作

* ocxGroup 实现了树形结构的用户组系统

* ocxPurview 基于白名单的权限系统，支持为用户或用户组设定权限，并实现了用户组关系树上的权限“冒泡”和“继承”。

* ocxTags 内容无关的标签扩展，可以简单灵活的用在任何控制器里

* ocxComment 内容无关的用户评论扩展，可以简单灵活的用在任何控制器里

* ocxBlog 一个简单但是刚好够用的 blog ，由于基于蜂巢架构，你可以相当容易地扩展它

* ocxUserOAuth2 扩展了 ocxuser，使之支持 oAuth2 协议。当前版本内置支持 weibo.com；你可以使用该扩展提供的 api 很容易地支持其他网站和服务。

* ocxCMS 将 ocxBlog 扩展为一个 cms ，


所有蜂巢的扩展都是可选的，并且可以自由搭配，
例如 ocxUserOAuth2 和 ocxComment 之间不存在任何依赖关系，但是，如果你安装了 ocxUserOAuth2，通过oauth协议登陆的用户一样可以通过ocxComment控制器的认证发表评论。




---


1、	点击链接时网页不会被刷新¬，只有发生变化的部分会被更换。

并且该效果不会对SEO产生影响，搜索引擎通过链接能够看到正常的完整网页。

也不会导致浏览器的历史记录，前进、后台等操作失效，当用户点击浏览器的后退按钮时，被替换掉的部分，会重新切换回来。

浏览器地址栏总是会显示最新的url，虽然网页并没有被刷新，所以不会干扰用户复制当前网页的url 分享给其他用户。

2、	当用户请求网页的时候，只返回数据，而不是完整的html网页，然后在用户的浏览器里完成模板的渲染。这大大减少了对网络带宽的占用，尤其对于移动设备的用户来说。同时，也可以减轻服务器的计算压力，从模板渲染成网页，是由客户端的浏览器完成。

同样，这个特性只会针对真正的用户，搜索引擎的爬虫机器人仍然能看到完整的网页。

3、	蜂巢的CSS框架采用了“响应式布局”技术，能够智能地根据用户的设备类型（PC，平板电脑，以及手机）自动地调整显示效果，保证网页在所有的设备上，都能拥有完美的布局。

4、	重视体验。蜂巢同时重视用户体验和开发体验：蜂巢的前端框架为常用的网页浏览和操作提供了简洁、漂亮的视觉效果和交互动效；蜂巢的API设计地简单而优雅，开发人员能够将主要精力放在自己的业务逻辑上，而非任何底层的技术细节。

5、	1、	敏捷而健壮。只有保证系统的“健壮”，才可能持续敏捷。蜂巢的系统设计，考虑到了所有重要的软件设计上的指标：高内聚、低耦合、依赖注入、Don’t Repeat Your Self，等等。蜂巢面向开发者的API，虽然简洁，开发者能够在使用“敏捷”地使用蜂巢开发网站和web app；可是蜂巢内部的实现，却非常严谨，同时保证开发者的代码不会轻易破坏系统的健壮。

6、	可组合的网页。蜂巢将网页拆分为不同的“视图”，所有网页都由一个或多个视图构成。在基于蜂巢开发的网站中，任何网页都可以关闭某些视图，用视图重新组合成新的网页，以及对网页上的视图进行重新布局排列

这对网站的运营来说，是相当有利的。运营团队可以自由地调用网站中的任何视图，快速“拼装”出一个专题来。这些“拼凑”在一起的视图，依然完整保留原来的行为：访问权限、发表评论、顶一下或踩一下、统计文章的浏览次数等等。他们不仅仅是显示在一起，功能也一起带过来了。

当发生社会事件时，运营团队在程序和美工到公司上班前，就搞定了一个高质量的专题。

7、	对扩展进行扩展。蜂巢是基于扩展的，开发者的

8、	拥抱社区
