【发布时间】:2011-07-18 16:01:56
【问题描述】:
为非 JS 启用和 JS 启用的页面开发网页的最佳实践是什么?我正在开发一个使用 JSP/JSTL 作为视图技术的 Spring MVC Web 应用程序。
我的工作方式是在其中创建一个完整的网页(带有“html”、“head”等)标签。这适用于所有浏览器。在禁用 JS 的情况下,我的整个应用程序都可以正常工作(但是丑陋的错误)。
每个页面中还包含一些 jQuery 脚本,用于美化页面,通常将顶级“div”转换为选项卡,将其他 div 转换为对话框等。JS“劫持”底层 HTML。我的 JS 劫持链接和按钮,使用 AJAX 调用将内容加载到正确的对话框或选项卡 div 中。
这一切都很好,我喜欢这个架构,但我添加了一个优化,以便 AJAX 请求附加一个“contentOnly”参数;这是由 Spring MVC 视图接收的,该视图有条件地忽略“头部”等 - 即它只呈现 AJAX 版本想要的真实内容。只是感觉很笨拙。
我知道我可以加载整个页面并丢弃外部位,但这似乎无法加载所有并非绝对必要的关联 CSS 和 JS 文件。
我的问题是:有没有更好的方法来编写这种条件格式,我应该使用不同的视图技术还是其他东西,比如 Velocity 或 FreeMarker 或 Grails 使用的任何东西?
我的条件示例:-
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:if test="${param.contentOnly == null}">
<!DOCTYPE html>
<html>
<head>
<%@ include file="_stylesAndScripts.jsp"%>
<title>My App Title</title>
</head>
<body>
<%@ include file="_header.jsp"%>
<%@ include file="_menu.jsp"%>
</c:if>
<div id="leadListPanel" class="contentPanel">
<h1>My App Title</h1>
<p>The time on the server is ${serverTime}.</p>
<table id="leadTable" class="list">
... rest of content...
<c:if test="${param.contentOnly == null}">
<%@ include file="_footer.jsp"%>
</body>
</html>
</c:if>
【问题讨论】: