当前位置: 首页 > news >正文

vue2企业级项目(三)

vue2企业级项目(三)

引入mockjs,i18n

1、mockjs

  1. 项目下载依赖

    npm install --save-dev mock
    
  2. 根目录创建mock文件夹,并创建mock/index.js

    import Mock from "mockjs";// 设置全局延时 没有延时的话有时候会检测不到数据变化 建议保留
    Mock.setup({timeout: "300-600",
    });// 引入全部的modules内全部js文件,并分流进行处理
    const modulesFiles = require.context("./modules", true, /\.js$/);
    const modules = modulesFiles.keys().reduce((modules, modulePath) => {const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1"); // 正则提取子文件名称const value = modulesFiles(modulePath); // 获取文件对象modules[moduleName] = value.default; // 获取文件默认导出return modules;
    }, {});// 动态添加mock
    for (let fileName in modules) {// 因为mock匹配规则是从上到下的,所以要对path长度进行排序// 避免提前匹配导致错误问题modules[fileName].sort((last, next) => next.path.length - last.path.length,);// 添加mock匹配规则modules[fileName].forEach((item) => {let regexp = new RegExp(process.env.VUE_APP_PREFIX + item.path);Mock.mock(regexp, item.method, item.dispose.action);});
    }// mock验证 - 给ajax用的
    export function proxyValid(url, method, date) {for (let fileName in modules) {modules[fileName].forEach((item) => {if (item.path === url && item.method === method) {const validRes = Mock.valid(item.dispose.template, date);if (validRes && validRes.length === 0) return true; // 验证通过// 验证不通过console.group(url.replace(/http:\/\//, ""));console.log("valid response data :>>> url: ", url);console.log("valid response data :>>> validMsg: ", validRes);console.groupEnd();}});}
    }// mockRandom继承添加创出电话号码
    Mock.Random.extend({phone: function() {let phonePrefix = ["132", "135", "189", "135", "189"]; // 自己写前缀哈return Mock.Random.pick(phonePrefix) + Mock.mock(/\d{8}/); // Number()},
    });export default Mock;
    
  3. 创建mock/mockPort.js

    import Qs from "qs";
    import { checkDataType } from "@/utils/utils";function MockPort({ template, action }) {this.template = template; // 模板this.action = action.bind(this); // 返回值// 解析返回get参数方法this.queryBackRes = function(url = "") {const urlArr = url.split("?");const dataString = urlArr[1] || "";return Qs.parse(dataString);};// 解析返回post参数方法this.paramsBackRes = function(body) {if (checkDataType(body, "string")) return JSON.parse(body);else return body;};// 分页获取listthis.getPagingList = function(pagination, list) {let { pageNumber, pageSize } = pagination;const startIndex = (pageNumber - 1) * pageSize; // 开始截取位置const endIndx = pageNumber * pageSize; // 结束截取位置const totalPages = Math.ceil(list.length / pageSize); // 总页码数let rows =pageNumber > totalPages ? [] : list.slice(startIndex, endIndx);return { rows, total: list.length };};// 检查是否携带tokenthis.checkToken = function(options, resObj) {let query = this.queryBackRes(options.url);if (query.id_token === "123456789") return resObj;return {statusCode: 401,code: -1,msg: "账户验证失败,请重新登录",data: null,};}.bind(this);
    }export default MockPort;
    
  4. 创建mock/modules/test.js示例

    import MockPort from "../mockPort"; // 解析获取git数据function testGet() {return new MockPort({template: {status: 1,data: "test",},action(options) {let query = this.queryBackRes(options.url);this.template.data += query;return this.template;},});
    }function testPost() {return new MockPort({template: {status: 1,data: "test",},action(options) {let query = this.paramsBackRes(options.body);this.template.data += query;return this.template;},});
    }export default [{ path: "/testGet", method: "get", dispose: testGet() },{ path: "/testPost", method: "post", dispose: testPost() },
    ];
    
  5. src目录下创建api/mock.js示例

    import request from "@/utils/request.js";export const testGet = (params) => request.get("/testGet", params);
    export const testPost = (params) => request.post("/testPost", params);
    
  6. main.js添加一下内容

    ...if (process.env.NODE_ENV === "development") require("../mock/index");
    ...
    
  7. 根目录创建vue.config.js

    module.exports = {devServer: {open: true,port: "8080",overlay: {warning: false,error: false,},},
    };
    

2、i18n

  1. 项目下载依赖

    npm install vue-i18n@8.26.2 --save
    
  2. src目录下创建i18n/index.js文件

    import Vue from "vue";
    import VueI18n from "vue-i18n";
    import { getStorage } from "@/utils/storage.js";Vue.use(VueI18n);// 自动引入modules文件
    const modulesFiles = require.context("./modules", true, /\.js$/);const messages = modulesFiles.keys().reduce((modules, modulePath) => {const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");const value = modulesFiles(modulePath);modules[moduleName] = value.default;return modules;
    }, {});const i18n = new VueI18n({locale: getStorage("local") || process.env.VUE_APP_locale,messages,
    });export default i18n;
  3. main.js引入使用i18n,和vuex生成的store是一样的

  4. 创建i18n/modules/en.jsi18n/modules/zh.js

    /***********en.js***************/
    export default {hello: "Hello",
    };/***********zh.js***************/
    export default {hello: "你好",
    };
  5. 动态切换语言包

    changeLanguage(type) {this.$i18n.local = type ? "en" : "zh"
    }
    

相关文章:

vue2企业级项目(三)

vue2企业级项目(三) 引入mockjs,i18n 1、mockjs 项目下载依赖 npm install --save-dev mock根目录创建mock文件夹,并创建mock/index.js import Mock from "mockjs";// 设置全局延时 没有延时的话有时候会检测不到数据…...

QT 在label上透明绘图

一、新建TransparentDemo工程 二、在界面上添加label,修改样式表,将底色置为红色,作为北京 三、新建一个TransparentLabel类,继承自QLabel 此时,工程包括文件 五、在transparentlabel.h中添加 头文件 #include …...

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文:https://arxiv.org/abs/2305.08196 25页综述,198篇参考文献!52个开源项目!本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展,…...

金融翻译难吗,如何做好金融翻译?

我们知道,金融翻译涉及企业经济这块的,是影响各公司发展很重要的一方面,翻译做得好,可以促进公司内外的交流,及时掌握各种信息,做好应对。那么,金融翻译难吗,如何做好金融翻译&#…...

Java面试题(Tomcat与Nginx)

Tomcat 什么是Tomcat&#xff1f; 简单来说是一个运行Java的网络服务器&#xff0c;也是jsp和serlvet的一个容器 Tomcat的缺省端口是多少&#xff0c;怎么修改? conf文件夹下修改server.xml文件 <Connector connectionTimeout"20000" port"8080" p…...

React-使用mobx

React 中使用 mobx 配置开发环境 安装mobx和中间件工具 mobx-react-lite 只能函数组件中使用 yarn add mobx mobx-react-lite初始化 mobx 定义数据状态 state在构造器中实现数据响应式处理 makeAutoObservble定义修改数据的函数 action实例化 store 并导出 import { compute…...

LeetCode ACM模式——哈希表篇(一)

刷题顺序及部分思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 部分思路来源于力扣官方题解&#xff0c;作者主页&#xff1a;https://leetcode.cn/u/leetcode-solution/ 242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个…...

WPF实战学习笔记31-登录界面全局通知

UI添加消息聚合器 <md:Snackbarx:Name"LoginSnakeBar"Grid.ColumnSpan"2"Panel.ZIndex"1"MessageQueue"{md:MessageQueue}" />注册提示消息 文件&#xff1a;Mytodo.Views.LoginView.cs构造函数添加内容 //注册提示消息 aggre…...

通用商城项目(中)

金山编译器出问题了。下面段落标号全出问题了&#xff0c;排版也出问题了。懒得改了。 使用对象存储OSS&#xff0c;保存品牌logo 新建Module&#xff0c;提供上传、显示服务 有些不明所以的&#xff0c;按照steinliving-commodity配置了一通pom.xml 新建application.yml&…...

谨慎使用JSON.stringify

谨慎使用JSON.stringify 为了避免因为对象是引用类型而造成的数据源污染&#xff0c;我们通常使用 JSON.stringify 将其转换为字符串&#xff0c;而后通过JSON.parse方法将字符串转化一个新对象来实现深拷贝。但是在这个过程中也会存在一些问题&#xff0c;本文就介绍一下使用…...

驱动开发day8

编写LED灯的驱动&#xff0c;使用GPIO子系统&#xff0c;里面添加按键的中断处理 1.应用程序发送指令控制LED亮灭 2.按键1 按下&#xff0c;led1电位反转 按键2按下&#xff0c;led2电位反转 按键3 按下&#xff0c;led3电位反转 驱动程序 #include <linux/init.h> #i…...

CAS 机制

问题分析与思考&#xff1a; CAS 是 Java 中 Unsafe 类里面的方法&#xff0c;它的全称是 CompareAndSwap&#xff0c;比较并交换 的意思。 它的主要功能是能够保证在多线程环境下&#xff0c;对于共享变量的修改的原子性。 举个例子&#xff0c;比如说有这样一个场景&#xff…...

#P1003. [NOIP2009普及组] 道路游戏

题目描述 小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路&#xff0c;马路上有 nn 个机器人工厂&#xff0c;两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点&#xff0c;按顺时针顺序依次将这 nn 个机器人工厂编号为 1\sim n1∼n&#xff0c;因…...

python-网络爬虫.regular

regular 正则表达式 (regular expression) 正则表达式(regular expression)描述了一种字符串匹配的模式 &#xff08;pattern&#xff09;&#xff0c; 可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串 中取出符合某个条件的子串等。 正则表达式是由普通…...

手动搭建gateway,项目集成gateway实现Token效果

目录 背景步骤1、首先创建springboot项目2、引入依赖3、配置文件&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;超级重要&#xff01;&#xff01;&#xff01;根据自己的需要进行配置&#xff09;4、相关类我们在服务中进行的白名单中接口的操作如…...

linux下SVN服务器搭建

在本教程中&#xff0c;我们将介绍如何在Linux系统下搭建Subversion&#xff08;SVN&#xff09;服务器。Subversion是一种流行的版本控制系统&#xff0c;它允许多个人在同一项目上进行协作&#xff0c;同时避免了他们各自的更改发生冲突。 安装SVN 在大多数Linux发行版中&am…...

技术等级 TRL 定义

“不同环境、不同目标下TRL表述不一样” 技术等级 TRL 定义 TRL1 基本原理提出和发现 TRL2 技术应用研究 TRL3 完成概念验证&#xff0c;如叶栅试验、燃烧室头部试验等 TRL4 完成模拟部件试验&#xff0e;如压气机性能试验&#xff0c;燃烧室扇形试验 TRL5 完…...

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统&#xff0c;具有持续集成、持续部署、微服务治理等功能&#xff0c;无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用&#xff0c;主要特点&#xff1a;部署简单、操作简洁、功能快速。 新增特…...

Redis - 缓存的双写一致性

概念&#xff1a; 当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致 那为什么会有不一致的情况呢&#xff1f; 如果不追求一致性&#xff0c;正常有两种做法 先修改数据库 后删除旧的缓存先删除旧的缓存 再修改数据库 我们以先删除旧的…...

opencv03-Mat矩阵API的使用

opencv03-Mat矩阵API的使用 构造方法(具体介绍看API文档) int main() {Mat m1 Mat(200, 100, CV_8UC1);imshow("o1", m1);Mat m2 Mat(Size(100, 200), CV_8UC1);imshow("o2", m2);Mat m3 Mat(200, 100, CV_8UC3, Scalar(255, 0, 0));imshow("o3&…...

终极B站视频下载指南:BilibiliDown一键解锁高清视频下载

终极B站视频下载指南&#xff1a;BilibiliDown一键解锁高清视频下载 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

Nordic nRF52832蓝牙串口实战:手把手教你用SDK 15.3.0实现手机与设备双向通信

Nordic nRF52832蓝牙串口开发实战&#xff1a;从SDK配置到双向通信全解析 在嵌入式蓝牙开发领域&#xff0c;Nordic的nRF52832芯片凭借其优异的射频性能和丰富的外设资源&#xff0c;成为物联网设备开发的明星选择。但对于刚接触这款芯片的开发者来说&#xff0c;如何快速实现手…...

技能与代码审计融合实践:构建安全开发思维与实战靶场

1. 项目概述&#xff1a;技能与代码审计的融合实践最近在和一些做安全开发的朋友聊天&#xff0c;大家普遍有个感受&#xff1a;现在单纯会写代码&#xff0c;或者单纯懂点安全皮毛&#xff0c;已经越来越不够用了。一个功能上线&#xff0c;开发觉得逻辑完美&#xff0c;但安全…...

STM32CubeMX+STM32CubeIDE:STM32G030F6P6TR的免费开发生态入门

STM32G030F6P6TR&#xff1a;超值型Cortex-M0 MCU如何以最小封装实现64MHz性能突破在嵌入式系统设计中&#xff0c;“性价比”往往意味着在某些关键指标上的妥协——更小的封装通常伴随更低的主频或更少的外设。然而&#xff0c;STM32G0系列的推出打破了这一行业惯例。STM32G03…...

保姆级教程:用Python和go-cqhttp给QQ群做个自动回复机器人(附完整代码)

从零构建智能QQ群机器人&#xff1a;Python与go-cqhttp实战指南 在社群运营中&#xff0c;自动回复机器人早已成为提升管理效率的利器。无论是处理高频咨询、新人引导&#xff0c;还是定时发布公告&#xff0c;一个配置得当的机器人能显著减轻管理员负担。本文将带你深入探索如…...

特斯拉Model 3车主必看:用华为随行WiFi+流量卡,低成本搞定车载WiFi(附Type-C供电方案)

特斯拉Model 3车主必看&#xff1a;低成本车载WiFi实战指南 特斯拉Model 3的车载娱乐系统依赖网络连接&#xff0c;但官方高级娱乐服务的月费让不少车主犹豫。更糟的是&#xff0c;部分地区的4G信号覆盖不佳&#xff0c;导致在线音乐、实时路况等功能形同虚设。本文将分享一套经…...

基于HT1632C的LED矩阵屏级联驱动与Arduino应用实战

1. 项目概述&#xff1a;从点阵到信息墙 玩过单片机的朋友&#xff0c;对LED点阵屏应该都不陌生。从最简单的8x8单色点阵&#xff0c;到复杂的全彩大屏&#xff0c;其核心逻辑始终如一&#xff1a;通过精确控制成千上万个微小LED的亮灭&#xff0c;来拼凑出我们想要的图案、文字…...

远程团队绩效管理系统的终极指南:如何打造高效协作的分布式团队

远程团队绩效管理系统的终极指南&#xff1a;如何打造高效协作的分布式团队 【免费下载链接】remote-working 收集整理远程工作相关的资料 项目地址: https://gitcode.com/gh_mirrors/re/remote-working 在数字化转型加速的今天&#xff0c;远程工作已从选择变为必需。G…...

Nginx Server Configs:微服务网关API管理与路由配置终极指南 [特殊字符]

Nginx Server Configs&#xff1a;微服务网关API管理与路由配置终极指南 &#x1f680; 【免费下载链接】server-configs-nginx Nginx HTTP server boilerplate configs 项目地址: https://gitcode.com/gh_mirrors/se/server-configs-nginx 在当今微服务架构盛行的时代&…...

Java大模型开发:核心疑问与落地指南

&#xfeff;Java生态对接AI大模型已成为企业智能化转型的热门方向&#xff0c;结合JBoltAI的实践经验&#xff0c;整理了开发者最关心的核心问答&#xff0c;帮你少走弯路。问&#xff1a;Java做人工智能&#xff0c;核心优势在哪&#xff1f;适合什么场景&#xff1f;答&…...