从核心框架过渡

问题描述 投票:-3回答:2

祝大家新年快乐。

我是一个依赖于Apache Wicket的项目的新手,如今,该项目并不以拥有庞大的用户群而闻名。实际上,这使我们很难找到新的人,并且我们最终希望过渡到新的框架。不幸的是,代码库太大了,无法“简单地”重写整个该死的东西。

我想问的是以下内容:有没有人有可行的策略从Wicket这样的框架过渡到更“现代”的REST-Interface + JS-Webframework方法?我认为应该有可能使用Wicket必须为自己的前端公开的现有API,以用于以后我们要选择的所有js框架来创建整个前端。

有什么想法吗?

javascript rest architecture frameworks wicket
2个回答
0
投票

您必须重写它。

我首先将所有业务逻辑从UI逻辑中重写/分离出来,然后将其转换为REST服务。

然后重写所有模型以从REST获取数据。

然后在您喜欢的JS框架中重写UI。您也可以让Wicket提供JS服务,因此您的过渡可以是迭代的。


0
投票

[我已经将一些Javascript纯组件与Wicket集成了-您需要弄清楚的主要事情是如何使它们说话-在Wicket中,您可以使用安装在应用程序中的RestResource来服务器JSON内容。

例如:

class LayoutToolRestResource() : AbstractRestResource<JacksonWebSerializer>(JacksonWebSerializer()) {
  @SpringBean
  internal lateinit var layoutObjectTreeSupplier: LayoutObjectTreeSupplier

  /**
   * Reads the tree nodes from the given data source.
   * Example: http://localhost:8080/layout-api/tree-nodes?dataSourceName=admuser1625
   */
  @MethodMapping("/tree-nodes")
  fun objectTreeNodes(@RequestParam(value = "dataSourceName") dataSourceName: String?): List<TreeNode> {
    requireNotNull(dataSourceName) { "You must select a source data-source" }
    return layoutObjectTreeSupplier.buildTreeNodeList(dataSourceName)
  }
}

这是Kotlin代码。该库是Wicket Stuff-https://wicketstuff.org/

您在应用程序中安装了该资源:

    mountResource(
        "/layout-api",
        new ResourceReference( "layout-api" )
        {
            @Override
            public IResource getResource()
            {
                return LoaderWebApplication.this.layoutApiResource;
            }
        }
    );

在Javascript应用程序中,您参考资源以获取所需的JSON数据:

function getData(dataSourceName) {
  var contextPathField = document.getElementsByName('contextPath')[0];
  var url = contextPathField.textContent + "/layout-api/tree-nodes?dataSourceName=" + dataSourceName;
  wijmo.httpRequest(url, {
      success: function (xhr) {
        var data = JSON.parse(xhr.responseText);
        wijmoTree.itemsSource = data;
      },
      error: function (xhr) {
        // do something here
        var errorData = JSON.parse(xhr.responseText);
        alert(errorData.errorMessage);
      }
    }
  );
}

通过这种方式,您可以将与JSON数据一起使用的应用程序(大多数Web框架都可以)与Wicket集成。您可以拥有使用这种方法的页面和使用“经典”方法的页面,或者在页面中使用更现代的组件来像这样检索数据。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.