[返回文档首页](../../README.md)


## 目录结构约定


* 首先，蜂巢的扩展实际上就是 npm 的包(package)，因此，安装扩展，也就是将扩展拷贝至蜂巢目录下的 node_modules 目录内。

你的代码必须作为蜂巢的扩展，存放在蜂巢的 node_modules 内。这和其他的框架不一样，通常是框架作为一个包，你引入它们，它们存放在你的项目的 node_modules 里。
可是蜂巢正好相反，你的项目只能作为蜂巢的一个扩展。

* `extension.js` 文件，如果在扩展的目录下提供这个文件，并且该文件直接导出一个函数，或者导出的对象中提供了属性名为 `onload` 的函数，蜂巢就会在启动时执行这个函数。

扩展的初始化工作，都可以在这个文件中完成。

蜂巢会按照包之间的依赖关系执行这些 extension.js 文件，被依赖的先执行；如果遇到循环依赖，情况是随机的（取决文件系统上的顺序）。

* `lib` 我们通常将代码放在lib目录，但这只是一个习惯，随你的喜好。但是 lib 内的控制器，在访问时，url可以省略掉'lib'，这倒是很大的方便之处。

* `templates` 我们习惯将模板统一放在templates目录里，同样这也只是一个习惯，而且 templates 没有任何特殊之处。

* `public` 浏览器可以直接访问扩展目录下的 public 目录里的所有文件，url 规则很简单，从 node_modules 开始，文件路径就是 url 里的路径。这很方便，但是必须小心，不能将敏感的文件放在 public 里。


最后，蜂巢的整个目录结构看起来就是这样：

```
<蜂巢目录>

　　├ config.json
　　├ index.js
　　└ node_modules

　　　　├ ocplatform
　　　　├ octemplate
　　　　├ <其他扩展>
　　　　├ ... ...
　　　　│
　　　　├ <你的扩展>
　　　　　　　　├ extension.js
　　　　　　　　├ lib
　　　　　　　　│　　├ <你的控制器以及其他js文件>
　　　　　　　　│　　└ ... ...
　　　　　　　　├ templates
　　　　　　　　│　　├ <你的模板文件>
　　　　　　　　│　　└ ... ...
　　　　　　　　└ public
　　　　　　　　　　　├ <可以直接通过浏览器访问的文件>
　　　　　　　　　　　└ ... ...

```


[返回文档首页](../../README.md)