构建交互式Web应用:从URL设计到HTML5实践
立即解锁
发布时间: 2025-08-18 01:03:15 阅读量: 2 订阅数: 3 

### 构建交互式 Web 应用:从 URL 设计到 HTML5 实践
#### 1. URL 设计与应用扩展性
在设计应用时,每个 URL 空间由独立的 Servlet 处理,这使得 Servlet 能独立工作,便于扩展或简化应用而不产生意外后果。利用特定的 URL 设计,可创建无需 JavaScript 支持的应用。当前,每个 URL 与原子化的 GET 或 POST 事务相关联,页面不聚合过多元素,用户可通过点击链接获取额外信息,如文章评论在单独页面。
这种设计虽提升了 App Engine 的可扩展性,但在不支持 JavaScript 的浏览器中会有功能限制。若不想出现此类情况,可采用一个 URL 同时展示文章和评论,但这会增加服务器生成页面的时间,降低可扩展性。
另一种替代方案是在原子化 URL 的基础上,使用 AJAX 在后台请求额外信息。若浏览器禁用 JavaScript,用户可通过点击原子化地址获取信息;若支持 JavaScript,页面可无过多点击地显示额外内容。
#### 2. 项目设计决策
设计示例应用时,需考虑诸多因素。博客应用虽需求不复杂,但仍需做出基本的设计选择。其中,最难的决策是放弃多数 Java 程序员惯用的框架,因为在 App Engine 中,框架往往弊大于利。此外,要谨慎选择库,将其数量减至最少,模板系统也应尽量轻量,不影响应用的维护性和灵活性。
#### 3. 欢迎 HTML5
HTML5 是创建丰富交互式 Web 应用的绝佳补充。在过去,新的 HTML 功能常仅在最新浏览器版本中可用,开发者需选择页面能正常运行的浏览器子集。如今,HTML5 标准出现,虽带来新功能,但也让开发者面临是否放弃旧浏览器支持的抉择。
HTML5 值得关注,原因有二:一是其多数扩展针对丰富交互式 Web 应用,这也是 App Engine 的目标之一;二是它能克服 App Engine 服务器端的一些限制,如 canvas 元素可弥补服务器端图像处理能力的不足,DOM 数据存储可替代高负载的会话。
#### 4. HTML5 范围界定
在相关讨论中,“HTML5” 常以最宽泛的意义使用,部分元素和功能实际属于 W3C 的不同规范。为明确概念,可区分 “HTML5 元素”、“HTML5 API” 甚至 “与 HTML5 相关的 API”。
#### 5. 使用 HTML5 新标签
HTML5 规范与 HTML 标签关联不大,更多与 JavaScript API 相关。HTML5 增加了 HTML 元素库,对代码进行了整体整理。通过分析大量网页,发现许多 div 元素的 class 和 id 属性会重复,如 header、footer、article、section、nav 等。HTML5 将这些名称标准化,使代码更美观。
新浏览器能很好处理这些新名称,只有 Internet Explorer 7 和 8 需要 JavaScript 支持才能为新元素定义样式。若页面需在禁用 JavaScript 的浏览器中运行,建议等多数用户使用 Internet Explorer 9 后再采用新标签。
以下是一个使用 HTML5 标签的博客示例:
```html
01 <!DOCTYPE html>
02 <html>
03 <meta charset="utf-8">
04 <body>
05 <header>
06 <h1>Tytuł bloga</h1>
07 <h2>Autor: Adriaan de Jonge</h2>
08 </header>
09 <nav>
10 <a href="/1">Pierwszy link</a>
11 <a href="/2">Drugi link</a>
12 </nav>
13 <article>
14 <header>
15 <h1>Tytuł wpisu</h1>
16 <p>Powstał <time datetime=2010-10-23 pubdate>
17 23 października 2010</time></p>
18 </header>
19 <p>Oto właściwa treść artykułu</p>
20 <p> ...i więcej</p>
21 <footer>
22 Tu małe ikonki pozwalające publikować na Facebooku, Twitterze itp.
23 </footer>
24 </article>
25 <article>
26 <header>
27 <h1>Drugi wpis</h1>
28 <p>Powstał <time datetime=2010-10-24 pubdate>
29 24 października 2010</time></p>
30 </header>
31 <p>Inny tekst</p>
32 <footer>
33 Tu małe ikonki pozwalające publikować na Facebooku, Twitterze itp.
34 </footer>
35 </article>
36 <footer>Copyright © 2011 — wszystkie prawa zastrzeżone</footer>
37 </body>
38 </html>
```
在这个示例中,header 元素包含 h1 标题,不同层次的 h1 可能有不同含义。HTML5 允许在不需要引号时省略,如 datetime 元素;某些属性可独立存在,如 pubdate 属性。nav 元素替代了传统的 class="nav" 的 div 元素。
#### 6. HTML5 新标签使用要点
|要点|说明|
|----|----|
|引号省略|在 HTML5 中,若值不包含空格,可省略引号,如 datetime 元素|
|属性独立|部分属性可独立存在,无需赋值,如 pubdate|
|nav 元素|替代传统的 div class="nav",用于页面导航|
#### 7. 绘制画布
在 App Engine 中,传统 Java 图像处理接口因性能和安全原因不可用,其图像处理 API 功能有限。而 HTML5 的 canvas 元素提供了丰富的 API,可在浏览器窗口中创建和转换图像,并可导出为 PNG 或 JPG 格式。
以下是一个简单的 canvas 使用示例:
```html
01 <!DOCTYPE html>
02 <html>
03 <meta charset="utf-8">
04 <body>
05 <header>
06 <h1>Wypróbuj płótno!</h1>
07 </header>
08 <article>
09 <canvas id="my-canvas" height="200" width="250">
10 </article>
11 </body>
12 <script>
13 function drawInCanvas() {
14 var canvas = document.getElementById('my-canvas');
15 var context = canvas.getContext('2d');
16 context.beginPath();
17 context.moveTo(10,10);
18 context.lineTo(190,190);
19 context.stroke();
20 context.fillRect(50,10,40,40);
21 context.fillStyle = "gray";
22 context.rotate(0.1);
23 context.fillRect(100,10,40,40);
24 context.globalAlpha = 0.5;
25 context.fillRect(150,10,40,40);
26 context.fill
```
0
0
复制全文
相关推荐









