HTML5 - 标准组件与API开发

探讨使用HTML5构建基因组可视化应用的实践,包括组件配置、数据源选择及限制,以及如何通过自定义TRACK器扩展功能。同时指出组件开发与个性化需求之间的平衡,以及在快速迭代环境下开发人员面临的挑战。


HTML5标准基本上可以在绝大多数浏览器上运行了(PC,移动浏览器,很多人还是用的老版本的浏览器,不兼容)但是现在这方面的应用还不是很多;更多的时候,我们都是在用标准的组件,由于组件本身的开发使用只是考虑了一般的应用或者发布者本身的业务需呀,并不一定完全符合自身业务的需求。比如Genoverse的开发。标准的DEMO由三个部分组成(碱基对【Ensembl】,基因【Genes】,【Regulatory Features), 数据使用的是grch38 标准(欧洲)人体基因库。使用少数几行代码确实能轻松构建一个简单的应用:

 


var genoverseConfig = {};


 


var geneUrl= 'http://192.168.184.128:8080/eawebportal/EnsemblProxyServlet?ensembltype=gene&geneselector=__CHR__:__START__-__END__';


var stdUrl  = 'http://192.168.184.128:8080/eawebportal/EnsemblProxyServlet?ensembltype=std&geneselector=__CHR__:__START__-__END__';


var cfgPlugins = [ 'controlPanel', 'karyotype', 'trackControls', 'resizer', 'tooltips', 'fileDrop' ];


 


genoverseConfig.container = '#genoverse2';


genoverseConfig.width = 1240;


genoverseConfig.genome = 'grch38';


genoverseConfig.start = 32889611;


genoverseConfig.end = 32973805;


genoverseConfig.plugins = cfgPlugins;


genoverseConfig.tracks = new Array();


genoverseConfig.tracks.push(Genoverse.Track.Scalebar);


genoverseConfig.tracks.push(Genoverse.Track.extend({


         name    : 'Ensembl',


         controller : Genoverse.Track.Controller.Sequence,


         model   : Genoverse.Track.Model.Sequence.extend({


         url            : geneUrl,


         dataRequestLimit : 10000000


   }),        


   view     : Genoverse.Track.View.Sequence,


   resizable  : false,


}));


genoverseConfig.tracks.push(Genoverse.Track.Gene);


genoverseConfig.tracks.push(Genoverse.Track.extend({


         name        : 'Regulatory Features',


         url          : stdUrl,


         resizable     : 'auto',


         model       : Genoverse.Track.Model.extend({ dataRequestLimit : 5000000 }),


         setFeatureColor : function (f) { f.color = '#AAA'; }                     


}));


 


当然也可以通过定制一个TRACKER来显示:


 


Genoverse.Track.extend({


                       name       : 'Ensembl', // 名字,显示在TRACK的右边


           


                       controller    : Genoverse.Track.Controller.MyCustController,


                       model      :Genoverse.Track.Model.MyCustModel,


                       view       : Genoverse.Track.View.MyCustView,


                       resizable    : false,


}));


 


MVC,太古老了,回到施乐实验室,N年前的事了。 :),不用解释


 


但是一个明显的问题是,整个Container受限于 __CHR__:__START__-__END__,这也意味着所有的TRACK数据的展示必须在这个约束范围内,不一定完全匹配需求。


 


当然数据的分析也是一个重要的环节,不然怎么做?总之,需要花时间弄清楚真个源代码体系。更要懂HTML5编码,不然怎么改造?但是在组件开发流行的今天(往往有短平快的压力),要找一个基础开发的人员确实是很困难了。真的,能用简单的API构造应用的越来越少了,很难做出特色的应用。并且有时候,利用现成的组件,不一定快多少,当然可以改变需求, 这也是一个思路。 :)


 


知道有个什么东西,什么东西用什么东西做的,真的不一定能有多大的帮助。 很多时候我们需要的是程序员而不是程序猿。


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值