Web应用程序的前端架构

时间:2011-08-09 08:47:39

标签: spring api rest node.js frontend

我必须编写一个新的Web应用程序,目前正在决定体系结构,我知道有几件事我希望能够做到:

  1. 所有机器必须是对称的,即:商品机器没有自定义构建服务器(aws)
  2. 我想要一个与UI分离的ReST API,因为我已经拥有三个API客户端:移动应用程序,网站和第三家公司的服务器等待产品构建
  3. 它需要能够水平扩展(a但重复1)
  4. 易于维护:没有时间学习新语言,更多候选人但愿意采用新技术
  5. 这是我提出的基本架构:

    结合nginx + nodejs + expressjs + YUI的前端, api:nginx + tomcat + spring框架栈(rest + Security + core + aop)

    前端将与oAuth 2.0的api交谈

    没有什么令人兴奋的api我以前做过,我知道它的工作和运作良好会喜欢放一些scala的味道,但我没有时间。

    我主要担心的是前端:nodejs非常令人兴奋,我已经玩了一段时间也喜欢它在JS中的事实,但我害怕导航+模板+会话(仅用于身份验证:无状态,无国籍,无国籍)+记录+调试它,如果它有效,它运作良好,但它不是一个成熟的环境,以发展.......

    这里有人开发了一个带有堆栈或子集的完整前端吗?还有其他建议可供选择吗?

    谢谢你们。

2 个答案:

答案 0 :(得分:0)

因此,如果您遇到测试问题,那么您只是误解了Node.js和Express的一些功能。例如,您可以使用类似的东西进行测试:

app.get('/route', function(req,res,next) {
    require('./controllers.js').method(req,res,next)
});

然后你需要删除你的controlles.js中所需的所有文件的缓存:

if (require.cache[__filename])
{
  var del = false;
  for ( i in require.cache)
  {
    if (i == __filename)
    {
      del = true;
    }
    if (del)
    {
      delete require.cache[i];
    }
  }
}

现在,当请求通过时,您的控制器将立即更新为当前版本。

要了解nodejs如何工作,请尝试以下方法:

<强> require.js

module.exports = {};

<强> main.js

var x = require('./require.js');
x.tell = true;
var y = require('./require.js');
y.tell = false;

console.log(require('./require.js'));

答案 1 :(得分:0)

  

但我害怕导航+模板+会话(for   仅限身份验证:无状态,无状态,无状态)+日志记录+调试   它的

导航?不确定你的意思。使用超链接。 AFAIK在节点中没有像Rails'form_for()类型助手一样的东西,但那些对我来说从未如此有趣。如果您想要在过滤器之前/之后使用Rails样式,例如要求登录用户,则连接会很好。

app.all('/app/*', requireUser)

对于以requireUser开头的任何路径,都会调用/app。在requireUser内,你可以确保req.session.user在那里(并且可能有适当的授权)。如果是,则调用next()并执行负责实际生成响应的中间件。如果用户未登录或未获得授权,您可以生成30倍重定向响应,不要致电next()。完成。在express.js guide中有一个很好的例子。搜索loadUser。这个设计很优雅,恕我直言。

模板?嗯,node.js具有比任何其他平台更好或更好的模板选项。试试jade或其他十几个人。您可以在服务器和浏览器中使用相同的模板,这是一个不错的胜利。查看this video of Dav Glass using YUI widgets on the server side in node.js,因为您喜欢YUI。

会话? Connect sessions。味道很棒。少填充。有什么问题?

日志记录? Winston适合我。我认为也有更高档的图书馆。

调试? node-inspector为node.js(IMHO)提供了最佳的调试支持。它使用chrome的检查器进行调试,并且与调试客户端javascript一样令人敬畏。我还可以通过jasbin运行时调试服务器端单元测试。

以下是what companies are using node.js in production的答案。