提纲:
1:背景
2:系统简介
3:系统简议
4:多个前端系统的横向比较
5:智能前端:从工具到智能,颠覆现有
正文
1:背景
收到一项目,利用友商系统,开发WEB交易。有机会向友商学习先进的经验,高兴高兴。
2:系统简介
2.1、系统部署
2.1.1、打开myeclipse->新建java web项目“ACPP”。
2.1.2、修改原工程"ACPP"目录下“WebContent”目录名为“WebRoot”,覆盖myeclipse新建的工程目录。
2.1.3、可提高开发效率:因为没用过extjs,所以将extjs工程包下的docs目录,拷贝到ACPP/WebRoot下。这样,就可以在内网中浏览官方文档而不必再去上外网了。http://localhost:8080/ACPP/docs/index.html,就可以查看。纯英文,结合PC版有道字典,还是可以懂地。
2.1.4、工程部署到tomcat。http://localhost:8080/ACPP。默认访问index.jsp页面。
2.2、系统说明
2.2.1、WEB端
2.2.1.1、采用EXTJS。index.jsp页面为最重要页面,负责所有js的加载、框架页的展示等。
2.2.1.2、交易页面demo.js->PagingQueryTran->QueryTran->AbstractTran
->CommomTran->Ext.container。
2.2.1.3、QueryTran初始化方法:initView()。使用抽象方法,继承使用
Ext.container的属性和方法,完成“上查询页、下查询表”的页面布局。
2.2.1.4、交易页面demo.js初始化方法:initCompont()。调用父类的initView(),
用自身的方法代替父类的抽象方法,完成交易页面描绘。
2.2.1.5、总结:父类封装EXTJS,用抽象类,完成同一类型交易的页面布局。子类继承父类,
编写抽象函数具体的业务功能,完成具体页面绘制。这里最重要的思想,就是类的
继承,是架构的精华点。
2.2.2、前后端通讯
WEB端,通过CommonTran的commit()函数,调用EXT.ajax,与后端发送报文。最重要的两个
参数。1、url:ajaservlet。请求后台的url为:http://localhost:8080/ACPP/ajaservlet。
2、发送JSON报文中的servername。定义了后台服务端,具体的交易处理类。
2.2.3、后台服务
2.2.3.1、tomcat作为WEB容器。所有http://localhost:8080,均发送到tomcat处理。
2.2.3.2、web.xml定义了两个servlet。SysInitServlet启动顺序为1,负责初始化时,从propertites
中加载sql语句到内存中。Ajaservlet,拦截/ajaservlet的url;启动顺序为2,负责初始化时,
从读取菜单树、按钮树等;doPost()方法,从通讯报文json中取出servername,通过java的
类动态加载机制,调起具体的交易。
2.2.1.5、总结:这里最重要的思想,1、url的单一拦截;2、类的动态加载。架构的精华点。
3:系统简议
3.1、优点:架构简单、开发速度快。
3.2、不足:1、双刃剑,EXTJS对HTML和JS的封装,简化了前端开发复杂度;同时过重的封装,变成了自己
的一套属性、方法,学习资料不足,需要较长的学习曲线。2、系统本身作为内部的开发系统,
拥有一套自身的架构及开发流程,也需要学习时间。3、双刃剑,简单的架构在高并发时的性能,
在运行后需重点观察。
4:多个前端系统的横向比较
1、这套WEB开发系统,跟目前在用的柜面系统AB,在思想体系上相似,甚至连主类命名都是CommonTran,不知
在最开始的设计时,是否有借鉴之意,^_^。
2、EXTJS初衷,也是为了WEB程序员能像开发桌面应用一样开发WEB,但是,却摆脱不了html、js、cs等,无法形成
自有的开发语言,反而因为封装,使得开发人员需要多去掌握它封装的内容,以便了解框架的特性。相较而言,AB的
优势是,端的灵活性和表现方式非WEB可比;系统封装的比extjs简单,只需关注组件的触发事件即可;学习难度低,
会java就能开发;最重要的是,通过绘制面板,所见即所得地生成页面xml文件,完成页面展示和逻辑的分离,比extjs
定义参数、部署工程、调试、再修改、再部署、再调试,在开发效率上提高非常多。
5:智能前端
沿革技术的趋势,手工具->机械化->电器化->网络化,而今,我们正迈入智能化时代。从最早的字符终端、到如今的
图形终端、再到WEB端、手机端、PAD端、机具端等等,业务形态和终端特性都经过将近20年的积累,是否会产生
基于历史的业务需求,针对特一渠道特性,自动生成代码的智能大脑出来呢,就跟AlphaGo一样。或者一个AlphaGo
提需求,一个AlphaGo来开发,会是什么样子呢?不过,这都是颠覆,是一种新的产业,将超越现有开发工具的存在。
打败微信的不是另一个微信,而是一种新的沟通形态,开发工具也是。在这出现之前,我觉得还是要有一种过渡的形式
就是以容器为主,将UI和业务进行标准化捆绑,结合产品工厂的形式,让业务人员自己动手就可以开发出标准的需求,
程序员应该去做更高级的事情,而不是日复一日做着搬运工的工作。