vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化

news2025/1/18 3:29:33

vue引入cdn Vue 优化Vue引入 cdn vue cdn Vue优化引入CDN vue 项目 CDN优化

  • 未引入 CDN前 main.js
  • 更改CDN方式引入
    • 在 vue.config 中引入 CDN
    • index.html 加载 cdn资源
    • 使用CDN引入资源后的main.js
    • 如果引入CDN后 组件不生效
  • CDN 服务商推荐

未引入 CDN前 main.js

// 依赖使用 npm 方式引入
import Vue from 'vue'
import 'default-passive-events'
import Cookies from 'js-cookie'

import 'normalize.css/normalize.css' // a modern alternative to CSS resets

import Element from 'element-ui' // vue-element-admin-manage 使用的是 2.13.2 版本,现在升级为 2.15.6版本
import './styles/element-variables.scss'
import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import './icons' // icon
import './permission' // permission control
import './utils/error-log' // error log
import * as filters from './filters' // global filters
/**
 * 官方文档:http://www.umyui.com/umycomponent/noticeBefore
 */
import UmyUi from 'umy-ui'
// 引入样式
import 'umy-ui/lib/theme-chalk/index.css'
/**
 * 打印插件 <a href="https://blog.csdn.net/qq_45325810/article/details/124186991">参考地址</a>
 */
import Print from 'vue-print-nb'

Vue.use(UmyUi)
Vue.use(Print)
// 这是给ElementUI组件库组件设置默认参数
Vue.use(Element, {
  size: Cookies.get('size') || 'medium', // set element-ui default size
  zIndex: 3000
})

// register global utility filters
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

Vue.config.productionTip = false
const vueMain = new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
export default vueMain

更改CDN方式引入

在 vue.config 中引入 CDN

文件: vue.config.js

// CDN资源
const cdn = {
  externals: {
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios',
    'element-ui': 'ELEMENT',
    'umy-ui': 'umy-ui', // umy-ui
    'vue-count-to': 'vue-count-to',
    'vue-i18n': 'vue-i18n',
    'vue-splitpane': 'vue-splitpane',
    'vuedraggable': 'vuedraggable',
    'xlsx': 'xlsx',
    'js-md5': ''
  },
  // externals 资源对应 css cdn地址
  css: [
    'https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/theme-chalk/index.min.css',
    'https://cdn.jsdelivr.net/npm/umy-ui@1.1.6/lib/theme-chalk/index.min.css'
  ],
  // externals 资源对应 JS cdn地址
  js: [
    'https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js',
    'https://cdn.jsdelivr.net/npm/vue-router@3.0.2/dist/vue-router.min.js',
    'https://cdn.jsdelivr.net/npm/vuex@3.1.0/dist/vuex.min.js',
    'https://cdn.jsdelivr.net/npm/axios@0.18.1/dist/axios.min.js',
    'https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/index.min.js',
    'https://cdn.jsdelivr.net/npm/umy-ui@1.1.6/lib/index.min.js',
    'https://cdn.jsdelivr.net/npm/vue-count-to@1.0.13/dist/vue-count-to.min.js',
    'https://cdn.jsdelivr.net/npm/vue-i18n@9.2.2/dist/vue-i18n.global.min.js',
    'https://cdn.jsdelivr.net/npm/vue-splitpane@1.0.4/dist/vue-split-pane.min.js',
    'https://cdn.jsdelivr.net/npm/vuedraggable@2.20.0/dist/vuedraggable.umd.min.js',
    'https://cdn.jsdelivr.net/npm/xlsx@0.14.1/dist/xlsx.full.min.js',
    'https://cdn.jsdelivr.net/npm/js-md5@0.7.3/build/md5.min.js'
  ]
}

module.exports = {
  publicPath: './',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false, // 打包成 web页面 使用,一般建议 false,不然会生成很多map文件
  chainWebpack(config) {
    // 引入CDN
    // webpack需要排除的依赖名称和挂载在window上的对象属性名称
    config.set('externals', cdn.externals)
    // 这里的作用是在后面index.html页面中通过link,script标签加载这些cdn链接。
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      return args
    })
  }
}

index.html 加载 cdn资源

文件: inidex.html, 一般是在 public 文件夹下

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="renderer" content="webkit">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  <title><%= webpackConfig.name %></title>

   
  <!-- 遍历cdn配置里面加载css文件 -->
  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" />
    <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" />
  <% } %>

  <!-- 遍历从cdn配置里面加载js文件 -->
  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
    <link href="<%= htmlWebpackPlugin.options.cdn.js[i] %>" rel="preload" as="script" />
  <% } %>
</head>

<body>
  <div id="app"></div>
  <!-- 遍历从cdn配置里面加载js文件 -->
  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
    <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
  <% } %>

  <script></script>
</body>

</html>

使用CDN引入资源后的main.js

// 部分 依赖使用 cdn方式引入
import Vue from 'vue'
import 'default-passive-events'
import 'normalize.css/normalize.css' // a modern alternative to CSS resets
import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import './icons' // icon
import './permission' // permission control
import './utils/error-log' // error log
import * as filters from './filters' // global filters

/**
 * 打印插件, 没有CDN资源,不使用 CDN引入 <a href="https://blog.csdn.net/qq_45325810/article/details/124186991">参考地址</a>
 */
import Print from 'vue-print-nb'
Vue.use(Print)

// register global utility filters
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

Vue.config.productionTip = false
const vueMain = new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
export default vueMain

如果引入CDN后 组件不生效

请检查 引入的时候 组件名称是否 是 CDN资源中的别名
在这里插入图片描述

CDN 服务商推荐

BootCDN: BootCDN

jsDelivr: jsDelivr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/387177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows server 2003怎么安装iis?Windows server 2003安装IIS教程

Windows 2008系统服务器安装IIS之前已经分享过了&#xff0c;和Windows 2003完全不同&#xff0c;今天飞飞将详细地和你分享Windows server 2003卸载和安装IIS的步骤方法&#xff0c;希望可以帮助到你~ 1、首先进入服务器&#xff0c;确定下服务器是否有安装IIS&#xff0c;有…

漫谈数据库表设计及索引设计

一.数据库表设计 在数据库表设计上有个很重要的设计准则&#xff0c;称为范式设计。 什么是范式设计&#xff1f; 范式来自英文Normal Form&#xff0c;简称NF。MySQL是关系型数据库&#xff0c;但是要想设计—个好的关系&#xff0c;必须使关系满足一定的约束条件&#xff0c…

论如何用C语言的数组手撕一棵特殊的完全二叉树----堆

目录 0.前言 1. 用数组表示存储一棵完全二叉树 2. 数组表示的完全二叉树的性质 3. 堆的基本概念 3.1 堆的核心性质 3.2 堆顶的性质 3.3 堆的单支性质 3.4 堆的左右支关系 4. 用代码实现堆 4.1 堆类的实现 4.2 堆的初始化 4.3 堆的销毁 4.4 获取堆顶的数据 4.5 …

这款 Python 工具进行数据分析及数据可视化真的很棒啊

前言 大家好&#xff0c;今天我们以全国各地区衣食住行消费数据为例&#xff0c;来分析2022年中国统计年鉴数据&#xff0c;统计全国各地人民的消费地图&#xff0c;看看&#xff1a; 哪个省份的人最能花钱 哪个省份的人最舍得花钱 哪个省份的人最抠门 全国各地区人民在吃、穿…

一文读懂SpringBoot整合Elasticsearch(一)

&#xff08;本篇文章主要介绍Spring Boot如何整合Elasticsearch&#xff0c;包括基本配置、数据操作、搜索功能等方面。&#xff09; 一、前言 Elasticsearch是一款全文搜索引擎&#xff0c;可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架&a…

JUC【Callable、ReentrantLock、Semaphore、CountDownLatch】

JUC > java.util.concurrent JUC标准库提供的多线程安全相关的包 Callable 接口声明带返回值的任务 类似于Runnable,都是用来描述这个线程的工作的。 Callable描述的任务带返回值&#xff0c;Runnable描述的任务不带返回值 区别&#xff1a;线程封装了一个 “返回值”&#…

【项目精选】基于网络爬虫技术的网络新闻分析(视频+论文+源码)

点击下载源码 基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下&#xff1a; &#xff08;1&#xff09;网络爬虫模块。 &#xff08;2&#xff09;中文分词模块。 &#xff08;3&#xff09;中3文相似度判定模块。 &#xff08;4&#xff09;数据结构化存…

【Python - Matplotlib】P2 plot 折线图

Matplotlib绘制折线图折线图完整代码与效果基础折线图设定横纵坐标设置中文显示添加网格添加描述信息再添加一个城市设置两个折线图前言 上一节内容主要围绕介绍 Matplotlib 的画板结构。 链接&#xff1a;https://blog.csdn.net/weixin_43098506/article/details/129331576 本…

云HIS系统 云his系统源码 基于电子病历的医院信息平台标准建设

云HIS系统 云his系统源码 基于电子病历的医院信息平台标准进行建设 云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊…

GB28181国标平台LiveGBS视频统一汇聚后如何获取固定的播放地址,实现监控视频Web页面无插件播放、拉流分析、上大屏等目的...

目前汇聚各种厂家监控设备的视频汇聚平台&#xff0c;基本都是通过GB28181标准协议实现的。下面介绍下LiveGBS Web无插件直播的GB28181视频平台将各厂家(包括海康、大华、华为、宇视、天地伟业等)监控汇聚到同一个服务器上后&#xff0c;如何或者直播链接可以直播浏览器播放&am…

flstudio21水果language选项中文设置方法教程

编曲是通过DAW&#xff08;数字音频工作站软件&#xff09;完成的&#xff0c;也就是我们常说的宿主软件。现在有很多优秀的宿主软件&#xff0c;例如Cubase、Studio One、FL Studio等。 FL Studio是一款功能强大的音乐制作软件&#xff0c;也被称为FruityLoops。目前已经推出…

Android上传手机图片到服务器(这篇你要是看不懂,全网没你可以看懂的了!!!)

Android上传手机图片到服务器1、整体流程2、页面布局3、选择图片流程实现演示结果完整代码4、路径转换路径转换Utils工具类权限申请完整代码5、创建文件6、服务器端7、传输8、演示9、完整代码目录结构AndroidManifest.xml布局文件activity_main.xml传输文件工具类HttpUtil路径转…

蓝桥杯-质因数个数

蓝桥杯-质因数个数1、问题描述2、解题思路2.1 质数判断2.2 求取因子3、完整代码实现1、问题描述 给定正整数 n, 请问有多少个质数是 n 的约数。 输入格式 输入的第一行包含一个整数 n。 输出格式 输出一个整数, 表示 n 的质数约数个数。 样例输入 396样例输出 3样例说明 3…

【教学典型案例】13.学情页面逻辑问题

目录一&#xff1a;背景介绍二&#xff1a;LocalStorage缓存①localStorage是什么&#xff1f;②如何使用localStorage缓存三&#xff1a;学情页面逻辑分析过程四&#xff1a;总结五&#xff1a;升华一&#xff1a;背景介绍 使用的前端技术是Vue2&#xff0c;前端逻辑&#xf…

SpringCloud:Eureka

目录 一、eureka的作用 二、搭建Eureka服务端 三、添加客户端 四、服务发现 提供者与消费者 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务) 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服…

[1.1_2]计算机系统概述——操作系统的四个特征

文章目录第一章 计算机系统概述操作系统的特征&#xff08;一&#xff09;并发&#xff08;二&#xff09;共享并发和共享的关系&#xff08;三&#xff09;虚拟&#xff08;四&#xff09;异步小结第一章 计算机系统概述 操作系统的特征 操作系统的四个特征 并发共享 并发和共…

Linux学习第七节-SUID、SGID、SBIT特殊权限

1.SetUID特殊权限 setUID (SUID): 对于一个可执行的文件使用SUID权限后&#xff0c;普通用户在执行改文件后&#xff0c;临时拥有文件所有者的身份&#xff0c;该权限只在程序执行过程中有效&#xff0c;程序执行完毕后用户恢复原有身份。 SetUID权限会附加在所有者的x权限位上…

每日分享(2023最新文件快递柜系统网站源码 匿名口令分享临时文件分享)

​demo软件园每日更新资源,请看到最后就能获取你想要的: 1.UML参考手册(第二版) 中文 中文名: UML参考手册&#xff08;第二版&#xff09;原名: The Unified Modeling Language Reference Manual(2nd Edition) 作者: James Rumbaugh Ivar Jacobson Grady Booch译者: UML Ch…

汇编语言程序设计(二)之寄存器

系列文章 汇编语言程序设计&#xff08;一&#xff09; 寄存器 在学习汇编的过程中&#xff0c;我们经常需要操作寄存器&#xff0c;那么寄存器又是什么呢&#xff1f;它是用来干什么的&#xff1f; 它有什么分类&#xff1f;又该如何操作&#xff1f;… 你可能会有许多的…

基于PySide6的MySql数据库快照备份与恢复软件

db-camera 软件介绍 db-camera是一款MySql数据库备份&#xff08;快照保存&#xff09;与恢复软件。功能上与dump类似&#xff0c;但是提供了相对有好的交互界面&#xff0c;能够有效地管理导出的sql文件。 使用场景 开发阶段、测试阶段&#xff0c;尤其适合单人开发的小项目…