文章目录
-
- 静态资源分两种情况:
- 解决办法
-
- 使用前置条件
- 引入静态资源的场景案例:
静态资源分两种情况:
- 第三方资源,需要从
node_module 中引用,这个vite脚手架会帮我们移动到工程目录\node_modules\.vite_opt_cache 目录中 - 当前工程的静态资源文件,例如:图片
解决办法
使用前置条件
- 配置目录别名,方便引用(本地工程静态资源的引用)
vite.config.js配置如下
1 2 3 4 5 6 7 | module.exports = {<!-- --> alias: {<!-- --> // 键必须以斜线开始和结束 '/@/': path.resolve(__dirname, './src') // '/@components/': path.resolve(__dirname, './src/components') } } |
- 如果是引入第三方文件,则需要引入第三方文件
vite.config.js 配置信息如下:
1 2 3 4 5 6 | module.exports = {<!-- --> // 引入第三方的配置 optimizeDeps: {<!-- --> include: ["moment", "echarts", "axios", "mockjs"] } } |
会将引入的第三方文件移动到
- 总的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | const path = require('path') // vite.config.js # or vite.config.ts console.log(path.resolve(__dirname, './src')) module.exports = {<!-- --> // 引入第三方的配置 optimizeDeps: {<!-- --> include: ["moment", "echarts", "axios", "mockjs"] }, alias: {<!-- --> // 键必须以斜线开始和结束 '/@/': path.resolve(__dirname, './src') // '/@components/': path.resolve(__dirname, './src/components') } } |
引入静态资源的场景案例:
- Vue文件引入其他Vue文件作为组件
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 71 72 73 74 | <template> <div class="screen" v-if="isShowScreen"> <!-- 大屏头部 --> <ScreenHeader></ScreenHeader> <div class="screen--main"> <!-- 大屏第一列 --> <div class="screen--main__item screen--main__column1"> <Column1First></Column1First> <Column1Second></Column1Second> </div> <!-- 大屏第二列 --> <div class="screen--main__item screen--main__column2"> <CenterMap></CenterMap> </div> <!-- 大屏第三列 --> <div class="screen--main__item screen--main__column3"> <Column3First></Column3First> <Column3Second></Column3Second> </div> <!-- 大屏第四列 --> <div class="screen--main__item screen--main__column4"> <Column4First></Column4First> </div> </div> </div> </template> <script> // 一定要以“/”开头 import Column1First from '/@/pages/screen/column1/Column1First.vue' import Column1Second from '/@/pages/screen/column1/Column1Second.vue' import CenterMap from '/@/pages/screen/column2/CenterMap.vue' import Column3First from '/@/pages/screen/column3/Column3First.vue' import Column3Second from '/@/pages/screen/column3/Column3Second.vue' import Column4First from '/@/pages/screen/column4/Column4First.vue' import ScreenHeader from './ScreenHeader.vue' import * as API from '/@/api/apiConfig.js' export default {<!-- --> data () {<!-- --> return {<!-- --> isShowScreen: false, changeTime: 5 * 60 * 1000 // changeTime: 4 * 1000 } }, provide: function () {<!-- --> return {<!-- --> screenContext: this } }, components: {<!-- --> ScreenHeader, Column4First, Column3Second, Column3First, CenterMap, Column1First, Column1Second }, async mounted () {<!-- --> await this.getChangeType() }, methods: {<!-- --> getChangeType () {<!-- --> API.getChangeTypeService().then(res => {<!-- --> // this.changeTime = res.data.changeTime * 60 * 1000 this.changeTime = 5 * 60 * 1000 this.isShowScreen = true }) } } } </script> |
- 在Vue文件中引用第三方文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // 获取粉丝数量 import Mock from 'mockjs' const ctx = 'myproject' // 获取销售占比,当月总销售 Mock.mock(RegExp(`/${<!-- -->ctx}/api/v1/tickets/getSaleNum` + '*'), {<!-- --> code: '0', msg: 'success', data: {<!-- --> handRate: '33', onlineRate: '67.0', totalTicket: 794561670 } }) |
- 在html静态页面中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" href="/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 使用相对路径引用 --> <!-- <script src="/src/assets/js/echarts.min.js"></script> <script src="/src/assets/js/china.js"></script> --> <!-- 使用vite 转换引用 --> <script src="/@/assets/js/echarts.min.js"></script> <script src="/@/assets/js/china.js"></script> <title>Vite App</title> </head> <body> <div id="app"></div> <script type="module" src="/src/main.js"></script> </body> </html> |
- 在css 样式 style中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | <style lang="scss"> .progress {<!-- --> position: relative; margin-top: 0.1rem; &--all {<!-- --> background-color: #fff; width: 100%; height: 0.12rem; background-image: url('/@/assets/images/screen/IntervalLinebg.svg'); background-repeat: repeat; } } </style> |
- 在html 中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <template> <div class="Column3SecondOne"> <!-- 性别统计 --> <div class="Column3SecondOne--sex"> <div class="title-header"> <img src="/@/assets/images/screen/title-short-bg.png" /> <span class="label">男女比例</span> </div> <IntervalLineProgress :options="sexStatics"></IntervalLineProgress> </div> <!-- 是否组团统计 --> <div class="Column3SecondOne--isgroup"> <div class="title-header"> <img src="/@/assets/images/screen/title-short-bg.png" /> <span class="label">散客、团队人数占比</span> </div> <IntervalLineProgress :options="groupStatics"></IntervalLineProgress> </div> </div> </template> |