上周,Tangram开源了,有不少人阅读代码后提出了自己的意见、对Tangram的期望,很感谢这些热心的朋友的支持。与此同时,也看到了一些对Tangram设计的疑问,因此有了这篇文章,主要是想介绍在设计Tangram base时的一些考虑,以及它适合做什么事情。

细粒度拆分

只要看过Tangram文档或源码的人,一定会发现它拆分粒度够细。将每一个方法独立写成一个文件,用户可以通过codeSearch功能,获得定制好的Tangram,然后基于其开发业务组件和逻辑。

在百度来说,前端工程师一直都很关注流量和加载性能,按需定制可以最大程度的节省带宽、加快页面的加载和渲染速度。

同时,Tangram面向的产品跨度广,从搜索产品到社区产品到商业产品,而工程师动手能力都很强,他们能很轻松的基于Tangram提供的方法集,封装一套适合自身的产品底层库。不同的产品间,封装差异会比较大,但是由于底层库相同,交流沟通并不会产生多少障碍。

静态方法,无污染

除了拆分粒度细之外,Tangram库名字空间整洁,所有的方法都是静态的,对环境的污染很小。

一些老产品中总会有一些匪夷所思的代码,而且很多产品中会有第三方代码,为了最大程度的避免冲突,Tangram仅仅暴露一个变量到window中,而且用户完全可以把Tangram放在闭包中使用,这样即使页面上出现两套Tangram,他们之间也不会有任何冲突。

复杂的RIA产品需要一个开发框架时,采用Tangram做为底层库也很有优势,因为Tangram是静态的,封装和覆写都特别方便,如果发现在自身环境下对某些函数有特别的要求(如性能要求极高),可以自己编写新函数覆盖。函数是独立而且简单的,开发人员也可以很方便的对其进行研究,了解原理进而更好的使用。

上面的内容大多是Tangram针对产品团队的设计考虑。而对于一些通用组件开发者,基于Tangram开发时,他可以把Tangram当成一个函数库,仅仅选取他需要的部分,保证组件的体积精简。同时不必遵从Tangram的封装方式,可以按照需求,封装出自己想要的风格然后release。事实上,百度内已经有数个以这种形式存在的通用组件。

改进

Tangram一直都在不断升级,简单说说我们接下来要做的几件事情:

  • 修改库中方法调用的baidu前缀,这件事情会在下一个版本发布前完成,做为一个开源项目,它应该保持自己的独立性。
  • Codesearch整理后,也会被随项目放出,这样大家就能很方便的在本地选取任何一个版本的Tangram代码了。
  • 我们会不断整理Tangram的设计细节,开发规范,工具,并且在社区和blog中发布,即使你不使用Tangram,也完全可以参考和借鉴我们的思路。
  • 不断完善文档,良好的中文文档也是Tangram相对其他库的一个优势。

开发团队

在百度FE,我所在的小组叫通用组,负责包括Tangram的所有前端通用技术的研发与维护,所有百度工程师都会贡献代码到Tangram。开源后,Tangram将接受更多来自百度外部的意见,保持Tangram的不断成长和进步。欢迎前往github的network(base,component)围观我们每天的代码提交,更欢迎各位fork,为Tangram提供想法和代码。

小结

这篇文章介绍了Tangram base的设计特点、面向场景等,做为一个基础函数库,Tangram base很容易被封装和扩展,你也可以很放心的使用它来进行二次开发。

Tangram的文档地址是:http://tangram.baidu.com,你也可以前往github查看最新的源码(dev分支)

我们基于Tangram base,开发了Tangram component,这是一个组件库,它的设计考虑和实现方式就更复杂了,这部分留到下次再谈,如果你关注Tangram,欢迎订阅baidu UX blog获得更新。

【本文首发于:百度泛用户体验】http://www.baiduux.com/blog/2010/12/30/the-design-of-tangram-base/
【关注百度技术沙龙】

转载于:https://blog.51cto.com/baidutech/746835

Tangram base的设计思路相关推荐

  1. 【Computer Organization笔记09】x86 / Pentium 指令系统,MIPS 指令系统,数据通路的设计,CPU设计思路

    本次笔记内容: P17 计算机组成原理(17) P18 计算机组成原理(18) 本节课对应幻灯片: 组成原理21 Intructionsx86.pptx 组成原理22 MIPS.pptx(老视频基本没 ...

  2. 普歌-允异团队-【Java实例】一起做一个简单的王者荣耀RPG吧!从设计思路到代码实现一条龙!-登录与注册(IO流)/记录时间/属性面板呈现

    [Java实例]-王者荣耀RPG-从设计思路到代码实现 前言 一.案例分析 1. 设计理念 2. 功能设计 (1)登录与注册 (2)游戏时间记录 (3)选择游戏模式 (4)游戏地图 (5)生物属性 二 ...

  3. 密保问题数据库设计思路和代码实现

    用户注册时设置三个密保问题方便用户找回. 数据库设计思路: 用户一张表,用户密保问题答案一张表,密保问题单独一张表.这样做的好处是满足三范式,条理清晰,跟重要的是方便后期更改维护密保问题,比如增加删除 ...

  4. python+unittest框架 UI自动化设计思路以及代码剖析,增加易用性

    前言 学习UI自动化的同学都应该知道PO模式,PO共分为三层,分别是页面定位层,页面对象层,业务逻辑层. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余 ...

  5. 第 5 章 Nova - 025 - OpenStack 通用设计思路

    API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例 nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...

  6. 亿级流量网关设计思路

    本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...

  7. 传授“带权重的负载均衡实现算法”独家设计思路!

    作者|孙玄/陈东 分布式系统中,大部分系统调用都会涉及到负载均衡,例如:客户端发往服务端的请求首先到达反向代理,然后反向代理再通过负载均衡算法将请求转发到业务系统:或者后端业务系统各模块间的调用前,也 ...

  8. 会计期间在ERP开发中的设计思路

    会计期间在ERP开发中的设计思路 2010年08月03日00:00 it168网站原创  作者:IT168 阿峰  编辑:李倩 评论:1条 本文Tag: ERP ERP开发 系统分析 [IT168 专 ...

  9. “私有云”安全的“过渡”时期-“云朵”方案的设计思路

    一.私有云安全的尴尬现状 云计算因为能够提供虚拟化的资源池.弹性的服务能力.自助服务等,深得CIO们的青睐,为了提高企业IT设备的利用率,提高服务容灾的能力,提高对业务支撑的快速响应能力,大多数的企业 ...

最新文章

  1. 一个已经存在 10 年,却被严重低估的库!
  2. windows服务器系统免登录,Mac系统登录Windows服务器
  3. JVM性能提升50%,聊一聊背后的秘密武器Alibaba Dragonwell
  4. OSPF——通告静态缺省(默认)路由(含配置)详解
  5. 准备入行Web前端,又担心适不适合,怎么办?
  6. centos7下安装libiconv失败
  7. Windows内核研究总结
  8. XP WIN7局域网共享传输速度
  9. DT浪潮下,大数据在交通管理中的应用实践
  10. Gson报错Invalid time zone indicator ‘ ‘
  11. 前端搞一个扭蛋抽奖小动画?
  12. C++ std::numeric_limits
  13. centos 上搭建FC SAN
  14. 运用计算机计算电力系统潮流,潮流电力系统论文,关于电力系统潮流计算现状展望相关参考文献资料-免费论文范文...
  15. 微信小程序如何上拉加载下一页
  16. Oracle数据库查询数据语法
  17. 那些让人“上瘾”的产品,是如何铺设流量陷阱的?
  18. iPad阅读应用横向评测: 普通2B文学青年的碰撞
  19. arcpy提取线段/道路起点,终点
  20. 【织梦总结】织梦常用调用标签总结

热门文章

  1. webp的js插件_让浏览器全面兼容WebP图片格式
  2. 懂得了这些才可以说学习Python入门了
  3. java内部类gc_Java内部类持有外部类的引用详细分析与解决方案
  4. 用Scrapy爬虫框架爬取食品论坛数据并存入数据库
  5. 第1关:学习-用循环和数组实现输入某年某月某日,判断这一天一年的第几天
  6. 0x22.搜索 - 深度优先搜索
  7. C++ map详细介绍
  8. poj2217详解 ( 后缀数组 + 高度数组 )
  9. crosstab交叉表_透视图和交叉表
  10. 什么是java多线程_什么是java多线程,java多线程的基本原理?