博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
按需加载js文件功能实现
阅读量:7228 次
发布时间:2019-06-29

本文共 1028 字,大约阅读时间需要 3 分钟。

hot3.png

随着前端页面功能的日益壮大,要实现整个应用就要引入很多插件库,为了优化加载速度,有模块化机制,按需加载机制,所以一直想自己写一个按需加载功能,实现在不引入第三方库的前提下实现单页面应用,简单写了一个,能实现按需加载js文件功能。

总的思路:通过监听location.hash值的变化,加载与hash值相同的js文件,如果已经加载过模块就不重复加载。

以下只是实现的思路,不能作为一个功能去用。

    //检测是否已经加载过js文件

        function resourceExist(path){
            var flag = false;
            var scripts = document.getElementsByTagName('script');
            for(var i=0;i<scripts.length;i++){
                var src = scripts[i].getAttribute("src");
                console.log(src);

                var paths = src.split('/');

                var path1 = paths[paths.length-1].split('.')[0];
                if(path1 == path){
                    flag = true;
                    break;
                }
            }
            return flag;
        }
        //通过新增script标签,加载文件
        function router(url){
            var script=document.createElement("script");  
            script.setAttribute("type", "text/javascript"); 
            script.setAttribute("charset", "utf-8");          
            script.setAttribute("src", url+".js");
            
            document.body.appendChild(script);
        }
        //监听hash变化
         window.addEventListener("hashchange", function(e) {
            if (location.hash !=""){
                if(!resourceExist(location.hash.split("#")[1])){
                    router(location.hash.split("#")[1]) ;
                }
                 
            }
         })

转载于:https://my.oschina.net/niejianbo/blog/820552

你可能感兴趣的文章
SharedPreferences的使用注意事项
查看>>
sofa-pbrpc高级用法
查看>>
Oracle 函数返回表实例2种写法实例
查看>>
mysql数据库主从复制
查看>>
Shell标准输出、标准错误 >/dev/null 2>&1
查看>>
Android自定义对话框(Dialog)位置,大小
查看>>
设置python的默认编码为utf8
查看>>
简易sqlhelper-java
查看>>
通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming运行机制
查看>>
HBuilder 学习笔记
查看>>
利用OpenStreetMap(OSM)数据搭建一个地图服务
查看>>
TopN算法与排行榜
查看>>
lucene排序算法之向量空间模型(一)
查看>>
新浪微博数据Json格式解析
查看>>
WLAN 802.11 wifl区别
查看>>
oracle授权动态视图权限给用户
查看>>
Debian – 出现-bash: pip: command not found错误解决办法
查看>>
Zxing扫描二维码
查看>>
我的友情链接
查看>>
aspcms后台拿shell漏洞(非添加模块)及修复方法
查看>>