file-type

Vite.use模拟插件:本地与生产环境的模拟服务

ZIP文件

下载需积分: 43 | 163KB | 更新于2025-01-13 | 138 浏览量 | 5 下载量 举报 收藏
download 立即下载
该插件是基于Mockjs开发的,旨在简化前端开发中的数据模拟需求。Mockjs是一个轻量级的JavaScript库,用于生成模拟数据,广泛用于前端测试和模拟接口数据。 ### 标题知识点: - **Vite-plugin-mock**: 这是一个Vite的插件,专门用于在Vite项目中提供模拟数据。 - **模拟插件**: 指的是该插件能模拟后端数据,允许开发者在没有真实后端接口支持的情况下进行前端开发和测试。 - **本地和生产环境支持**: 插件支持开发者在本地开发环境和产品环境(生产环境)中使用模拟数据。 ### 描述知识点: - **安装方法**: 插件可以通过使用`yarn`或`npm`进行安装。具体命令为`yarn add vite-plugin-mock -D`或`npm i vite-plugin-mock -D`,同时需要安装Mockjs依赖。 - **Mockjs**: 插件是基于Mockjs开发的,这意味着它共享Mockjs的所有功能,可以创建各种随机数据,用于模拟后端接口。 - **Connect服务中间件**: 在本地开发环境中使用Connect中间件来实现服务。 - **mockjs在线使用**: 在产品环境中,通过网络直接使用mockjs提供的功能。 ### 标签知识点: - **TypeScript**: 标签表明该插件支持TypeScript语言,意味着在TypeScript项目中可以无缝使用该插件进行开发。 ### 压缩包子文件知识点: - **vite-plugin-mock-main**: 这是该插件的主要模块文件名,表明在压缩包中可以直接找到插件的核心功能文件。 ### 进一步说明: - **插件的作用**: 在前端开发中,后端接口往往还未完成,此时插件可以用来生成模拟数据,帮助前端开发者能够独立地开发和测试前端逻辑。 - **快速开始**: 插件提供了一个快速开始的例子,通过克隆项目中的示例文件夹,可以快速看到插件的使用效果。对于TypeScript示例,位于`ts-examples`文件夹下;对于JavaScript示例,位于`js-examples`文件夹下。 - **版本要求**: 使用该插件需要Node.js的版本大于等于12.0.0,且Vite-plugin-mock的版本号需要大于等于2.0.0。 ### 实际应用: 当开发者使用Vite-plugin-mock时,可以在项目的配置文件(如`vite.config.js`)中加入该插件配置,并通过配置文件中的设置来指定哪些接口需要返回模拟数据,从而实现在本地和生产环境中无缝切换模拟数据和实际数据。 ### 注意事项: - 开发者应当在开发阶段充分测试模拟数据的逻辑正确性,以避免在切换到真实数据后出现数据不一致的问题。 - 在生产环境中,应确保不会引入Mockjs库,或者在构建过程中排除mockjs相关代码,以避免影响生产环境的性能和安全性。 通过以上知识点的介绍,可以全面了解vite-plugin-mock的功能、使用场景、安装配置方法及与Mockjs的关系,进而更有效地在实际项目中应用这一插件。

相关推荐

filetype
filetype

import { resolve } from 'path'; import { loadEnv } from 'vite'; import type { UserConfig, ConfigEnv } from 'vite'; import Vue from '@vitejs/plugin-vue'; import VueJsx from '@vitejs/plugin-vue-jsx'; import progress from 'vite-plugin-progress'; import EslintPlugin from 'vite-plugin-eslint'; import { ViteEjsPlugin } from 'vite-plugin-ejs'; import { viteMockServe } from 'vite-plugin-mock'; import PurgeIcons from 'vite-plugin-purge-icons'; import ServerUrlCopy from 'vite-plugin-url-copy'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'; import { createStyleImportPlugin, ElementPlusResolve, } from 'vite-plugin-style-import'; import UnoCSS from 'unocss/vite'; import { visualizer } from 'rollup-plugin-visualizer'; // https://vitejs.dev/config/ import process from 'node:process'; import Federation from '@originjs/vite-plugin-federation'; import exposes from './exposes'; const root = process.cwd(); function pathResolve(dir: string) { return resolve(root, '.', dir); } export default ({ command, mode }: ConfigEnv): UserConfig => { let env = {} as any; const isBuild = command === 'build'; if (!isBuild) { env = loadEnv( process.argv[3] === '--mode' ? process.argv[4] : process.argv[3], root, ); } else { env = loadEnv(mode, root); } return { base: env.VITE_BASE_PATH, plugins: [ Vue({ script: { // 开启defineModel defineModel: true, }, }), VueJsx(), ServerUrlCopy(), progress(), env.VITE_USE_ALL_ELEMENT_PLUS_STYLE === 'false' ? createStyleImportPlugin({ resolves: [ElementPlusResolve()], libs: [ { libraryName: 'element-plus', esModule: true, resolveStyle: (name) => { if (name === 'click-outside') { return ''; } return `element-plus/es/components/${name.replace( /^el-/, '', )}/style/css`; }, }, ], }) : undefined, EslintPlugin({ cache: false, failOnWarning: false, failOnError: false, include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'], // 检查的文件 }), VueI18nPlugin({ // runtimeOnly: true, compositionOnly: true, include: [resolve(__dirname, 'src/locales/**')], }), createSvgIconsPlugin({ iconDirs: [pathResolve('src/assets/svgs')], symbolId: 'icon-[dir]-[name]', svgoOptions: true, }), PurgeIcons(), env.VITE_USE_MOCK === 'true' ? viteMockServe({ mockPath: 'mock', enable: !isBuild, }) : undefined, ViteEjsPlugin({ title: env.VITE_APP_TITLE, }), UnoCSS({ mode: 'global' }), Federation({ name: 'purchasecenter', filename: 'remoteEntry.js', exposes, }), ], css: { preprocessorOptions: { scss: { additionalData: '@use "@/styles/variables.module.scss" as *;', }, }, }, resolve: { extensions: [ '.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.less', '.css', ], alias: [ { find: 'vue-i18n', replacement: 'vue-i18n/dist/vue-i18n.cjs.js', }, { find: /\@\//, replacement: `${pathResolve('src')}/`, }, ], }, esbuild: { pure: env.VITE_DROP_CONSOLE === 'true' ? ['console.log'] : undefined, drop: env.VITE_DROP_DEBUGGER === 'true' ? ['debugger'] : undefined, }, build: { target: 'es2015', outDir: env.VITE_OUT_DIR || 'dist', sourcemap: env.VITE_SOURCEMAP === 'true', minify: false, // brotliSize: false, rollupOptions: { plugins: env.VITE_USE_BUNDLE_ANALYZER === 'true' ? [visualizer()] : undefined, // 拆包 output: { manualChunks: { 'vue-chunks': ['vue', 'vue-router', 'pinia', 'vue-i18n'], 'element-plus': ['element-plus'], 'wang-editor': ['@wangeditor/editor', '@wangeditor/editor-for-vue'], echarts: ['echarts', 'echarts-wordcloud'], }, }, }, cssCodeSplit: !(env.VITE_USE_CSS_SPLIT === 'false'), cssTarget: ['chrome31'], }, server: { port: 4000, proxy: { // 选项写法 '/api': { target: 'http://10.114.72.169:8080', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), }, '/be-saleslink-masterdata-product': { target: 'https://saleslink-dev.byd.com/', changeOrigin: true, }, // '/sales-link-masterdata': { // target: 'http://10.114.72.87:8080', // changeOrigin: true, // }, '/sales-purchase': { target: 'https://saleslink-dev.byd.com', // target: 'http://10.114.72.113:8080', changeOrigin: true, }, '/sales-vehicle': { target: 'https://saleslink-dev.byd.com', changeOrigin: true, }, '/sales-operation': { target: 'https://saleslink-dev.byd.com', // target: 'http://10.114.72.23:8080', changeOrigin: true, }, '/confcntr': { target: 'https://saleslink-dev.byd.com', changeOrigin: true, }, '/sales-stock': { target: 'https://saleslink-dev.byd.com', changeOrigin: true, }, '/saleslink-sku': { target: 'https://saleslink-dev.byd.com/', changeOrigin: true, secure: false, rewrite: (path) => path.replace(/^\/saleslink-sku/, ''), }, }, hmr: { overlay: false, }, host: '0.0.0.0', }, optimizeDeps: { include: [ 'vue', 'vue-router', 'vue-types', 'element-plus/es/locale/lang/zh-cn', 'element-plus/es/locale/lang/en', '@vueuse/core', 'axios', 'qs', 'echarts', 'echarts-wordcloud', 'qrcode', '@wangeditor/editor', '@wangeditor/editor-for-vue', 'vue-json-pretty', '@zxcvbn-ts/core', 'dayjs', 'cropperjs', ], }, }; }; 这是vite.config.ts 现在想要连接后端的本地,怎么修改

狛绝的追随者
  • 粉丝: 36
上传资源 快速赚钱