本文将介绍如何使用 jQuery 的 load 方法实现组件化开发。
一、为什么需要组件化?
应项目要求,使用 HTML 、 jQuery 等技术开发网站。
在开发过程中,因为缺少组件化机制而感觉到强烈的不适,具体表现为:
同一段代码需要粘贴到多个位置
修改公共部分时,需要进行多次重复修改
缺乏组件化机制,导致了开发的繁琐和易错。
二、网站结构
假设 html 文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <head> ···引入必须的JS、CSS··· ···引入公共部分的JS、CSS··· ···引入当前页面的JS、CSS··· </head>
<body> <header> <div> header </div> </header> ··· <footer> <div> footer </div> </footer> </body>
</html>
|
三、document.write()
1. 做法
通过工具将 HTML 文档转换为 JS 文件,通过 script 的方式引入。
HTML 文档
1 2 3 4 5 6 7 8 9
| <style> ··· </style>
<header> <div> header </div> </header>
|
转换后的 JS 文件
1 2 3 4 5 6 7 8 9
| document.writeln("<style>"); document.writeln(" ···"); document.writeln("</style>"); document.writeln(""); document.writeln("<header>"); document.writeln(" <div>"); document.writeln(" header"); document.writeln(" </div>"); document.writeln("</header>");
|
通过 script 的方式引入 JS 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <head> ···引入必须的JS、CSS··· ···引入当前页面的JS、CSS··· </head>
<body> <header> <script type="text/javascript" src="./js/header.js"></script> </header> ··· <footer> <script type="text/javascript" src="./js/footer.js"></script> </footer> </body>
</html>
|
2. 问题
在载入页面完成后,浏览器的输入流将会关闭。此时如果继续向页面 document.write()
,将会清除当前的页面内容,并打开一个新的输出流,再继续向其中写入内容。
浏览器将会逐个加载 js 文件以防止发生清空内容的错误。因此,包含了 document.write()
的 script 将会显著地减慢页面的加载,容易出现加载堵塞的问题。
四、 jQuery load
使用 HTML 的方式编写组件,并用 jQuery 的 load 方法加载至页面中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <head> ···引入必须的JS、CSS··· ···引入当前页面的JS、CSS··· </head>
<body> <header id="header"> </header> ··· <footer id="footer"> </footer> </body>
<script> (function () { $('#header').load('/header.html') $('#footer').load('/footer.html') })() </script>
</html>
|
参考