现代网络开发

在过去的几年中,网络技术经历了快速增长和重大变化。 我们从框架到表格布局,再到列布局,再到响应式布局。 从html4到xhtml和Flash到html5。 从重型服务器到富客户端。 从rpc到肥皂休息。 从sql到nosql和大数据。 从MVC到MVP等。 在以下文章中,我想从我的角度描述什么已成为最新技术。

后端是REST API

每个后端应被视为REST api,每个控制器应被视为另一资源。 您想分析问题领域,找到您的资源并为其设计适当的路径。 它们成为您的MVC架构中的M。 首先开发一个Web应用程序,然后再添加一个额外的REST api被认为是一种反模式。 如果您确实制作了REST api,那么您希望自己使用它,从而使前端成为第一个使用者。 此过程使您以后可以平滑地添加不同种类的客户端,例如移动应用程序或什至是桌面应用程序。 这也是将您的应用程序功能集成到其他应用程序中的基础。

分离您的前端

使用带有jstl表单验证的jsp构成表单的时代正在逐渐消失。 您不想再将客户端与服务器技术混合使用。 MVC的V和C已转移到客户端,您的后端仅代表模型。 您希望仅使用客户端技术(html / css / js)并使用REST api将前端完全分开。 GUI逻辑,构建和对齐适当的html元素可以在javascript中实现。 在后端和前端之间进行信息交换的最合适的内容类型是json或xml。

富客户端和冰雹JavaScript

如今,MVC模式是在客户端使用javascript及其同类框架实现的。 没有现成的功能完备的完整javascript框架,但是有很多较小的库可以解决原子任务。 这不应被认为是坏的或压倒性的,而是有利的。 它导致了各种各样的工具,这些工具专注于彻底解决单个问题。 Backbone是基于underscore构建的流行的mvc框架,这是一个js库,具有强大的实用程序和出色的功能编程功能。 可以添加诸如胡子把手之类的模板引擎, requirejs将管理模块内的依赖项。 当然,不能遗漏像jQuery这样的dom操纵器。 这种趋势正导致SPA (单页应用程序)使用大量的AJAJ / AJAX ,并通过表示可添加书签的视图状态的html #anchors进行路由。

为您的前端实施构建过程

随着浏览器不断提高javascript性能并为html5添加越来越多的支持,前端变得越来越复杂。 现在,您要为前端添加一个构建过程,以编译所有js和css文件。 您只想将一个缩小的js文件传送到浏览器。 除此之外,我们不再破坏DRY原理的写作风格。 我们使用更少的动态样式表语言来使样式更智能,更简洁,并在构建过程中将其编译为CSS。 Noderhino可能是构建前端的引擎候选者。 尽管节点要快得多,但它需要在构建服务器上轻松安装。 Rhino在jvm中运行,因此不需要安装。 您可以将其作为Maven依赖项添加到项目中。

移动网络与响应设计

在硬件方面,移动设备变得越来越强大,而对HTML5的支持也在移动浏览器中Swift增加。 HTML5可能有一天使本地移动应用程序过时。 本地存储,SQL,地理位置,多媒体,摄像头访问,Web套接字,图形,触摸事件,WebGL,文件系统访问,通知等等,所有这些功能有一天将完全可用于移动html5 Web应用程序,希望能在所有设备上正常工作。 到目前为止,我们一直在为android / ios / windows mobile等开发多个应用程序,这是一场经济噩梦。
移动客户端已经在Web消费中获得了可观的收益,因此不再被忽视。 因此,您希望使GUI 响应 ,从而能够缩小到较小的显示分辨率。 明智的公司甚至在考虑台式机分辨率之前就已经开始设计最小分辨率的用户界面。 这使扩展更加容易,因为反之则更困难,并且往往会导致痛苦的解决方法。 Bootstrap是许多可帮助您使GUI响应的库之一。 您可以使用initializr入门。

都不使用!

GWT / ZK正在尝试提供一个框架,该框架使仅使用Java开发现代的ajax Web应用程序成为可能。 因此,他们基本上是在为前端技术构建Java包装器。 除此之外,它们还提供了大量的组件。 但是……出于多种原因,我想质疑他们的哲学。

  • 它们都产生非常糟糕的html代码,使您陷入元素和dom-id噩梦的境地,这些噩梦变得很难甚至无法测试,调试和样式化。 HTML5允许编写简短,干净且可读的代码,更好地组织起来。 您想自己编写html。
  • 他们的AJAX调用不基于您需要的REST api。 如果要使用REST API,则可能必须再次编写。 RPC是GWT的主要通信技术,我对此确实感到担心。 但是,如果愿意,您仍然可以使REST api与GWT一起使用。
  • 它们使您远离实际生产的技术。 最终,微小的自定义设置可能变得很难甚至不可能。 您基本上是在放弃控制并限制您的可能性。 在许多情况下,这可能会导致死胡同,而死胡同是基于框架而不是技术。 GWT提供了JSNI,可帮助克服此问题。
  • 他们永远不会更新。 随着浏览器的发展日新月异,必须在Java包装程序中实现新功能,然后才能使用它们,这会延迟您的更新时间。
  • 我怀疑包装本机前端技术是否是个好主意,而且我看不出这样做的理由。 一个专业的GWT争论可能是:它正在生成优化的JS代码。

最后,它们使为以前的java.awt / swing开发人员构建Web应用程序变得更加容易,他们几乎不了解html / css / js。
他们现在肯定有自己的位置,并且在某些情况下不是一个坏选择。

参考:成为更好的开发者”博客上的JCG合作伙伴 Gregor Riegler提供的现代Web开发

翻译自: https://www.javacodegeeks.com/2013/07/modern-web-development.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值