domloader 帮助你构建一个模块化的纯前端项目,而无需用到 react 或者 vue.js 这类技术。
没有学习成本,不需要去学额外的语法,也不用编译,只需要用原生 js 就足够了。
domloader 能做的事情很简单,你可以将页面中可重用的部分拆出来,并随时在其他页面重组。就像 PHP 的 include 那样!
你可以到这里浏览 domloader 的实际应用。
同时也欢迎应用了 domloader 的作品在此展示。
目前已经实现的功能:
- 加载 html,css 以及 js
- 可以设置一个加载进度界面的图标
- 加载时显示进度条
- 自动前缀修正,解决项目中的各种路径问题
- 回调设置,加载资源文件完成后执行回调
domloader 由一个 js 文件和一个 css 文件组成,合计约 12 kb。
每次升级版本,您只需要将最新版本的两个文件覆盖即可。
为了确保页面功能不混乱,domloader 会队列加载预设的内容(浏览器通常是并发加载页面资源)。
domloader 的核心功能需要 jQuery 支持才能实现,因此在使用 domloader 时请务必加载 jQuery 。
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="domloader.js"></script>
<link href="domloader.css" rel="stylesheet"/>
通常建议在页面的head部分加入 domloader 的执行代码,以确保 domloader 可以优先运行。
domloader会在页面准备就绪时自动执行设定的加载指令。
domloader.init()
domloader.html(dom,path);
//参数 dom 指的是 domloader 该向哪个 ID 注入 html 块的内容。这是使用了 jQuery 的选择器。
//参数 path 指的是 domloader 从哪里获取 html 块。
举一个例子 下面的这段代码,会在页面就绪时,由 domloader 下载 header.html 的内容,并替换掉 d="head" 的区块。
<html>
<head>
<title>domloader demo</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script src="domloader.js"></script>
<script>
domloader.init();
domloader.html('#head','/header.html');
</script>
</head>
<body>
<div id="head"></div>
</body>
</html>
预加载功能优先于所有资源文件,会在页面加载后立即执行预加载功能,将代码插入到 head 后方。
所有预加载资源不会受到浏览器缓存的影响,均为无缓存(重点)。
因此预加载功能通常用来加载一些配置信息,比如定义了 version 参数的配置文件。
domloader.preload(path);
对于 CSS 文件,domloader 会按顺序将其插入到 head 的尾部,以外部样式表的方式。
而对于 JS 文件,domloader 会按顺序下载好 JS 的内容后,以 script 标签内嵌的方式,将 js 内容插入到 body 的尾部。
domloader.css(path);
domloader.js(path);
如果你要把整个前端项目放在子目录,那么这个设置可以确保正确加载资源。
一旦设置了此参数,每次加载时都会在地址前附加此参数。
domloader.root = 'https://yourwebsite.com/subdir/';
此功能需要配合设置网站根目录一起使用。 当通过 domloader.root 设置了网站根目录时,在任意含有 src 或 href 的元素中增加 data-dl-root 属性,并设置为 true时,这个元素的 src 或 href 属性的值,会在 domloader 加载资源文件完成时得到自动修正。
<script>
domloader.root = 'https://yourwebsite.com/subdir/';
</script>
<a data-dl-root="true" href="page/about.html">关于我们</a>
<!--[下面的代码是自动前缀修正后的代码]-->
<a data-dl-root="false" href="https://yourwebsite.com/subdir/page/about.html">关于我们</a>
可以解决由于浏览器缓存导致的资源更新不及时问题。
一旦设置了此参数,每次加载时都会在地址后附加此参数。
domloader.version = 'v1.0';
有一些操作必须要在所有资源加载完成之后进行。
onload 方法允许你设置一系列回调,将会在 domloader 加载完所有资源文件后启动这个回调。
domloader.onload(
function(){ xxx.xxx(); }
);
如果你不设置这个,那么在加载时只会显示进度条
domloader.icon = '/yourlogo.png';
此参数控制进度条动画总时间,即如果所有文件都为就绪状态,进度条跑完的时间。
默认值为 500 ms
domloader.animation_time = 500;
此参数可以直接关闭进度条。
默认值为 true
domloader.animation = false;
domloader.debug 控制是否在控制台输出加载调试信息。默认是打开的,你可以设置为false来屏蔽这些信息。
domloader.debug = false;