在过去的几个月里,我们一直在寻找以下问题的解决方案:前端开发人员如果没有后端开发人员的帮助,就不能轻松地修改网站的外观。
我们的团队文化主要基于Symfony 2和Ruby on Rails等全栈框架。我们使用模板引擎,但模板大多是由后端开发人员根据设计师的标记编写的。
我们要考虑的步骤是将这个整体架构分成一个后端rest API和一个作为"UI服务器“的NodeJS服务器。NodeJS服务器将处理客户端请求,使用后端应用程序接口并返回呈现的模板。通过清楚地指定API和JSON服务,前端和后端开发人员可以并行工作,问题更少。更多信息请点击此处:http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/
问题是,我们坚信这种与架构POV的分离是一件好事,但我们担心它的缺点。我们怀疑这将使事情变得更加困难。我们团队中没有人从来没有使用过这种架构,所以任何关于这方面的提示或经验都将是非常有价值的。
值得吗?什么时候?为什么?
发布于 2014-05-26 23:41:33
你需要做的是有一条清晰的分界线来区分你的前端和后端。然后,无论前端从后端团队需要什么,它都会被全面记录下来。
假设您当前拥有的内容如下所示:
app.get('/', function (req, res) {
database.query('select * from user', function (err, result) {
res.render(result);
});
});然后你想让它变成这样:
在UI服务器中:
app.get('/', function (req, res) {
request('apiServer/user', function (err, result) {
res.render(result);
});
});在API服务器中:
app.get('/user', function (req, res) {
database.query('select * from user', function (err, result) {
res.send(result);
});
});这很好。这将分离前端和后端,但不仅在逻辑上,而且在物理上也是如此,因为它们位于不同的服务器中。
我相信如果他们在同一台服务器下,那就没问题了。而不是上面,只需将它们放在不同的文件中:
在user.js中:
exports.getAll = function (cb) {
database.query('select * from user', cb);
};在server.js中:
var user = require('./user');
app.get('/', function (req, res) {
user.getAll(function (err, result) {
res.render(result);
});
});为什么这比你的解决方案更好?因为它分离了接触数据库和渲染数据,而且它也没有额外的http往返。
遵循MVC模式,将类似于user.js的文件放入models目录,将类似server.js的文件放入控制器目录。您要确保为前端开发人员记录了这两个文档。
现在,如果您的前端开发人员只是要更改UI,他们将只接触HTML文件。
如果使用ORM不是你的选择,那就做个好的抽象。
因此,层中的应用程序可能如下所示:
Database --> ORM --> Models --> Controllers --> Views(HTML files)
现在前端开发人员,在上图右侧工作。他们只需要知道记录在他们左侧的API,如果它被很好地抽象出来,但他们不需要知道它是如何工作的。任何在控制器上工作的人,只需要知道他们左侧的文档API,也就是模型。你可以一直走到左边的数据库。
然后,在每一层上,您都可以进行单元测试和集成测试,以确保接口的一致性。
如果你的团队很大,有很大的代码库,请确保你的界面始终保持向后兼容性,但在日志中会对不推荐使用的东西发出警告。永远不要试图打破任何东西。
https://stackoverflow.com/questions/23871853
复制相似问题