【问题标题】:Why SPA (Single Page App)?为什么选择 SPA(单页应用程序)?
【发布时间】:2013-07-26 01:21:54
【问题描述】:

受到 Pluralsight 上 John Papa 视频的启发,我开始学习 SPA。看起来很有趣。不过,在我完全投入之前,我想澄清一些我的问题。

  1. 据我所知,SPA 是一个瘦服务器、胖客户端应用程序。我认为这应该适用于像 John Para 演示的小型应用程序。它可以扩展吗?它可以有多大?有人有这方面的经验吗?

  2. 在 SPA 中,您似乎使用 JavaScript 编写所有业务逻辑。这是个好主意吗?如何隐藏业务“秘密”?

由于我的背景主要是 C#/WPF/.NET,转向 JavaScript 似乎非常困难(嗯,我在 10 多年前学习了一点 JavaScript - 我讨厌它,再也没有接触过它)。由于我的知识有限,我遇到了几个问题。调试 JavaScript 对我来说似乎是一场噩梦。备受赞誉的组件 Breezejs 似乎仍处于早期阶段(例如,它不支持 UOW,不支持 CascadeDelete,不支持枚举)。所以,我想知道现在是加入的好时机吗?

【问题讨论】:

  • 另外你为什么说它不支持工作单元?我有几个完全支持它的例子。
  • 使用 1008 个 CPU 支持 1000 个客户端比使用 8 个 CPU 支持相同的人群效率要高得多...
  • @kadumel,你是怎么做到的?我观看了 John 的第一个视频,它使用了 UOW,但没有使用 Breeze。然后,在另一个视频中,他使用了 Breeze,但没有使用 UOW。我用谷歌搜索并找到了这个页面stackoverflow.com/questions/15113804/…
  • 只需将元数据暴露给控制器。通过工作单元路由所有呼叫。保存对 uow 的更改。都是一样的。
  • 我会试试...谢谢。

标签: javascript breeze asp.net-web-api


【解决方案1】:

直接回答你的问题:

  1. 由于服务器逻辑很薄,您可以使用某种云服务,它们的扩展性非常好。大部分逻辑将由用户的浏览器处理。
  2. 如果你依赖于客户,你应该小心。 HTTP 协议很容易被操纵。不要忘记您应该始终在客户端和服务器端执行验证逻辑!此外,“隐藏”验证和其他“秘密”逻辑应仅位于服务器上。

调试 JavaScript 并没有那么糟糕。您可以使用内置工具(Chrome 中的 Inspect element 和 Firefox 中的 FireBug 等)。还有很多有用的第三方工具可以帮助您进行调试。

如果您开始一个新项目只是为了自己使用,那么我建议您尝试 SPA 方法。如果您正在编写生产代码,您应该成为该领域的专家,然后尝试使用这些技术。

【讨论】:

    【解决方案2】:

    关于 UoW,请查看 TempHire 示例。它演示了在客户端和服务器上使用 UoW 模式。

    https://github.com/IdeaBlade/Breeze/tree/master/Samples/TempHire

    【讨论】:

      【解决方案3】:

      我已经研究了几个月。我的结论是为您的 url 使用带有 light path.js 或 sammy.js 的 Knockout。我使用带有标准 Visual Studio MVC(可以返回 Json)的 json 作为后端。 我还没有完成这个项目,但到目前为止一切都很好。它闪电般快速、优雅且轻巧。 远离框架。看看标准库:它们是如何编写的;你可以通过这种方式学习很多 JavaScript。最后使用 chrome 或 explorer 开发者工具进行调试。 祝你好运

      【讨论】:

        【解决方案4】:

        我相信 SPA 为业务密集型应用程序以及更简单的应用程序工作流程(例如 Facebook 的工作流程)提供了更好的框架。我曾使用多页应用程序来处理具有复杂工作流程的银行应用程序,处理所有事情并保持应用程序性能令人生畏。

        但我确实认为 Knockout Alone 无法处理大型应用程序,因为它本质上是连接的。我会推荐像 Backbone Marionte 或 Angular 这样的项目。

        我正在为开源社区构建大规模 SPA 开发框架,因此我相信这是正确的方向。

        有兴趣的可以去我的demo page http:\saqibshakil.github.io 我已经在那里展示了我的一些工作。

        【讨论】:

          猜你喜欢
          • 2015-06-02
          • 2013-07-31
          • 2021-04-12
          • 1970-01-01
          • 2012-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-22
          相关资源
          最近更新 更多