美文网首页
vue动态加载js和css

vue动态加载js和css

作者: WMSmile | 来源:发表于2022-07-06 11:15 被阅读0次

vue动态加载js和css

vue项目第一次加载很慢的,发现在第一次加载要很大的js导致卡顿、可以使用cdn加速和其他gzip方式效果不是很明显。因此考虑每个页面动态加载js和css的方式来解决。

第一种方式 直接在index.html直接引入js和css

注意这种方式,第一次加载大量js会很慢、很慢、很慢!

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <title>WMSmile</title>
  <link rel='stylesheet' href='./static/luckysheet/plugins/css/pluginsCss.css' />
  <link rel='stylesheet' href='./static/luckysheet/plugins/plugins.css' />
  <link rel='stylesheet' href='./static/luckysheet/css/luckysheet.css' />
  <!-- <link rel='stylesheet' href='./static/luckysheet/assets/iconfont/iconfont.css' /> -->
  <script src="./static/luckysheet/plugins/js/plugin.js"></script>
  <!-- <script src="./static/luckysheet/luckysheet.umd.js"></script> -->

<!--  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />-->
<!--  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />-->
<!--  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />-->
<!--  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />-->
<!-- <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script> -->
<!-- <script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script> -->
</head>
<body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
</body>
</html>

第二种方式在对应的页面加载特定的js和css

工具类动态加载js和css

直接上代码

ts版本

wmtools.js

export class WMTools {
  /**
   * 动态加载css文件
   * @param {*} url
   * @param {*} isCache
   */
  static loadCSS(url: string, isCache = false) {
    const element = document.createElement("link");
    element.setAttribute("rel", "stylesheet");
    element.setAttribute("type", "text/css");
    if (isCache) {
      element.setAttribute("href", url + "?t=" + new Date().getTime());
    } else {
      element.setAttribute("href", url);
    }
    document.head.appendChild(element);
  }
  /**
   * 动态加载js文件
   * @param {*} src
   * @param {*} callback
   *   loadScript("",function(){
   *   console.log("加载成功")
   * })
   * var that = this; 在方法里面使用that
   */
  static loadJS(
    src: string,
    callback: (this: HTMLScriptElement, ev: Event) => void,
    isCache = false
  ): void {
    const script = document.createElement("script");
    script.type = "text/JavaScript";
    if (isCache) {
      script.src = src + "?t=" + new Date().getTime();
    } else {
      script.src = src;
    }
    if (script.addEventListener) {
      script.addEventListener("load", callback, false);
    }
    document.head.appendChild(script);
  }
}


使用方法在xxx.vue界面

  created() {
    WMTools.loadJavaScript("https://xxxx.js", () => {
      console.log("加载成功");
      //执行其他逻辑
    });
  },

同理,css 类似。

js版本

wmtools.js


/**
 * 动态加载css文件
 * @param {*} url
 * @param {*} isCache
 */
export function loadCSS(url,isCache=false) {
  let element = document.createElement("link");
  element.setAttribute("rel", "stylesheet");
  element.setAttribute("type", "text/css");
  if (isCache) {
    element.setAttribute("href", url + "?t=" + new Date().getTime());
  } else {
    element.setAttribute("href", url);
  }
  document.head.appendChild(element);
}

/**
 * 动态加载js文件
 * @param {*} src
 * @param {*} callback
 *   loadScript("",function(){
 *   console.log("加载成功")
 * })
 * var that = this; 在方法里面使用that
 */
export function loadJS(jsUrl, callback,isCache = false) {
  var script = document.createElement('script');
  var head = document.head;
  script.type = 'text/JavaScript';
  if (isCache) {
      script.src = jsUrl + "?t=" + new Date().getTime();
  }else {
    script.src = jsUrl
  }
  if (script.addEventListener) {
    script.addEventListener('load', callback, false);
  }
  head.appendChild(script);
}

使用

import { loadJS } from "@/utils/wmtools"
loadJS("https://xxxx.js", function () {
   console.log("加载成功")
});

相关文章

  • JavaScript动态加载js和css

    动态加载js 参考:javascript 性能优化 动态加载css 参考: 动态加载 css 方法实现和深入解析 ...

  • vue动态加载js和css

    vue动态加载js和css vue项目第一次加载很慢的,发现在第一次加载要很大的js导致卡顿、可以使用cdn加速和...

  • vue无限加载

    vue无限加载 template: js: css: js无限加载 先了解三个变量: document.docum...

  • js动态加载HTML元素时点击事件无效

    js动态加载HTML元素时点击事件无效: 是因为这些动态加载的这些HTML,是在css,js代码加载完后,再添加的...

  • 动态加载js和css

    有时候js或css需要后期加载,不需要页面载入的时候加载,这时候客户通过下面方式限定一下访问css及js的方法变量...

  • 动态加载css和js

    需求: 一个html里面放入pc端代码和移动端代码用js来判断加载资源 1.加载对应的css 2.删除不需要的ht...

  • 2021-11-02 vue项目中动态引入远程(第三方)js和c

    将index.html中的远程js和css设置为可配置的动态加载 之前:index.html中写死了js与css的...

  • 前端开发 踩坑总结

    1,Vue 当动态import 路由懒加载时。如果Vue文件中的Css也被import动态引入,可能会导致页面样式...

  • 阿里Weex 实现页面跳转

    使用Weex navigator模块 second.vue Three.vue 从网络端加载js文件,实现动态更新...

  • 前端动态加载js和css

    项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载JS 的功能写成了一个对象,先上代码: 对象包含...

网友评论

      本文标题:vue动态加载js和css

      本文链接:https://www.haomeiwen.com/subject/uifybrtx.html