自定义require函数让浏览器按需加载Js文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了自定义require函数让浏览器按需加载Js文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2393字,纯文字阅读大概需要4分钟。
内容图文
![自定义require函数让浏览器按需加载Js文件](/upload/InfoBanner/zyjiaocheng/305/ad31a185340b4634bc9d1aeaa92676ea.jpg)
本文介绍的是自定义require函数让浏览器实现按需加载Js文件,那到底要怎么自己写一个按需加载的库呢
为了实现按需加载:
//这是我们要实现的功能,require('str.js')时加载str.js文件,并创建一个叫str对象,等加载完毕之后执行str对象的ready方法里的函数。
var str = require('str.js'); str.ready(show); //要执行的函数 function show(res){ console.log(res); } //str.js 文件,提供"我是str"字符串 //require.js 这个是我们要写的库
实现思路
1、如何加载str.js文件呢?
A:我们可以插入一个<script src="str.js"></script> ,这样不仅加载了str.js,里面的代码还可以被浏览器自动运行呢。
2、如何判断str.js文件已经加载完毕?
A:可以在str.js文件里执行一个函数,通知大家,我已经加载完了。
3、require('str.js')返回一个对象,这个对象要怎么和str.js相关联呢?
A:我们可以创建一个叫JS['str.js']的对象,使str指向这个对象就行了。
4、我不想把代码都写进一个ready里面,我要写在很多个ready里面,加载完之后它们都能执行吗?
A:不管多少个ready,没加载完的时候,都会丢进一个队列里面先保存着,所以我们需要一个队列。
5、加载完的那个时刻触发ready,那加载完之后我再写的ready函数,就不执行吗?
A:也会执行,所以,在加载完的那个时刻,我们将重写ready函数。
6、这么多东西20行代码能完成吗?
A:....
执行方案
根据上诉思路,写了一个require.js文件:
function require(path){ //比如我们require('js/str.js') , 我们需要获取'str.js'这个文件名 var filename = path.split('/'); filename = filename[filename.length-1]; JS[filename]={ fn:[/*这个就是(4)中提到的那个队列*/], //这是(2)中提到的方法,str.js文件里面执行这个方法就代表它加载完了 ready:function(){ JS[filename].fn.forEach(function(fn){ //JS['str.js'].export就是str.js要提供的东西:'我是str' fn(JS[filename].export); }); //这是(5)中提到的,ready函数的重写 JS[filename].rt.ready = function(fn){ fn(JS[filename].export); }; }, rt:{ ready:function(fn){JS[filename].fn.push(fn)}//这个就是str对象的ready函数 } }; //这是(1)中提到的插入script标签 var script = document.createElement('script'); script.src = path; document.head.appendChild(script); //这是(3)中要返回的对象 return JS[filename].rt; }
接下来,就差str.js的写法了:
/* 这里你想写什么代码都行,推荐写在闭包里,以免污染全局变量 */ JS['str.js'].export = '我是str';//这个是供大家使用的参数 JS['str.js'].ready();//执行这个函数,通知大家,str.js加载完毕了
确认一下执行结果
<!DOCTYPE html> <script src="require.js"></script> <script> var str = require('str/str.js'); str.ready(show); setTimeout(function(){ str.ready(show); },3000); //要执行的函数 function show(res){ console.log(res); } </script>
ok,一切正常。
内容总结
以上是互联网集市为您收集整理的自定义require函数让浏览器按需加载Js文件全部内容,希望文章能够帮你解决自定义require函数让浏览器按需加载Js文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。