Node 和 Express 没有严格的文件和目录结构。反而你可以用你自己喜欢的方式(项目目录结构)建立你自己的 web 应用。
然而,随着你的应用发展到一定的大小和复杂时,事情可能就会变得令人困惑了。你的代码太乱了。随着你团队的成长,在原来代码基础上继续工作将变得很困难。每当代码合并时,你都要和冲突进行“斗争”。添加新的特性和不断地处理新的情况的话,需要改变应用的结构。而且,有如此多不同的方法来组织你的文件你和代码,并且在这些方法中很难选择出最适合你的。
你想要在这个文件结构中,不同的文件和目录负责不同的任务。你想要你的项目能够很容易的进行多人合作,并且他们工作合并代码时要尽可能少的冲突。你想要保持你的代码干净整洁。你想要你的文件结构能够允许你很容易地为项目添加新的特性。
这个是可以实现的。我们也有同样的问题,并且我们有一种方法,来组织你的应用代码,这种方法可以改善和修复很多上面提到的问题。
我们的结构将基于 Model-View-Controller (MVC)设计模式。这个设计模式可以很好的将你应用分离成不同的部分,不同的部分可以承担起不同的责任,并且可以让你的代码维护性更好。让我们来看看如何有效地在 Express web 应用中如何实现。我们不会讨论 MVC 的优点,取而代之的是聚焦到我们如何将 MVC 模式适当地应用在 Express 框架上,并且我们也可以看到一些其他的最好的实践。我们在各种各样的应用和各种大小的应用在大小团队都用过上面提到的这种模式进行开发,结果都一直很好。
例子
让我们来看一下如下的例子。在这个应用中,用户可以登录、注册以及评论。下面就是这个应用的文件和目录结构。
project/
controllers/
comments.js
index.js
users.js
helpers/
dates.js
middlewares/
auth.js
users.js
models/
comment.js
user.js
public/
libs/
css/
img/
views/
comments/
comment.jade
users/
index.jade
tests/
controllers/
models/
comment.js
middlewares/
integration/
ui/
.gitignore
app.js
package.json
这看起来可能比较复杂,但是不要担心,等你读完这篇文章,你将会完全明白里面的每个部分。这真的很简单。
让我们来看看在项目根目录下的文件和文件的概要说明:
- controllers/ – 定义你应用的路由和其他的逻辑
- helpers/ – 可以被项目各部分所调用的功能函数和代码
- middlewares/ – Express 中间件,将要处理在进入路由之前的请求
- models/ – 表示数据,实现业务逻辑和处理存储
- public/ – 包含所有的静态文件,像图片、样式和脚本
- views/ – 提供模板文件,模板文件将会在你路由中进行渲染和使用
- tests/ – 测试在其他文件夹的的代码
- app.js – 初始化应用
- package.json – 你应用所依赖的特定版本的包