异步选择模型能用在客户端吗,如果可以的话,他可以绑定在多个窗口上吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步选择模型能用在客户端吗,如果可以的话,他可以绑定在多个窗口上吗相关的知识,希望对你有一定的参考价值。

参考技术A 拥护啥啊还有我哥五组

不使用客户端 Javascript 的动态异步表单和网页可能吗?

【中文标题】不使用客户端 Javascript 的动态异步表单和网页可能吗?【英文标题】:Dynamic asynchronous forms and web pages without using client-side Javascript possible? 【发布时间】:2013-08-20 04:16:27 【问题描述】:

我正在尝试找出是否可以在不使用任何形式的客户端编程或脚本的情况下开发动态异步表单和网页。所以基本上我试图在不使用 Javascript 的情况下获得 AJAX 和 DOM 操作的好处。如果可能的话,我希望所有的编程都用 Python 或类似的语言在服务器端完成。我正在努力规避在 Web 开发中使用 Javascript。我只是不想进入它或用棍子远程触摸它。

我遇到了 AHAH(异步 HTML 和 HTTP),它看起来很有趣。但是,我读到的 (X)HTML 检索到“不能在您的文件系统的本地”。显然,“您必须将您的 HTML 文档通过 FTP 上传到网站上。并且您获取的 HTML 文档也必须驻留在网站上。” (来源:http://www.xfront.com/microformats/AHAH.html)有人试过这个并且可以确认吗?我觉得这不太实用。将所有内容托管在同一服务器上的同一文件系统中会更有意义。

AHAH 的另一个缺点是它似乎无法操作 DOM,这意味着它在某种程度上受限于它可以做的事情。您的占位符必须已经存在于您的网页中,然后您可以检索 (X)HTML 片段来填充这些占位符。

有谁知道一些方法可以在不使用 Javascript 的情况下创建动态异步网页并操作 DOM?我对任何服务器端的东西都很好,因为我几乎可以使用任何我想要的语言。最坏的情况我想我可以有一个很好的交互式网站而不必操作 DOM,但我认为现代网站必须是异步的。对我来说,这有点破坏交易,每次细微更改都必须重新加载页面。

【问题讨论】:

你到底不喜欢 JS 的哪一点? 【参考方案1】:

这不是你想听到的,只是学习 JavaScript。无论您使用哪种服务器端语言,对于任何 Web 开发人员来说,这都是一项很棒的技能。我从来没有听说过任何其他形式的客户端脚本,除了 VBScript,但我认为它不再被使用并且只在 IE 中受支持。请参阅VBScript Wikipedia article for more details。

我还会将 Flash 添加到此列表中。如果您使用 Flash、Flex 或任何使用 Adob​​e 的 flash 平台构建网站,您可以使用 ActionScript 而不是 JavaScript,但这并不是我个人认为的现代网站,这会带来一系列问题,例如要求所有网站访问者安装插件。

现在,即使在没有 JavaScript 的情况下在浏览器中处理客户端脚本时有一些晦涩难懂的方法,请考虑它不会得到相同的社区支持。 JavaScript 最酷的地方在于,有很多 Web 开发人员精通它。无论您的服务器端语言是 C#、PHP、Python、Perl、Ruby、Java 还是服务器端 JavaScript,您仍然必须了解一些 JavaScript 才能称自己为 Web 开发人员。

考虑到所有这些人都编写了强大的工具来帮助其他人更轻松地进行开发,因此我们都不会一遍又一遍地编写和重写相同的代码。例如,jQuery、AngularJS 和 Bootstrap 都是在存在使用相同工具的大型开发人员社区时每个人都可以从中受益的例子。去使用一些没有人听说过的语言,你会发现自己一个人,只有蟋蟀打破沉默,如果你被卡住,没有人可以反弹。希望这会有所帮助!

【讨论】:

我听说你的论点相信我。我同意它被广泛使用并且有很多支持。我对 Javascript 的唯一不满是我不喜欢这种语言本身。与像 Cobra (cobra-language.com) 这样的语言相比,我觉得它丑陋且“过时”,即使它是一种非常年轻的语言。 通过“使用”Javascript,我为它“投票”,我自己也成为问题的一部分。通过使用 Javascript,我帮助它进一步传播,并使其成为无可替代的权威标准。浏览器不会尝试支持未被广泛使用的语言,新开发者(如我)不能选择使用更新/更好的语言,因为它们不受浏览器支持。这是一个恶性循环。 没有更新、更好的客户端脚本语言。 JavaScript 是这里的权威标准。如果 NodeJS 在 Google App Engine 上工作,我也会在那里完全使用 JavaScript。对不起,你有这种感觉。 JavaScript 是一种非常强大的语言,我认为它之所以受到如此糟糕的评价,是因为有些人滥用了它赋予你的力量,给我们留下了一团糟需要清理的东西。如果您正确使用它并坚持良好的做法,它不会让您失望。希望这可以帮助! :)【参考方案2】:

“本地文件系统”可能意味着无法从客户端文件系统获取 HTML,这当然是正确的。剩下的部分就有意义了,所有内容都必须从服务器下载。

通过仅对服务器端进行编码并通过网络发送网页的更新片段来创建动态客户端应用程序可能听起来很诱人。

在实践中,限制太多了,你可以用一点客户端脚本来做,但你不能,因为你的范式是所有东西都必须在服务器端创建。

事实上,Javascript 并没有看起来那么糟糕。有了一本好的手册和已建立的库(至少是 jquery),您会发现它只是您工具箱中的一个新工具。

【讨论】:

确实,如果它是指“客户端文件系统”会更有意义。另外,我确实明白,如果我只使用 Javascript,那么只有服务器端编程而没有客户端脚本会使事情变得更加复杂。但是,我不能让自己推广一种我希望看到消失的语言,或者至少有一个可行的替代方案。我研究了 Coffeescript,因为有一些语法糖和生产力改进,但是谁使用“->”来声明一个函数。它是如此丑陋,不直观且不切实际。我宁愿输入“函数”,然后输入“Alt+”。得到“>”。 “消失的语言”那部分感觉就像6个月前的我。但后来我读过“javascript the权威指南”,学习了一些框架,我不确定是否会像以前那样消失。【参考方案3】:

唯一的其他选择是:

客户端 XSLT

服务器端 XSLT

服务器端表单序列化为 XML

CSS 绑定(Sibling 或 Target)

POST 到 iframes 以避免 JavaScript XMLHTTPRequest API

通过 XSLT 在服务器端进行 XSLT 转换以将 XML 序列化转换为匹配 XML API

通过cookies、a custom mailto protocol handler 或registering a browser application to handle the mailto URI scheme 进行可选的服务器端通信

必须以三种不同的方式处理驻留在服务器上的静态 XML 文件:

如果 XML 文件包含 <?xml-stylesheet ?> 指令,则可以直接将其发送到支持 XSLT 的浏览器。

如果需要将所需的 XSLT 样式表插入 XML 数据,则必须由服务器端脚本读取和处理该文件,然后将其作为 XML 数据流发送到支持 XSLT 的浏览器。

对于所有其他客户端(包括搜索引擎),XSLT 转换在服务器上执行。

由于不同的客户端要求,不能直接提供静态 XML 文件,而是必须由接受文件名和 XSLT 样式表作为输入参数的服务器端脚本处理。因此,下载静态 XML 文件的 URL 类似于:

sendXML.asp?file=filename&xsl=stylesheet

在 XSLT 样式表中包含 <iframe> 标记以触发对服务器的请求。对第二个请求的响应将设置一个 XML cookie

如果设置了 cookie,则输出 XML 文档,如果 cookie 不存在,则输出转换后的 HTML 标记

使用此解决方案,将为没有支持 XSLT 的浏览器的访问者以及搜索引擎蜘蛛执行服务器端 XML 到 HTML 的转换。本文介绍的框架中使用带有自动浏览器检查功能的 cookie 集来识别支持 ​​XSLT 的浏览器;所有其他访问者都会收到服务器上生成的传统 HTML 标记

参考文献

Is XRX the only full stack web application "framework" that's totally W3C?

IE6: How to get inline base64 images to work with IE6?

RESTful API and a Web Site in the Same URL

Optimized Presentation of XML content

Use XML and XSL with web pages

【讨论】:

以上是关于异步选择模型能用在客户端吗,如果可以的话,他可以绑定在多个窗口上吗的主要内容,如果未能解决你的问题,请参考以下文章

dbugx5能用在苹果吗

EL表达式能用在html页面吗?

番茄助手可以用在vs2017吗

UDP套接字可以用异步选择选择模型吗

outlook express到底是啥东西啊?百度百科里面的东西我看不懂。谁能用举例的方式解释一下,谢谢

hiredis 能用在3.0版本 redis集群吗