JavaScript是否可以替代编写客户端Web应用程序代码的方法?

如何解决JavaScript是否可以替代编写客户端Web应用程序代码的方法?

| 我想在没有javascript的情况下对xhtml Web应用程序进行编程。 创建交互式xhtml Web应用程序有哪些选择? 也许Java小程序可以执行javascript的任务? 还是有另一种方法? 谢谢你的帮助! Javascript难以调试,动态输入,奇怪的OOP,当该语言在浏览器中被使用时,可以用任何其他语言代替。 我还希望代码中具有某种类型安全性,以便在运行代码之前可以发现许多错误。 -编辑2-- 看看http://www.scala-js.org/。 - -编辑 - - 因此,到目前为止,没有比javascript更灵活,广泛和适用的真正替代方法。 我认为适用的是将一种语言编译为另一种语言(例如GWT或coffescript)的框架/工具。 感谢您的详细答案。我提出这个问题的原因是,Web开发每天都在变得越来越复杂。为了稳定的错误概述和类型安全性,我更喜欢Java之类的语言。另一方面,JavaScript(以我的观点)在其方式上是神秘的,并且难以调试(浏览器不兼容,静默错误,不直观的操作数,动态类型等)。我使用JS开发网站已有多年,由于此类调试问题和代码管理,这让我感到非常恐怖。但是这些库功能强大,可以简化许多工作。     

解决方法

要拥有一个交互式站点,您需要可以在客户端计算机上执行代码的内容。 (目前)通常是JavaScript。在过去,这还包括Flash或Silverlight(两者现在都在减少)。 JavaScript具有很大的优势,因为它可以轻松地直接直接操作HTML元素。尽管使用Silverlight可以做到这一点,但它并不像Silverlight主要用于构建自包含对象那样容易。     ,Google Web Toolkit GWT可让您编写Java代码,并将其编译为客户端xhtml + javascript。它放弃了基于页面的标准Web方法,实现了更加类似于桌面的交互(如果我没记错的话,API有点类似于许多桌面窗口工具箱)。 您可能(但不必)也开发(java)服务器逻辑,并且编译器为您提供了一些客户端-服务器通信。 看看http://code.google.com/intl/it-IT/webtoolkit/     ,一些JavaScript替代方法: 闪 银光 Java小程序 这不是建议,只是列表。 如果您真的对JavaScript过敏,可以使用许多框架来编写服务器端代码,这些代码可以为您生成JS,如其他答案所述。     ,查看Google Dart-它最近达到了1.0,并在几天前开始了标准化过程(ECMA TC52)。它还通过高度优化的dart2js转换器与当前可用的浏览器兼容,因此您可以立即开始使用它:)。比JavaScript,IMO更为明智的语言。 更多信息可以在以下官方页面上找到更多信息:https://www.dartlang.org/(工具,文档,示例代码,教程),YouTube上也有不错的入门视频:http://www.youtube .com / watch?v = FqsU3TbUw_s。     ,除了小程序外,您还可以使用Adobe Flash,Microsoft Silverlight和Chrome NACL。但是,这些都没有像JavaScript那样无缝地与HTML DOM交互。     ,您可以做的一件事就是简单地让服务器端代码完成所有处理。您将自己限制为仅可用于交互的CSS,但是仍然可以通过加载新页面来完成几乎所有事情。     ,如果您正在考虑使用Java applet,那么我想有必要提及Flash和Silverlight(*)。 当然,有些不使用javascript的“交互式” Web应用程序……它们使用回发。但是我不认为这是您的意思。 如果只想针对Internet Explorer,则可以使用VBScript(Microsoft专有的javascript),甚至可以使用ActiveX。但是我也怀疑那是您的意思。 因此,您有责任回答-为什么不使用javascript? (*) 我猜。     ,我很想知道您不想使用Javascript的原因是什么?该问题的答案将对如何回答您的问题产生重大影响。 Javascript语言实际上非常强大。是的,它确实有一些怪癖,但其他所有语言也都有。浏览器中许多有关Java语言开发的“问题”实际上是人们对DOM而不是Java本身有问题。另一方面,DOM是很多缺点和跨浏览器问题的地方。 如果这是您的问题所在,那么使用JQuery之类的Javascript库可能会更好,该库抽象了许多对DOM的直接访问,并解决了许多跨浏览器的问题。 如果您使用的是最新的浏览器,那么现在可以使用CSS来完成许多以前需要Javascript的简单效果。下拉菜单,标签集,淡入淡出,旋转和过渡效果。所有这些都可以通过CSS完成。但是,其中大多数都是相当新的,并且并非在当前所有常用的浏览器中都可用,因此暂时最好不要使用Javascript。即使它们已准备好主流使用,您仍然需要一些Javascript才能将它们挂在一起。 如果您确实非常渴望使用Java语言以外的其他语言进行开发,那么正如您已经指出的那样,还有其他用于Web编程的选项,例如Java applet。还有ActiveX控件,Flash和Silverlight,以及其他一些控件。但是,它们都不像Javascript那样对所有用户通用。 它们全部都需要一种或另一种浏览器插件,并且它们对于不想安装它们的用户或不允许安装它们的公司环境都有问题。对于ActiveX之类的技术,它们可能仅在某些浏览器和操作系统上可用,并且(再次类似于ActiveX)它们经常存在安全问题。 首先,存在其他大多数技术的唯一真实原因是填补了当时浏览器功能的空白。所有这些功能问题现已解决-HTML5和由Javascript,Flash和Silverlight驱动的相关技术已过时; ActiveX控件在很久以前就被认为已经过时了。您是什么时候最后一次看到主流使用Java小程序? 最重要的是,浏览器世界正迅速地远离除Javascript之外的任何客户端代码,这是有充分的理由的。     ,使用睡衣(google it),您可以编写普通的python代码并将其编译为javascript,以便充分利用python的强大功能和表现力以及javascript的普遍性。 还请注意Adobe的Falcon项目,它是一个实验性的编译器,可将actionscript 3(与普通javascript相比功能非常强大的语言)和flex框架转换为javascript。 您还可以尝试Google的GWT,其中Java被用作客户端的构建代码(是的,它也被编译为本地javascript)。     ,如果它在客户端计算机上运行并且可以修改DOM,则它可以工作。 JavaScript受最广泛的支持,因此对于许多人来说,它都是开箱即用的。 基本上,任何功能如JavaScript都可以代替它。 Flash基本上可以执行JavaScript可以执行的所有操作(在图形上,但是它不能修改DOM),但是如果用户未安装Flash Player,那么您就不走运了。 Java也可以工作,但是相同的概念也适用:如果用户没有JRE(或类似机器) Silverlight与Flash类似,但受的支持却少得多(我几乎无法在Linux机器上使用它) 只是好奇:您为什么要用其他东西代替JavaScript?     ,这看起来似乎很疯狂,但是我实际上喜欢使用jQuery比使用JavaScript更好。它使事件处理和Ajax非常简单。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res