# 前端动态载入js/css资源

# 前言

js动态载入js/css和设置自适应字体

# 一、js动态载入js或者css文件

1、封装insertScript方法可以动态载入js资源文件且不会重复载入 1、封装loadCssFileW方法可以动态载入css资源文件且不会重复载入

filesTools = {
    jsFileList: {},
    insertScript: function (url, callback, delay) {
        this.jsFileList = this.jsFileList || {};

        function loadJs() {
            const d = document;
            let s = d.createElement('script');
            s.type = 'text/javascript';
            s.charset = 'utf-8';
            if (s.readyState) {
                // IE
                s.onreadystatechange = function () {
                    if (s.readyState === 'loaded' || s.readyState === 'complete') {
                        s.onreadystatechange = null;
                        Pass.jsFileList[url] = true;
                        callback && callback();
                    }
                };
            } else {
                s.onload = function () {
                    this.jsFileList[url] = true;
                    callback && callback();
                };
            }
            s.src = url;
            d.getElementsByTagName('head')[0].appendChild(s);
        }

        if (!this.jsFileList[url]) {
            if (delay) {
                setTimeout(function () {
                    loadJs();
                }, 100);
            } else {
                loadJs();
            }
        } else {
            callback && callback();
        }
    },
    loadCssFileW: function (url, callback) {
        window._loadedFilesW = window._loadedFilesW || {};
        if (!window._loadedFilesW[url]) {
            window._loadedFilesW[url] = true;
            let l = document.createElement('link');
            l.rel = 'stylesheet';
            l.type = 'text/css';
            l.href = url;
            document.getElementsByTagName('head')[0].appendChild(l);
            if (l.readyState) {
                // IE
                l.onreadystatechange = function () {
                    if (l.readyState === 'loaded' || l.readyState === 'complete') {
                        l.onreadystatechange = null;
                        callback && callback();
                    }
                };
            } else {
                l.onload = function () {
                    callback && callback();
                };
            }
        } else {
            callback && callback();
        }
    }
};


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

# 二、js设置自适应字体大小

1、实时监听resize事件获取视口宽clientWidth进行动态字体大小调整 2、将document.documentElement赋值给html根元素,这样使用rem单位将以该字体大小为基准

let currClientWidth;
 let fontValue;
 let originWidth;
 originWidth = 414;
 
 function resize() {
     currClientWidth = document.documentElement.clientWidth;
     if (currClientWidth < 320) {
         currClientWidth = 320;
     }
     if (currClientWidth > 414) {
         currClientWidth = 414;
     }
     fontValue = (currClientWidth / originWidth) * 10;
     document.documentElement.style.fontSize = fontValue + 'px';
 }
 
 window.px2rem = function (px) {
     return px / (16 * fontValue / 100);
 };
 
 export default () => {
     resize();
     window.addEventListener('resize', resize, false);
 };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Last Updated: 6/12/2025, 1:09:29 AM