我想在不直接使用 JavaScript 的情况下制作“Web 2.0”应用程序

Posted

技术标签:

【中文标题】我想在不直接使用 JavaScript 的情况下制作“Web 2.0”应用程序【英文标题】:I want to make a "Web 2.0" application without using JavaScript directly 【发布时间】:2010-12-06 02:17:14 【问题描述】:

我是一名大约 4 年的专业 Java 开发人员。我是 GWT 的***分子。我爱Java。这就是问题所在:在我的空闲时间,我经常成为我最喜欢的用于“重”开发的工具的冗长的牺牲品。我也经常陷入痴迷地设计我的软件的陷阱。我将得到最漂亮的未完成实现,永远。

所以,这是我通常使用的。

GWT - 我将它用于动态 UI 和 Web 布局。我喜欢重用的易用性,它教会了我绝对讨厌 javascript。我真的不能再让自己做太多 html/JS 了。

Hibernate - POJO 到数据库,简单易行。除了映射之外,我真正需要的是它允许我拥有一个跨多个数据库工作的应用程序。

Spring - 主要是安全性。我已经为一个项目编写了自己的自定义 LDAP 位。

XML - 我使用过 dom4j 和其他实现,包括 xstreamer。我想使用 JiBX 进行 XML 传输。这样做的问题是我需要符合特定标准而不是自动生成的 XML 消息。 Object->XML->Object 也很常见,以至于它可能成为大型消息 (250KB+) 的性能瓶颈。

我尝试了 Lombok 一段时间并喜欢它,但偶尔会遇到问题,然后我炸毁了一个分区并丢失了所有工作。我真的不想再做同样的事情了(一半的乐趣在于学习如何做,现在我知道了……嗯)。这告诉了我为什么其他人想要减少显式代码并用隐式系统替换它。

我一直在研究 Grails,但这让我很快陷入了 JavaScript 问题(你知道,我不喜欢它)。我可以在后端使用 GWT 和 Grails,但我又回到了使用 GWT 深入杂草的问题。我还想到,可能有一种方法可以在 GSP 中使用由 GWT 小部件组成的 Grails 标签。我不确定我对此有何感受。

我在使用 Grails 时遇到的另一个问题是,表单提交之前 的验证逻辑与提交之后 的验证约束是分开的。我不知道如何统一它们(还)以产生“漂亮”的前端验证。我特意为 GWT 创建了一个 JSR-303 compliant validation project,以帮助解决 GWT 的一些问题,并且非常喜欢结果。它还没有完成,但我仍然觉得它很有用。

所以,帮我找到更好的方法!

TL;DR - 我想要一个数据库(和独立于数据库)到 GUI 的解决方案,它允许使用一种语言进行动态 Web 编程。如果做不到这一点,则尽可能接近一种语言。

TL;DR 就是 TL;DR - 我现在讨厌 JavaScript,求助。

编辑:我知道没有 JavaScript 进行“Web 2.0”开发在技术上是不可能的。我只是想不想成为那个必须写它的人。 (例如,让 GWT 等工具从我喜欢的语言中为我做这件事。)

【问题讨论】:

我不太确定这里的问题是什么 - 或者您是否正在寻求确认 GWT 是最佳选择? ..因为它是 - 同样在这里,我是 GWT 的忠实粉丝,我不敢相信有人会想用 JS 编写一个复杂的 web 应用程序(jQuery/mootools/包括什么) . GWT 让重用代码、应用设计模式、使用代码指标、单元测试等变得更加容易。 【参考方案1】:

只要学习 JavaScript。

抵抗是徒劳的 ...你会被同化。

PD:我是 JavaScript 的前敌人。现在它是我最喜欢的语言了。

【讨论】:

这里的另一个前 JavaScript 敌人。问题是那里有很多非常糟糕的 JS,尤其是在那些实际上并不了解 JS 的人的“初学者”教程中。更不用说现在你有像 jQuery 这样的 JS 库来为你解决跨浏览器的兼容性问题。 我对 JavaScript 的了解足以完成我在 GWT 中可以做的大部分事情,而不会为此哭泣太多。我的问题是我不擅长创建可重用的元素和编写好的、干净的 JavaScript。我宁愿有一个工具(GWT),用我感觉很好的语言为我做这件事。我不想删掉 JavaScript(不能)我只是不想成为使用它的人。 “永远不要停止学习;知识每十四个月翻一番。”安东尼·J·德安杰洛。除此之外,使用 jQuery 之类的框架时,javascript 很容易学习。只是:评论,评论,评论。 我真的不想将此标记为答案,因为我可能会弄清楚如何以某种方式集成 grails/gwt。但这似乎是线程的主题。 我写这个问题已经有好几年了,从那以后我发现了使用 Bootstrap、JQuery、Angular 和其他一些使 JavaScript 更容易组织和构建项目的工具的乐趣。跨度> 【参考方案2】:

您当然可以在不使用 GWT(我们有)编写 Javascript 的情况下开发整个 Web 2.0 项目,但归根结底,您仍然需要了解 HTML/CSS 和 Javascript。

这听起来可能是一个愚蠢的说法,但它并不是你认为 GWT 不是一个完美的抽象,也不是它的设计目标。它不是用 Java 编写的,因此您不必再次使用 Javascript 编写代码,而是他们这样做是因为 Java 具有更好的 IDE,是静态类型的,并且使维护变得非常容易。

所以是的,一定要使用 GWT(并查看新的 OOPHM,因为它很棒),但不要忘记,如果你想开发,你总是需要了解 Web 的底层框架用于网络。

【讨论】:

我也使用 GWT 将代码投入生产。我希望通过这种方法减少我所拥有的极端 LOC。它做了很多非常棒的事情,在 JavaScript 中做起来会很痛苦,但归根结底,它似乎需要大量阅读。【参考方案3】:

你听说过Echo吗?

它不提供问题的数据库部分,但它适用于您可以很好地使用的任何数据库。

Echo 是一个构建平台 接近的基于网络的应用程序 富客户的能力。这 应用程序是使用开发的 面向组件和事件驱动 API,免去处理 浏览器的“基于页面”的性质。 对于开发者来说,Echo 的工作方式就像 一个用户界面工具包。

最新版本 Echo3 的功能 编写应用程序的能力 服务器端 Java 或客户端 JavaScript。服务器端应用程序 在任何 Java Servlet 容器中运行,并且 要求开发人员了解 HTML、HTTP 或 JavaScript。

【讨论】:

不错的链接。我以前从未见过这个,它看起来真的很酷。【参考方案4】:

您可能想看看一些支持 AJAX 的 JSF 库。 IceFaces 和 RichFaces 都是实心的。

【讨论】:

【参考方案5】:

去过那里,做到了。我做了 3 年的 GWT 开发人员......我在 v1.1 中开始使用它! GWT 很棒,非常适合小型应用程序。但是,一旦您的应用程序大小适中,即使您将应用程序划分为子模块,开发也会陷入困境。

UI 框架具有如此有限的 UI 创建工具也很讽刺。 :)

就我个人而言,我硬着头皮学习了 javascript。它没有我想象的那么糟糕。尤其是jQuery。 :)

显然没有完美的框架。但是,GWT 已经问世 3.5 年了,而且它在 Java 世界中仍然被广泛忽视的事实应该告诉你一些事情。由于您是在空闲时间做这件事的,我建议您学习最流行的框架:Struts。你会看到它的局限性,以及它如此受欢迎的原因。当然,你需要 jQuery 来实现 2.0 的功能。 :)

【讨论】:

我建议您随时尝试 Stripes over Struts。一旦您使用过 Stripes,您就会发现,睁大眼睛比使用 Struts 更有趣。我也不同意 GWT 已被忽略,2.0 和 OOPHM(现在 Google Wave 已经写在其中了)它正在上升 :) 我使用 GWT 的时间也差不多。我想我在 1.2 或 1.3 左右开始将它用于项目。我还将 1.6 和 1.7 用于生产代码。正如我在这个页面的其他地方所说的,我喜欢它,我只是不想读那么多。我非常同意需要有人为 GWT 提供一些真正的 UI 创建工具。【参考方案6】:

看看JRapid,一个面向Java开发者的快速开发平台。它无需编码即可生成非常强大的支持 Ajax 的 UI。

【讨论】:

【参考方案7】:

不确定您是否愿意,但您听说过Haxe 吗? 您可能不喜欢它,但它的 AIO(多合一)解决方案(有点)。

【讨论】:

【参考方案8】:

我能理解你对 JavaScript 的不喜欢,它当然有它的问题,但我认为你现在的战斗天性。

Web 2.0 强烈基于 JavaScript 是有充分理由的,因为它提供了在客户端计算机上执行任务而无需加载页面的能力。

我相信还有其他选择,但如果您想要 Web 2.0 的外观和感觉,那么您最终会做更多的工作而收获很少。 JavaScript 是该工作公认的实用工具。

【讨论】:

【参考方案9】:

我会说坚持 GWT,多喝点 Koolaid。这是一个非常棒的开发模式,没有尝试过的人似乎会迷失方向。

如果您想改善您的 GWT 体验,请跳到最前沿(我在树干上工作,它非常稳定)并使用其他由 Google 发起的项目,例如 GIN、gwt-incubator 和 Guice。尤其是观看 Ray Ryan 的 GWT 最佳实践 Google I/O 演讲:http://www.youtube.com/watch?v=PDuhR18-EdM

至于“框架”部分:忘记他们。只需使用普通的 servlet,让 GWT 为您处理 RPC。当您必须处理 JSP 并且您是自己的 AJAX 调用时,Servlet 会很痛苦,但是当它们只实现异步应用程序逻辑时,它一点也不坏。 Guice Servlet 让这一切变得非常简单。如果需要,您仍然可以使用 JVM 托管语言来编写 servlet。

GWT 与其他 JavaScript 框架相比具有令人难以置信的优势,因为它提供的抽象层允许未来的重大进步,而无需对代码进行任何更改。如果 GWT 编译器和浏览器检测脚本可以利用新的浏览器功能,那么您可以从简单的重新编译中受益。

我在您对 XML 的要求中看到的最大烦恼...希望这只是为了与 3rd 方服务集成,并且您的客户端-服务器通信可以只是 GWT-RPC。

【讨论】:

【参考方案10】:

我不使用 javascript 或 ajax,在中型应用程序中它们会产生很多兼容性问题,因为在客户端内部移动部分代码会造成安全漏洞和不同浏览器的问题。

我只使用 HTML(5) 和 CSS2/CSS3,并且取得了很多成功。

我使用这两种方式:

使用“拼图技术”。写很多小而简单的模板(或图块)来创建大页面。我只使用了 JSTL 和 Spring 标签,Rich/Prime/Ice-faces 我在渲染、页面构建和流控制器方面遇到了很多问题,所以我放弃了它们。

使用我的自定义库来解析 HTML 页面。我使用自定义语法创建模板,放入解析器并写入输出流。这是最好的方法。

如果你告诉我你的首选语言和上下文,我可以帮助你执行 JS-free。

【讨论】:

以上是关于我想在不直接使用 JavaScript 的情况下制作“Web 2.0”应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我想在不使用 For Loop 的情况下获得特定的关键值 [关闭]

我想在不安装 Visual Studio 19 的情况下安装 dlib

我想在不使用 slug 的情况下使 PHP seo 的博客 URL 变得友好

jquery 或 javascript 中有没有一种方法可以在不使用 ajax 请求的情况下在页面加载时填充下拉列表?

ubuntu不联网就不能换语言吗。虚拟机上安装了ubuntu,是英语版的,我想在不联网的情况下把它换成汉化的

如何在不重新加载整个页面的情况下刷新 div?