vue使用cdn加速 减少项目体积

vue.config.js

const {
	defineConfig
} = require('@vue/cli-service')

// 需要排除的包,对象
let externals = {}

// 判断是否是生产环境
const isProduction = process.env.NODE_ENV === 'production'
// 如果是生产环境,需要执行以下逻辑
if (isProduction) {
	externals = {
		/**
		 * externals对象属性分析:
		 * '包名''在项目中引入的名字'**/
		'axios': 'axios',
		'element-ui': 'ELEMENT',
		'vue': 'Vue',
		'vue-router': 'VueRouter',
		'vuex': 'Vuex',
		'vuex-persistedstate': 'createPersistedState'
	}

}



module.exports = defineConfig({
	publicPath: isProduction ? './' : '/',
	transpileDependencies: true,
	configureWebpack: {
		// 打包瘦身
		// 当为开发环境时,externals为空对象
		// 当为生产环境时,externals对象值为排除第三方包,达到瘦身目的
		externals: externals,
	}
	// devServer: {
	//   // 设置代理请求
	//   proxy: {
	//     // 以 api开头
	//     '^/api': {
	//       // 设置代理地址 把基地址禁用
	//       target: ''
	//     }
	//   }
	// }
})

main.js

// import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import permission from './permission'
// 全局样式
import './styles/base.less'

Vue.config.productionTip = false
// 禁用用户通过插件查看vuex数据
Vue.config.devtools = false
new Vue({
  router,
  store,
  permission,
  render: h => h(App)
}).$mount('#app')

main.js 里把导入的vue要注释 vue和router如果加载两遍会报错
element-ui 也不需要引入
都在index.html的模板中都引入了cdn

router.js


const routers = [
  {
  path: '/',
  component: () => import("@/views/home")
  },
  {
    path:'/demo',
    component:() => import('@/views/demo/demo')
  },
  {
    path:'/demo1',
    component:() => import('@/views/demo/demo1')
  }
]

const router = new VueRouter({
  // mode: "history",
  routes:routers
})

export default router

这里我把vue的引入和VueRouter都注销掉了 都去掉了
vue.use(VueRouter) 这个也不能要 都要注销掉
request.js

// import axios from 'axios'
import store from '@/store'
// 在后端设置了跨域,则设置基地址
const instance = axios.create({
    // 请求基地址
    baseURL: ''
})
// 请求拦截器
instance.interceptors.request.use(
    config => {
        const token = store.getters.token
        if(token){
            config.headers.Authorization = `Bearer ${token}`
        }
        return config
    },
    error => {
        return Promise.reject(error)
    }
)
// 响应拦截器
instance.interceptors.response.use(
    // response 是服务器响应回来的所有数据
    response => {
        // const { message , success } = response.data
        // if (!success) {
        //     return Promise.reject(new Error(message))
        // }
        return response.data
    },
    error => {
        return Promise.reject(error)
    }
)
export default instance

这里的axios 的引入也注销掉 也能正常使用

public 里的index.html

<!DOCTYPE html>
<html lang="">

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

	<link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.12/lib/theme-chalk/index.css">
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router@3.5.1/dist/vue-router.js"></script>
    <script src="https://unpkg.com/vuex@3.6.2/dist/vuex.js"></script>
	<script src="https://unpkg.com/axios@0.27.2/dist/axios.min.js"></script>
	<script src="https://unpkg.com/element-ui@2.15.12/lib/index.js"></script>
    <script src="https://unpkg.com/vuex-persistedstate@4.0.0/dist/vuex-persistedstate.umd.js"></script>
</head>

<body>
	<noscript>
		<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript
				enabled. Please enable it to continue.</strong>
	</noscript>
	<div id="app"></div>
	<!-- built files will be auto injected -->

</body>

</html>

store 中的 index.js

// import Vue from 'vue'
// import Vuex from 'vuex'
import user from './modules/user'
import getters from './getters'
// Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    user,
  },
  getters
})
export default store

这里的vue和vuex也注销掉 vue.use() 也不要 要不然在使用中会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue3超购项目的优化,可以从以下几个方面入手: 1. 使用 Tree Shaking:Tree Shaking是Webpack中的一项功能,可以通过它去除项目中未使用的代码,减小打包文件的体积。在Vue3超购项目中,可以使用Tree Shaking来移除未被使用Vue组件,指令和插件等,这样可以减小打包文件的大小,提高页面加载速度。 2. 骨架屏优化:在Vue3超购项目中,可以使用骨架屏技术来优化页面加载速度。骨架屏是一种加载占位图,可以在页面加载过程中展示,让用户感受到页面正在加载,避免出现长时间白屏的情况。 3. 图片优化:在Vue3超购项目中,图片是一个不可避免的元素。可以采用图片懒加载、按需加载等技术来优化图片加载速度,减少页面加载时间。 4. 组件懒加载:在Vue3超购项目中,可以将一些组件进行懒加载,只有在需要使用的时候再进行加载。这样可以减少首屏加载时间,提高页面加载速度。 5. CDN加速使用CDN(内容分发网络)可以将静态资源存储在离用户更近的服务器上,加速页面加载速度,降低服务器的压力。 6. SSR(服务器端渲染)优化:在Vue3超购项目中,可以采用SSR技术来优化SEO和首屏加载速度。SSR可以将页面的渲染工作放在服务器端进行,减少客户端渲染的时间,加快页面显示速度。 总之,以上这些优化措施可以在Vue3超购项目中起到明显的优化效果,提高页面加载速度,让用户能够更快地浏览网页,提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值