【问题标题】:How to build Modern front-end with non-Node.js backend?如何使用非 Node.js 后端构建现代前端?
【发布时间】:2014-06-06 22:20:16
【问题描述】:

一般来说,我是后端和全栈开发人员以及技术主管。这些年来我一直在选择开发工具。

对于后端,我选择了 Typesafe Stack。它使应用程序具有反应性,并且相对容易扩展和维护。用 Scala 编写代码很有趣。

前端我用的是Angular.js,之前是knockout.js、YUI、Mootools、jquery、vanilla。

但是对于 Angular.js,我真的很困惑。问题不在于工具本身,而在于 Web 的发展方式。

目的是加快应用程序,使其更具响应性、反应性和交互性。它引导我们使用单页应用程序。 Angular.js 对它有好处。

但是。

对于现代应用来说,尽快呈现首页非常重要。对于单页应用,不能先解析主模板,然后加载所有脚本,然后启动应用,路由请求,然后向服务器请求一些 REST 资源,将其绑定到模板中,然后将其展示给用户。

等待大量网络延迟!很多连续的请求一个接一个。

所以看内容需要很长时间。此外,它很难通过搜索引擎进行索引,并且限制了可访问性(Safari 中的阅读器模式通常不尊重 angular.js 生成的标记)。

嗯,可以通过 prerender.io 等工具解决可搜索性问题。好吧,即使它看起来很丑,但是第一页加载是什么?

我听说 Twitter 终于变成了在后端渲染内容,然后用脚本包装它。怎么样?

我在 node.js 上看到了一些具有相同目的的项目。他们使用客户端实际获取的相同 javascript 呈现内容,并将结果 html 提供给它。然后用 React.js 触发器和代码,甚至 angular.js 来包装它。但是如果 Node.js 后端不是我们的选择呢?

所以要求很自然:

  • 能够在后端(预)呈现内容
  • 页面加载后连接脚本
  • 不要用脚本生成的内容替换页面内容
  • 对所有其他页面视图使用 html5 路由
  • 避免使用 node.js,至少不要将其作为主要的后端技术

只有我一个人能解决这个问题吗?你怎么看?

【问题讨论】:

  • 从服务器加载第一页,使用 Angular 进行所有更新。我错过了什么?
  • “我想要 nodejs 的功能,但我不想使用 nodejs” ...伙计们只使用 nodejs
  • @Mathletics 这意味着在服务器端和客户端环境中将模板加倍。你知道 angularjs 路由解决方案不只路由第一页吗?
  • @rafaelcastrocouto 真是一团糟。要在前端拥有 Feature1,我需要在后端使用 Tool1。要在后端拥有 Feature2,我需要在后端拥有 Tool2。要结合 Tool1 和 Tool2,我需要 Tool3 和 DesignPattern4……这就是复杂性增长的方式。好吧,现在我们还没有准备好只在后端切换到 node.js。
  • 你所有的模板都是客户端的,除了第一页,它是在服务器端呈现的。异步加载 Angular 库,并且在页面呈现之前不要初始化它们。主页的路由应该什么都不做,所以在用户导航/采取一些行动之前不会进行更新。我实际上并不了解 Angular,但我之前工作的一个团队正在为他们的一个应用程序做这件事。

标签: javascript frontend single-page-application typesafe-stack


【解决方案1】:

以下是适合您的选项: - 使用 node.js 中间服务器,它依赖于您为实际数据和内容选择的服务器技术。亲,您可以在完全转向之前慢慢测试它。 - 两次将所有模板逻辑编写两次,一次用于您的服务器,一次用于客户端。使用 node.js 可以让您重用前端的逻辑,但 Angular.js 并不完全对节点友好,因为它依赖于 DOM。

如果您确实想要尽可能好的首页加载体验,您应该看看我今天给出的这个答案: AngularJS SEO for static webpages (S3 CDN)

它可以让您在加载 Angular 应用程序时引导一个静态应用程序,该应用程序仅使用 CSS 进行样式和路由。希望对您有所帮助。

【讨论】:

  • 感谢您的回答。现在我实现了两次模板,分别是 scala 模板和 angular 模板。它导致双重数据下载(html + 然后 json,当路由开始时)并且页面在加载前闪烁。我刚刚发现 Twitter 中使用了 Mustache 和 Mustache.java。看起来不错,真的为什么有棱角?我正在努力寻找一些更轻量级和模块化的解决方案,可能不太依赖 dom。
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 2023-03-25
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2014-12-07
  • 1970-01-01
相关资源
最近更新 更多