zoukankan      html  css  js  c++  java
  • 06-敏捷开发框架-apis 脚本库 引用位置无关性设计

    动态引入技术的设计,对我们来说非常重要。

    同时也说明动态语言的使用对我们来说也是非常重要。

    没有动态语言的支撑,有些想法可能不容易实现,或者有替代方案,可能会花更大的代价。

     

     

    前端开发框架我们规划设计了 apis文件夹

    这个文件夹是用来存放所有的api定义的

    规范要求

    所有的api定义都是名动词

    同时按照各个实体分别建立对应的js文件

     

    例如 Contract.js  里面就是关于合同的相关 api

    例如 Company.js 里面就是关于公司的相关 api

    Contract.js 里面就是

    ContractLoad     合同加载

    ContractSave     合同保存

    ContractDelete  合同删除

    ContractSearch  合同查询

    ContractApply   合同申请

    ContractBack     合同退回

    ……

     

     

    image.png

    规范就是全部放在 apis文件夹内

    软件项目是动态变化,

    如上一开始规模可能不是那么大的时候这个10几个js都放一个目录里面是没有任何问题的。

     

    问题是随着时间的变化,项目的变化,可能又有10个

    这时候这个文件夹里面的内容有点多,那么感觉需要有子文件夹进行分门别类的管理会更好。

    但是这些js都是被具体的某个页面,或者多个页面引用的。

    从代码重构的角度看,重新规划下目录结构是非常合适的。

    但是,可能考虑到同时又要调整

    image.png

    可能存在多个页面都引用这个js,那么就非常容易造成修改遗漏的情况发生。

     

    如果能够做到页面引用和文件位置不相关就好了。

    如果这样的话,就可以根据需要,尝试不断的调整。

    为什么要调整,这个重构的需要,动态发展变化的需要。

    不能归结于一开始没有规划到位的问题,在当前的规模、当时的情况是非常到位的。

     

    如果能够做到位置和引用无关,那么我们的重构才能得以实施。否则只能看着代码一天一天发展成自己讨厌的样子。

    引用地址如下

    image.png

    如何才能做到,不相关,这就成了设计的关键。

    为了达到这个终极目标。

    不相关,意思就是可能哪天放A目录、哪天感觉不合适调整到B目录

    这是一个动态的,那么这块的引入也就需要设计成动态的,不能如上图静态硬编码了。

     

    如何实现动态

    敏捷开发框架提供如下的加载方式

     

    image.png

    Apis.Load 后台动态加载

    业务页面只管,我这个页面需要用到 RuleCompany.js

    那么就如上写,完全不关心,这个 js文件的位置,框架自动帮忙搞定。

    如果一个页面依赖多个呢,如下图,逗号分隔。

    image.png

     

     

     如上图,我们的业务代码就和apis  js 文件的位置实现了解耦。

     要想正确运行,运行时,肯定是要引用正确位置的文件。

    这全部交给框架的 ApiManager来管理。

    ApiManager在应用程序初始化的时候,会自动收集所有 实体对应的js文件所在的目录

    创建一个Map地图

    Apis.Load 方法 根据运行时的Map 自动找寻到正确的路径,保证项目的正确运行。

     

     

    最后我们的代码如下,截几个实际的例子:

    image.png

    如上图,这是我们的产品查询画面,产品查询画面需要调用产品相关的api 如 apis.ProductInfoSearch  

    apis.ProductInfoDelete

     

    所以,我们动态 Apis.Load("ProductInfo")

     

     

    image.png

    上图是企业编辑画面,Apis.Load("Enterprise")

     

    引用和位置无关特性,为未来通向未来设计了一条康庄大道,让在apis管理上提供了重构的可能。

    所谓的重构是 在需要的时候动手,不需要的时候不能过多的考虑,否则叫过度设计。

    但需要留有修改的可能,Api js引用和位置无关特性就是预设的伏笔。

  • 相关阅读:
    Spring Security11、登录用户管理
    Spring Security10、账号登录并发控制
    win10下怎么打开notepad++多个实例
    gnu make
    es学习记录
    upj
    JConsole连接远程Java进程
    常用的几种成本核算方法
    SQL SERVER 统计字符串中某字符出现的次数
    centos误删除系统自带的python解决方法
  • 原文地址:https://www.cnblogs.com/godmodel/p/13283239.html
Copyright © 2011-2022 走看看