【发布时间】: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