【问题标题】:What is in a library - interface backend (java) /frontend (js knockout)库中有什么 - 接口后端(java)/前端(js 淘汰赛)
【发布时间】:2013-12-22 18:54:21
【问题描述】:

我正在创建一个网络应用程序。很快到应用程序:Restful,后端是用 Java 编写的,我使用 Wink。至于前端我想用knockout.js,我已经在网上做了一些教程来熟悉一下这个框架。

我已经玩了一下,并为添加-删除-搜索功能创建了 ajax 调用,并通过 knockout.js 在一个简单的 html 页面上显示检索到的记录。 我收到了先创建库/命名空间的建议,然后再开始前端的任何其他内容。所以我决定退后一步,尝试创建这样的库。

是的,我在互联网上阅读了大量文档(闭包、命名空间、javascript、一般的库,...),但不知何故,我仍然没有进一步了解该库。

问题:

  • 主要问题是:如果是接口后端/前端,该库中应该包含什么?
  • 我正计划创建一个闭包(针对私人成员)。那个闭包会是命名空间吗(我对“命名空间”主题不太了解)?
  • 这样的库中究竟应该有什么?
    • ajax 调用
    • 所有 ajax 调用和所有辅助方法
    • knockout-js 的视图模型
    • 显示字典的模板? (或者这是另一个文件..)

我对图书馆的理解: 一个 Lib 只是一个 js 文件,其中包括属于一起的变量和函数(封装)。一个库使代码可重用。 在库中使用命名空间很好,可以避免与其他库发生冲突,使用闭包很好,能够“创建”私有和公共变量和函数。 我在上面的任何假设都错了吗?

【问题讨论】:

  • 您可能想看看Swagger,它是为 RESTful 资源发布类似 WSDL 的元数据的规范。您可以使用amdatu 之类的东西作为服务器端部分;它包括 Wink 并将生成 Swagger 元数据。如果需要,您应该能够使用该元数据为您的 Knockout 视图模型生成存根。然后您可以使用 JavaScript Swagger UI,将其指向元数据,它会为所有 ajax 调用生成函数(因此您的库中不需要这些函数)。
  • 如果你走那条路,图书馆里就没有很多东西了;您将主要拥有难以重复使用的特定于 UI 的内容来编写,因此尝试将其抽象到库中没有多大意义。
  • 现在(这个项目)我更想学习如何用javascript来做。所以该项目的实际任务是学习:“完成一个用 js/knockout 编写的库”。当然,我也想完成项目——但在前端使用 js。仍然感谢您对 Swagger 的提示,我想我稍后会尝试一下。

标签: javascript web-applications knockout.js interface namespaces


【解决方案1】:

当我在 .NET 中工作时,我无法具体评论 Java 技术的选择,但我使用了与您类似的方法,即创建您的淘汰视图模型将使用的 REST API。这个 API 非常可重用。

Knockout 将专门帮助您创建 UI,与其他 MVVM 模式一样,使用可观察属性和数组可以节省大量编写将代码连接到 UI 的“胶水”逻辑的痛苦。大部分代码将在您的 viewModel 中,其中将包含验证、业务逻辑和应用程序状态。您的视图将是 HTML 来显示这些数据。

因此,几乎不需要进一步的抽象来重复使用。

随着您的进步,您会发现 Knokcout 是相当可扩展的,您将能够编写许多可在其他项目中重用的自定义绑定,但不太可能需要进一步的抽象。

【讨论】:

  • 我是否理解正确:您认为,我应该使用敲除功能编写js文件,然后这是接口?所以为了让它更好一点,只要把一个闭包放进去,那就是库?
  • 大部分 js 文件很可能是 viewModel。这将包含使 Html 视图工作的逻辑。命名空间这对于避免全局命名空间中的冲突是明智的。如果你发现自己需要说做一些微积分,那么把它写成一个单独的库是有意义的。如果您需要自定义绑定,例如提示应该响应回车键这是一个淘汰赛自定义绑定。您的 viewModel 包含视图的数据和状态,因此通常不可重复使用。
  • 那么,您的意思是,viewModel 太具体而无法包含在此类库中?这就是我的想法。我仍在试图弄清楚,这样的图书馆应该有什么。我有三种类型的 ajax 调用:删除、添加、搜索单词。只有那些,也许是存储单词的数组应该在这样的库中吗?假设我会使用模块模式来做到这一点,然后我会将 viewModel 的代码添加到它下面的同一个 js 文件中?
  • 不需要在同一个文件中?具体的建议有点难。也许您想要一个库来包装对您的 ReST API 的调用?所以你有常见的错误记录等。
  • 你好。是的,我认为这应该是目的。后端的 API,也就是 REST API。那么功能,添加-删除-搜索,包括错误记录?这就是它吗?怎么样,如果我也处理 ajax-calls 中的 knockout-js。那么这是不是一个太糟糕的设计,然后我不得不改变它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 2013-08-14
  • 1970-01-01
  • 2015-02-28
相关资源
最近更新 更多