文档章节

06-敏捷开发框架-apis 脚本库 引用位置无关性设计

o
 osc_5zg9z6t1
发布于 07/12 14:41
字数 1070
阅读 31
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

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

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

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

 

 

前端开发框架我们规划设计了 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引用和位置无关特性就是预设的伏笔。

o
粉丝 0
博文 77
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.6K
8
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.6K
16
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22

没有更多内容

加载失败,请刷新页面

加载更多

Model S被18轮重卡撞烂 乘客在车辆保护下幸存

日前,国外一位名为quarm813的网友在社交媒体分享了“Model S救他和女儿性命”的经历。 据该用户描述,当地时间7月31日,他驾驶Model S在高速公路快车道上行驶时,一辆18轮重卡突然实线并线闯...

osc_fipgtxy8
24分钟前
4
0
Redis-cluster5.x集群搭建

1.下载redis5.0.2 wget http://download.redis.io/releases/redis-5.0.2.tar.gz #官网下载 tar xzf redis-5.0.2.tar.gz #解压cd redis-5.0.2 yum install gcc #需要gcc来编......

osc_zzg7fpke
26分钟前
11
0
CGB2004-京淘项目Day12

1.还原系统配置 1.1 释放Linux资源 1.1.1 停止数据库主从服务 1.1.2 关闭数据库服务 说明:关闭数据库服务器. 1.1.3 关闭tomcat/mycat服务器 1.1.4关闭nginx服务器 1.2 修改代码中的配置 1.2....

osc_3361hjxk
26分钟前
8
0
【北京迅为】初识i.MX6ULL终结者开发板

目录 一、 开发板初体验 1. 初识i.MX6ULL终结者开发板 一、 开发板初体验 i.MX6ULL终结者开发板是北京迅为电子推出的一款Cortex-A7架构的开发板。采用核心板+底板的方式,如下图所示: 经典蓝...

osc_0esgtdby
27分钟前
8
0
如何利用基于PXI的下一代ATE系统测试平台进行军事/航天/卫星电子设备测试

前言 自动测试设备(ATE)系统用于在生产产品或产品使用过程中测试电子组件,子组件或完整系统的功能和性能,以确保他们可操作性。对设备、电路板、子组件或系统的测试要求从简单到复杂,设计...

osc_mxz6aybo
28分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部