我一直在搜索 HTML5 应用程序的一些细节,但发现很难,或者可能是我没有以正确的方式搜索。基本上我想了解使用 HTML5 和 CSS3 创建应用程序的新方法,这将提供 native 应用程序的体验。以下是我的疑问。
如何逐页导航。在典型的 Web 应用程序中,每个页面都会向服务器请求,服务器将刷新后在浏览器中加载新页面。在现代方法中,如何在没有页面刷新效果的情况下进行页面导航。
在典型的Web应用程序中,动态Web编程(例如asp.net、JSP)用于在浏览器中生成HTML文件。现代的方法是什么,我们是否仍然需要使用相同的方式,或者可以使用纯静态 HTML 文件并可以通过 jquery 进行修改。
客户端服务器通信必须如何完成才能不发生页面刷新。我们可以使用 jquery 进行所有通信吗?对于浏览器来说会不会太麻烦。
HTML5 文件的托管方式。服务器或每个客户端都必须在本地拥有 HTML 文件的副本。
任何解释这一点的资源都会很棒。
最佳答案
这个问题很笼统,但我会尝试回答。
1. HTML5只是HTML的新版本,仍在draft下据 w3.org 报道。
HTML5 仍然是 HTML,HTML 通过向服务器请求下一页的新副本来导航到其他页面,服务器会主动响应。然而,这将从浏览器中刷新现有页面,并引入新页面。(是的,当再次请求同一页面时,要么显示浏览器中的缓存副本,要么将新请求发送到服务器,并且所有内容,无论大小,都会重新加载)。这是重新加载部分。但是,您可以使用 AJAX 提供的异步服务,您可以使用该服务请求部分 html 页面。
Ajax is a group of interrelated web development techniques used on the client-side to create asynchronous web applications. With Ajax, web applications can send data to, and retrieve data from, a server asynchronously (in the background) without interfering with the display and behavior of the existing page.
2. 现在已经很少使用静态页面了。但是,如果站点没有太多用户特定的组件,或者站点仅需要放入静态数据,那么静态页面会很有帮助,因为可以避免加载 javascript 内容。但话又说回来,所有现代网页都是动态的。
There are a lots of ways of putting dynamic content on the web like the Model View Controller approach and Event Based approaches.
只是为了给您一个想法,新外观是单页外观,其中网站中的所有内容都显示在一个页面中,并且有多个 Controller 可提供网站的各个部分页面,所有内容都组合成一个 View 。
看看here 。
3. 现在有很多新的 js 选项,其中最新添加的是 node.js 和 angular.js。 Node.js如果您希望您的网站完全由 JavaScript 驱动,那么这是一个很好的选择,但是目前还没有多少托管网站支持 node.js。然而,现在 javascript 似乎是 future 。
4. 这个问题是一个很大的问题,因为完全缺乏对你的观点的研究。因为,托管和拥有副本是两件不同的事情,因为除了托管站点和您的客户端(即浏览器)之外,还有许多其他服务器放置在离客户端相当近的位置来提供页面服务飞,以便将文件快速带到浏览器。
So, in a sense a lot of websites which have huge number of hits have layers of fast cached servers upon slow back-end servers to serve requests quickly. Then there are also fast cached database servers upon huge slower ones.
所以,我想在这里强调的是,这纯粹是您必须做出的与性能相关的决定。因此,如果您想实现某些目标,无论是速度还是其他任何目标,都有很多选择可供探索。
说到CSS3部分,CSS3的动画部分仍然有待全局接受。世界各地仍然有用户的浏览器无法处理 CSS3D 转换(使用旧版本 IE 等的用户)。就是这样。
也就是说,这些东西纯粹与性能有关,HTML5 或 CSS3 在此无关。
关于javascript - 响应式 HTML5 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635533/