8 Star 5 Fork 3

Esmool / jQuery.masterPage.js

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

jQuery.masterPage.js

基于 jQuery 的母版页驱动引擎

依赖

jQuery 1.11.1 (通过测试, 早期版本不做保证)

用法

母版页制作

使用jsp制作母版页, 在母版页中按照完整的HTML格式书写HTML, 需要使用占位符时给对应元素添加属性masterPlaceHolder, 其中填写占位符名称, 例如

	<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
	<!DOCTYPE HTML>
	<html>
		<head>
			<title masterPlaceHolder="title">默认标题</title>
			<meta http-equiv="content-type" content="text/html; charset=utf-8" />
			<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
			<script type="text/javascript" src="js/jquery.masterPage.js"></script>
			<link rel="StyleSheet" src="css/jquery.masterPage.css" />
			<!-- TODO: 添加母版中需要引入的其它库和样式文件 -->
		</head>
		<body>
			<div class="masterTop">
				<div class="masterLogo"></div>
				<div class="masterTitle" masterPlaceHolder="title">默认标题</div>
				<div class="masterNavButtons">
					<!-- TODO: 添加母版上公共的导航按钮 -->
				</div>
				<div class="masterLoginPanel">
					<!-- TODO: 添加母版上公共的登录按钮 -->
				</div>
			</div>
			<div class="masterBody" masterPlaceHolder="body"></div>
			<div class="masterTail">
				<!-- TODO: 添加母版上公共的底部栏目 -->
			</div>
		</body>
	</html>

上例中三处占位符分别为

	<title masterPlaceHolder="title">默认标题</title>
	<div class="masterTitle" masterPlaceHolder="title">默认标题</div>
	<div class="masterBody" masterPlaceHolder="body"></div>

占位符中可以填充默认HTML内容, 当引用母版页的子页没有指定占位符内容时, 将会使用母版页中默认的内容, 如上例中title占位符所示.

可以在母版页中多次引用同名占位符, 如上例中title占位符所示.

注意

可以在母版页中引用公共的库、样式, 定义公共的javascript函数、javascript全局变量, 定义公共的样式, 所有上述内容均在子页中可见. 因此也应当注意进行命名规避, 以避免冲突.

子页面制作

在子页面中, 首先需要以JSP方式声明对母版页的引用, 按照如下格式

	<%@ include file="母版页文件路径" %>

之后使用如下格式填充母版页中

	<div masterTag="占位符名称">
		<!-- TODO: 填充内容 -->
	</div>

子页面的填充元素应当为div, 且不应当给其设置除masterTag以外的任何属性.

当需要执行页面加载完毕后动作时, 建议定义页面内全局pageLoad()函数代替使用body的onload事件和$(document).ready事件. 使用pageLoad()可以确保母版页完成了前端解析之后方被触发.

若子页面不提供pageLoad()函数, 浏览器控制台将输出警告, 指示无法找到该函数, 若确实不需要此函数, 可以忽略此警告.

假设上例的母版页保存在路径/view/master/demoMaster.jsp下, 引用该母版的完整的示例如下

	<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
	<%@ include file="/view/masters/demoMaster.jsp" %>
	<div masterTag="title">Demo Page for jQuery Master Page plugin</div>
	<div masterTag="body">
		<p>Hello World!</p>
		<div id="txtResult"></div>
	</div>
	<!-- TODO: 在此引入子页面专用的库和样式 -->
	<script type="text/javascript">
		function pageLoad() {
			$('#txtResult').text("Ready to Go");
		}
	</script>

注意

  1. 子页中若不提供母版页中要求的占位符实现, 将会采用母版页中默认的实现;

  2. 子页中若提供了母板页中未要求的占位符实现, 将会自动抛弃该实现;

  3. 母版页中的所有前端脚本、样式子页中均可见, 应注意命名规避避免冲突.

页面初始化动作

在母板页中可以声明函数 beforePageLoad 和 afterPageLoad

    function beforePageLoad() { ... } // 或
    window.beforePageLoad = function () { ... }
    function afterPageLoad() { ... } // 或
    window.afterPageLoad = function () { ... }

在子页面中可以声明函数 pageLoad

    function pageLoad() { ... } // 或
    window.pageLoad = function () { ... }

以完成页面初始化动作.

上述三个函数的调用顺序为

  1. beforePageLoad
  2. pageLoad
  3. afterPageLoad

其它注意事项

本插件为前端母版解析插件, 所有占位符匹配、替换动作均在前端完成.

目前本插件在JSP环境下测试正常, 理论上可在ASP/ASP.NET, PHP等任何动态网页中应用, 相应的对头部服务器脚本引用格式进行对应调整即可. 但未经测试不做保证. 有兴趣参与贡献者, 欢迎加入测试和改进行列.

本插件为针对传统多页面应用设计, 不兼容单页应用(Single Page Application, SPA)框架.

The MIT License (MIT) Copyright (c) 2016 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于jQuery母版页驱动引擎 展开 收起
JavaScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/Esmool/jQuery.masterPage.js.git
git@gitee.com:Esmool/jQuery.masterPage.js.git
Esmool
jQuery.masterPage.js
jQuery.masterPage.js
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891