详解Vue.js项目API、Router配置拆分实践

这篇文章主要介绍了详解vue.js项目api、router配置拆分实践,现在分享给大家,也给大家做个参考。

前后端分离开发方式前端拥有更高的控制权

随着前端框架技术的飞速发展,Router这个概念也被迅速普及到前端项目中,在早期前后的没有分离的时期下,并没有明确的路由概念,前端页面跳转大多是通过后端进行请求转发的,比如在Spring MVC项目中,进行一个页面跳转如下(画红线部分):

详解Vue.js项目API、Router配置拆分实践

前端需要一个超链接,链接的href=/manager,这样这个超链接被转发到scs/waitFollowed路径指定的页面。

前后的分离后,前端页面跳转的方式发生了变化,不再需要后端处理了,数据交换方式也改变了,由此前端需要定义Router配置文件,需要定义API配置文件。在项目的权限配置管理中,完全不需要后端什么事了,可以说,权限配置表可以单独拿出来由前端维护了。

详解Vue.js项目API、Router配置拆分实践

比如这个url字段,在前后端不分离的情况下,严重依赖于后端,url就是后端接口地址,如果需要更改就需要后端修改代码修改接口地址,而现在,前端可以自由控制url的值是什么了。

立即学习“前端免费学习笔记(深入)”;

在接口层面,前端也会有自己的配置文件,可以对后端提供的接口进行重命名,组合等。比如

详解Vue.js项目API、Router配置拆分实践

前端都统一使用模块名+接口名的方式管理,管后端提供的接口叫啥已经不重要,在视觉上和维护上都比较方便。在页面上使用,查询起来也很直观:

详解Vue.js项目API、Router配置拆分实践

看到DISTRBUTE().Leads.dataGrid这个接口,就知道这是DISTRBUTE模块下Leasd功能下的列表查询接口

Vue.js中的API、Router配置

在Vue.js项目下,一开始我们只使用一个api.config.js配置文件,所有的接口都定义在这里面,router也一样,都配置在一个router.config.js中,下面是我们项目中API配置文件

详解Vue.js项目API、Router配置拆分实践

可以看到,很多的业务模块,很多的接口,已经达到了570多行,随着业务进一步推进,接口快速膨胀,文件越来越大。

这时候迫切需要拆分,把不同的业务模块单独拆分为一个个API配置文件。同样,我们来看看拆分前的Router配置文件:

详解Vue.js项目API、Router配置拆分实践

这样router一多最大的缺点就是会导致router命名冲突。

拆分!拆分!拆分!

首先考虑API配置文件怎么拆分,对于接口,我们肯定有多套环境,多套环境那么API的URL也不一样,拆分成多个文件后多个文件需要共用同一个获取apiBase的方法,所以这个apiBase就要写在公共的地方,在这里原来的api.config.js就变成了公共配置,apiBase就放在此文件内。

export function apiBase() { let hostname = window.location.hostname,  API_BASE_URL = 'http://test2api.dunizb.com';//默认环境 if(hostname === 'crm.dunizb.cn') { //正式环境  API_BASE_URL = 'http://api.dunizb.cn'; } else if(hostname === 'admin.dunizb.com') {//公网测试环境  API_BASE_URL = 'http://testapi.dunizb.com'; } else if(hostname === 'manager.dunizb.com') {//内网测试环境  API_BASE_URL = 'http://test2api.dunizb.com'; } return API_BASE_URL;}

登录后复制

然后在每个子API配置文件中引入即可:

import {apiBase} from '../api.config';

登录后复制

具体功能API不需要更改,直接拷贝相应模块API到子模块API配置文件即可。

详解Vue.js项目API、Router配置拆分实践

Router的拆分稍微复杂一点,拆分后的文件目录与API的目录相同:

详解Vue.js项目API、Router配置拆分实践

拆分思路也完全一样,但要保证只有一个router.start即:

return router.start(App, '#app');

登录后复制

虽然你在子router配置文件中也写上页面是能正常工作的,但是Vue.js会在控制台报一个错误:

详解Vue.js项目API、Router配置拆分实践

这个错误的意思就是router已经启动,无需启动多次。所以,子router文件中不能存在 return router.start(App, ‘#app’); 这样的代码。

拆分后router.config.js内容如下:

/** * 路由总文件 * Created by Bing on 2017/6/19 0019. */import App from './App';import authority from './routers/authority';import publics from './routers/public';import study from './routers/study';... ...export default function(router){ authority(router);//基础与权限模块 publics(router);//公共模块 study(router);//教学相关 ... ... return router.start(App, '#app');}

登录后复制

而子router配置文件的写法就是这样(以study模块为例):

/** * 教学排课 * 教研 * Created by Bing on 2017/6/19 0019. */import courseIndex from 'components/studyCourse/index/index';import waitCourse from 'components/studyCourse/waitCourse/waitCourse';import alreadyCourse from 'components/studyCourse/alreadyCourse/alreadyCourse';import gearCourse from 'components/studyCourse/waitCourse/gearCourse';import courseWare from 'components/teachingResearch/courseware/courseware.vue';import courseWareLibrary from 'components/teachingResearch/courseware/library.vue';export default function(router) { router.map({  '/study/index': {component: courseIndex},  '/study/waitCourse': {component: waitCourse},//待排课程  '/study/waitCourse/gearCourse': {component: gearCourse},//待排  '/study/course': {component: alreadyCourse},//已排课程  '/tr/courseware': {component: courseWare},//课件管理  '/tr/courseWare/library': {component: courseWareLibrary},//自主上传课件库 });}

登录后复制

拆分后,每个模块管理它自己领域的router、api,router.config.js和api.config.js就大大瘦身了,也降低了命名冲突的问题和将来混乱的问题。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

js传递数组参数到后台controller的方法

Vue.js 表单控件操作小结

Vue.js实现可配置的登录表单代码详解

以上就是详解Vue.js项目API、Router配置拆分实践的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2754145.html

(0)
上一篇 2025年3月8日 06:51:03
下一篇 2025年3月8日 06:51:17

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS中有哪些常用数学函数?

    这次给大家带来JS中有哪些常用数学函数?,JS中实现数学函数的注意事项有哪些,下面就是实战案例,一起来看一下。 一、代码 <!–document.write("欧拉常数e的值为(e属性):"+Math.E+&qu…

    编程技术 2025年3月8日
    200
  • NodeJS实现不可逆加密与密码密文保存的方法

    这篇文章主要介绍了nodejs实现不可逆加密与密码密文保存的方法,简单讲述了不可逆加密与密码密文保存的原理并结合实例形式分析了nodejs相关加密操作实现技巧,需要的朋友可以参考下 本文实例讲述了NodeJS实现不可逆加密与密码密文保存的方…

    编程技术 2025年3月8日
    200
  • JS里常见内置函数使用详解

    这次给大家带来JS里常见内置函数使用详解,JS里常见内置函数使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一、介绍 在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是…

    编程技术 2025年3月8日
    200
  • javaScript中"=="和"==="的区别详解

    对于javascript中比较运算符,可能大家用的比较多的是“==”、对于“===”很多人可能很陌生。=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等;== 表示相等即仅仅比较两边变量的数值是否相等。 …

    编程技术 2025年3月8日
    200
  • node.js博客项目开发手记

    本篇文章给大家总结了node.js博客项目开发的相关步骤以及知识点分享,有兴趣的朋友参考下。 需要安装的模块 body-parser 解析post请求 cookies 读写cookie express 搭建服务器 markdown Mark…

    编程技术 2025年3月8日
    200
  • nodejs简单读写excel内容的方法示例

    这篇文章主要介绍了nodejs简单读写excel内容的方法,简单分析了nodejs常见的读写excel模块,并结合实例形式分析了nodejs读写excel具体操作技巧,需要的朋友可以参考下 本文实例讲述了nodejs简单读写excel内容的…

    编程技术 2025年3月8日
    200
  • JavaScript 隐性类型转换步骤浅析

    隐性类型转换,是==引起的转换,下面通过本文给大家分享javascript 隐性类型转换步骤,感兴趣的朋友一起看看吧 这里说的隐性类型转换,是==引起的转换。 如果存在NaN,一律返回false 再看有没有布尔,有布尔就将布尔转换为数字 接…

    编程技术 2025年3月8日
    200
  • 如何使用js封装ajax功能函数与用法

    这次给大家带来如何使用js封装ajax功能函数与用法,使用js封装ajax功能函数与用法的注意事项有哪些,下面就是实战案例,一起来看一下。 AJAX = Asynchronous JavaScript and XML(异步的 JavaScr…

    编程技术 2025年3月8日
    200
  • JS对于DOM节点进行增删改查

    这次给大家带来JS对于DOM节点进行增删改查,JS对于DOM节点进行增删改查的注意事项有哪些,下面就是实战案例,一起来看一下。 DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,…

    编程技术 2025年3月8日
    200
  • 怎样使用vue引入js数字小键盘

    这次给大家带来怎样使用vue引入js数字小键盘,使用vue引入js数字小键盘的注意事项有哪些,下面就是实战案例,一起来看一下。 效果如图: 代码如下:   keyboard.vue 123 符 · {{key}} import clicko…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论