AOP 即“面向切面编程”(也译作面向方面编程),在我经历过的 Java 项目中, 大量运用于:权限控制、日志记录、数据校验、异常处理、主动通知等领域。AOP 主要思想是把一些与核心业务无关但又在多个模块使用的功能分离出来,然后动态给业务模块添加上 需要的功能。">JavaScript 有得天独厚的动态解析执行的优势,用来实现类似 AOP 这样的模式是非常简单的,但目前很多开发者只是把 JavaScript 当作一种美化页面的“玩具语言” ,而极少深入使用一些“旁门左道”,在本文我举的几个例子都是从实际出发,用 AOP 的思想解决问题。开始之前,要确认您已经掌握 jQuery 选择器的基本用法。
Web 开发中常遇到的问题
首先看一下简单的例子:
清单 1. 一个简单的 HTML 表单
<form action="/test.jsp" method="post"> <input type=”text” name=”username” /> <input type="submit" /> </form>
这是一个最简单的 form 表单,看起来没什么问题。但在低速网络环境下,心急的浏览者没耐心等待,很可能会重复提交表单,如图 1。
图 1. 低速网络下的浏览器状态栏
作为一个 Web 开发者,我们是绝对不希望浏览者重复提交表单的,这时您可能会想到以下方案
清单 2. 表单提交时禁用 submit 按钮
<form action="/test.jsp" method="post"> <input type=”text” name=”username” /> <input type="submit" onClick="this.disabled=true;" /> </form>
很好,问题解决了,点击“提交”按钮同时该按钮也被禁用了,这样浏览者就不能重复提交了。
可是,如果您的工程很大,有成百上千个页面,每个页面都有一段类似的代码,难道您还独自编辑吗?如果有一天要在按钮 disabled 之前 alert 一个提示信息,那您还不抓狂?