Vue使用CDN引用项目组件,减少项目体积的方法

  Vue项目打包后有的文件动辄几百KB或几M,这对一个前端项目的加载无疑是致命的。当你的服务器部署在阿里云或亚马逊,每秒只有100kb的加载速度时,页面的载入速度绝对让你崩溃。那么有什么办法可以在依旧是100kb/s的加载速度下让我们的页面快起来呢?CDN算是其中之一的解决办法。

  首先,我们要明白为什么我的Vue项目在打包后产生的文件会那么大。我们在最开始使用Vue的时候几乎所有组件、插件的引用都会放到项目主文件中进行即 main.js文件,我们的引用方式可能是这样的:

import Vue from 'vue'
import App from './App'
import Router from 'vue-router'
import ElementUI from 'element-ui'
import axios from 'axios'
import 'element-ui/lib/theme-chalk/index.css'
import cookies from 'vue-cookies'
import qs from 'qs'
import store from './store'

  项目在打包的时候就会去自动查找依赖,并将依赖文件全部打入到项目中去,正是这些依赖的文件的存在导致了整个项目文件的体积庞大了起来。但是依赖文件又是必须的,总不可能把依赖文件删除了不是。CDN的出现就为上述情况提供了一种解决方案。

  CDN全称Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

  Vue中使用CDN就相当于是将原本自己项目所需要下载的依赖文件交由用户的网络进行下载,Vue中仅仅保持对依赖文件的引用即可。主要需要改动的有两个地方一个是Vue的index.html,以及build目录下的webpack.base.conf.js,废话不多说,上代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <title>Demo index html</title>
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui@2.12.0/lib/theme-chalk/index.css" rel="external nofollow" >
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-router@3.1.3"></script>
<script src="https://cdn.jsdelivr.net/npm/js-md5@0.7.3"></script>
<script src="https://cdn.jsdelivr.net/npm/element-ui@2.12.0/lib/index.js"></script>
</body>
</html>

  所引用的资源文件Url分为几部分:

  第一部分:https://cdn.jsdelivr.net/npm 指定当前资源下载站点,与之类似的还有UNPKG、cdnjs.com、BootCDN等。个人比较推荐使用jsdelivr,速度比较稳定

  第二部分:所要引用的包名,如:vue, vue-route, element-ui

  第三部分:具体引用依赖的版本号或具体文件,如:@2.6.0,@2.12.0/lib/index.js 此部分为可选部分   

  css文件也可以使用cdn来进行引用

  上述配置完成后,还需要修改build/webpack.base.conf.js文件:

'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')

function resolve(dir) {
 return path.join(__dirname, '..', dir)
}


module.exports = {
 externals:{
 'vue':'Vue',
 'element-ui':'ELEMENT',
 'vue-router':'VueRouter',
 "moment": "moment",
 "md5": "js-md5"
 },
 context: path.resolve(__dirname, '../'),
 entry: {
 app: './src/main.js'
 },
 output: {
 path: config.build.assetsRoot,
 filename: '[name].js',
 publicPath: process.env.NODE_ENV === 'production'
 ? config.build.assetsPublicPath
 : config.dev.assetsPublicPath
 },

  如果没有标注部分的代码,请插入。在externals配置中,像Vue、ELEMENT、VueRouter这些都是固定写法,webpack会根据这些字符自动查找相关依赖并引入

  在修改完上述文件后,还需要修改main.js中关于这些文件的应用:

import Vue from "vue";
import App from "./App";
import router from "VueRouter";
import cookies from "vue-cookies";
import VueAxios from "vue-axios";
import axios from "axios";//elementUI无需在引用,如需使用相关代码请使用ELEMENT代替如:const Message = ELEMENT.Message;

  至此配置全部完成,需要注意的是使用CDN之后,用户在访问你的页面时都会去请求所配置的CDN文件,所以选择一个速度快且稳定的CDN站点十分重要的;还有就是并不是所有的依赖文件都可使用此等方式引用,有些组件是不会导出对象的,也就意味着不能使用CDN来完成使用。

原创文章,作者:KAKIL,如若转载,请注明出处:http://www.wangzhanshi.com/n/13178.html

(0)
KAKIL的头像KAKIL
上一篇 2025年1月1日 17:07:24
下一篇 2025年1月1日 17:07:26

相关推荐

  • cdn加速服务是什么

    cdn加速服务是什么 CDN全称Content Delivery Network,中文bai名叫内容分发网络。网站可以通过它进行加速,通俗点解释,比如一个网站的服务器部署在广州,而…

    CDN加速 2025年1月1日
  • cdn服务器指的是什么

    cdn服务器指的是什么 CDN全拼是Content Delivery Network。全面解决了用户访问量大、网络带宽小、网点分布不均等原因,是解决用户访问网站的响应速度慢的根本原…

    CDN加速 2025年1月2日
  • 使用cdn加速的方法

    用户在购买网站那些事的CDN服务之后,在使用过程中会比较关心是否有实际效果,首先大家要先确保是否已经开通成功,然后按照基本步骤添加加速域名、配置CNAME,这些都成功搞定之后,接下…

    2025年1月2日
  • 使用阿里云cdn需要备案吗

    使用阿里云cdn需要备案吗?很多人都不太了解,今天小编为了让大家更加了解阿里云cdn,所以给大家总结了以下内容,一起往下看吧。 托管于大陆境内服务器的网站,使用阿里云CDN进行内容…

    2025年1月1日
  • CDN的基本含义以及使用

    网站那些事内容分发网络。其基本思路是避开互联网上可能影响数据传输速度和稳定性的瓶颈和链接,从而使内容传输更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一…

    2025年1月1日
  • cdn加速使用方法

    用户在购买网站那些事的CDN服务之后,在使用过程中会比较关心是否有实际效果,首先大家要先确保是否已经开通成功,然后按照基本步骤添加加速域名、配置CNAME,这些都成功搞定之后,接下…

    2025年1月2日
  • CDN怎么实现网络加速

    CDN全称是Content Delivery Network,其目的是解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解…

    2025年1月1日
  • 使用cdn引用jquery的方法

    用cdn引用jquery的方法:在【<script>】标签中引用框架库,代码为【<script src="https://ajax.googleapis…

    CDN加速 2025年1月1日
  • CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?

    在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业、中小企业甚至个人站长所采用。在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CD…

    2025年1月1日
  • PHP将字符串转换成数字(用于图片CDN加速)

    for($i=0;$i<100;$i++){       //%4 这个有多少台CDN就可以写多少,从0开始。 &…

    CDN加速 2025年1月1日

发表回复

登录后才能评论