vue2企业级项目(三)

这篇具有很好参考价值的文章主要介绍了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;
      };
    
      // 分页获取list
      this.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 };
      };
    
      // 检查是否携带token
      this.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. 动态切换语言包文章来源地址https://www.toymoban.com/news/detail-620199.html

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

到了这里,关于vue2企业级项目(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3.0 项目启动(打造企业级音乐App)

    内容 参考链接 Vue3.0 项目启动 Vue3.0 项目启动(打造企业级音乐App) Vue3.0项目——打造企业级音乐App(一) Tab栏、轮播图、歌单列表、滚动组件 Vue3.0项目——打造企业级音乐App(二) 图片懒加载、v-loading指令的开发和优化 2020年09月18日,vue3.0 版本正式发布。这意味着在未来

    2023年04月08日
    浏览(43)
  • Vue.js与ASP.NET的结合,实现企业级应用的开发和部署

    在当今快速发展的互联网技术领域,企业级应用的开发和部署变得越来越重要。Vue.js和ASP.NET是两个在前端和后端开发中广泛使用的技术,将它们结合起来可以为企业级应用的开发和部署带来诸多优势。本文将通过代码示例介绍如何使用Vue.js和ASP.NET进行企业级应用的开发和部

    2024年02月14日
    浏览(46)
  • Vue.js 与 ViewDesign:为企业级 Web 应用提供高效可靠的解决方案

    在当今瞬息万变的商业环境中,企业需要高效、稳定且易于维护的 Web 应用程序来支持其日常运营和业务发展。幸运的是,Vue.js 和 ViewDesign 的强大组合为开发人员提供了构建复杂企业级 Web 应用程序的完美解决方案。 Vue.js 是一个开源的渐进式 JavaScript 框架,专为构建用户界面而生

    2024年03月11日
    浏览(42)
  • Vue3 + Vite2 + TypeScript4搭建企业级项目框架

    1. 创建项目 使用命令行工具进入到你想要创建项目的目录,然后执行以下命令: 这将会创建一个新的项目文件夹和一个 package.json 文件。 2. 安装依赖 接下来你需要在项目中安装 Vue、Vite、TypeScript 和其他需要的依赖。执行以下命令: 以上命令会安装最新的 Vue、Vite 和 TypeSc

    2024年02月08日
    浏览(64)
  • java项目分享 - 基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现

    基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 前端:vue-projectManage 后台:mycloud-admin 提供前端服务:mycloud 文件在线预览服务:file-online-preview 编程语言:Java、Mybatis、Spring、SpringBoot、SpringCloud、Node、Vue 开发环

    2024年02月05日
    浏览(58)
  • 毕业设计项目 基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现

    基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 前端:vue-projectManage 后台:mycloud-admin 提供前端服务:mycloud 文件在线预览服务:file-online-preview 编程语言:Java、Mybatis、Spring、SpringBoot、SpringCloud、Node、Vue 开发环

    2024年04月24日
    浏览(58)
  • Vue3.0项目——打造企业级音乐App(一)Tab栏、轮播图、歌单列表、滚动组件

    内容 参考链接 Vue3.0 项目启动 Vue3.0 项目启动(打造企业级音乐App) Vue3.0项目——打造企业级音乐App(一) Tab栏、轮播图、歌单列表、滚动组件 Vue3.0项目——打造企业级音乐App(二) 图片懒加载、v-loading指令的开发和优化 vue3.0-music 该项目为移动端的项目,我们要设置缩放

    2023年04月11日
    浏览(48)
  • 前端食堂技术周刊第 85 期:5 月浏览器更新、TypeScript 5.1、Rspack 0.2.0、Parcel v2.9.0、Next.js 企业级模板

    美味值:🌟🌟🌟🌟🌟 口味:龙井酥 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 5 月登陆浏览器的新功能 TypeScript 5.1 Rspack 0.2.0 Parcel v2.9.0 Next.js 企业级模板 SupportsCSS useHooks 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下上周的技术资讯。 Firefox 1

    2024年02月08日
    浏览(49)
  • 【实战】 TS 应用:JS神助攻 - 强类型 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(三)

    学习内容来源:React + React Hook + TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.03)采用的是当前最新版本: 项 版本 react react-dom ^18.2.0 react-router react-router-dom ^6.11.2 antd ^4.24.8 @commitlint/cli @commitlint/config-conventional ^17.4.4 eslint-config-prettier ^8.6.0 husky ^8.0.3 lint-staged ^13.1.2 p

    2024年02月09日
    浏览(48)
  • 毕业设计项目:基于SpringBoot+Hadoop+Vue企业级网盘分布式系统的设计与实现

    2.1 运行环境 2.2 基本处理流程 企业网盘系统的使用者分为企业普通员工和企业管理员,所以进行的基本处理流程是不一样的。企业普通员工进入本系统前台主界面后看到的是首页数据大盘,系统右上角有用户的头像和系统公告通知。在首页顶部的位置有个欢迎用户功能,此模

    2024年02月05日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包