写点什么

百度技术沙龙第 13 期内容回顾:JavaScript 库的设计与应用

2011 年 4 月 18 日

在 4 月 16 日的百度技术沙龙里,我们邀请百度前端通用组技术组负责人雷志兴和去哪儿网的前端组负责人胡金埔,在沙龙分别跟大家分享百度和去哪儿网在 JavaScript 库的设计和运用实践经验。本文对他们的分享做简单回顾。并提供相关音视频、文字资料下载。

百度前端的七巧板——Tangram Javascript 库点击下载音视频、文字资料

雷志兴在他的分享中向我们介绍了百度设计 Tangram 库的原因,设计目标,以及 Tangram 库的架构和特点。

在分享中雷志兴提到百度的产品主要分为三类:

● 搜索类产品:用户的需求是想尽可能快的得到响应,尽快获取自己想要的内容。● 社区类产品:这类产品每天都在变化,以适应不同用户各种情况下的需求。

● 商业类产品:大家了解的比较少,比如百度的广告管家,是面向客户的应用,对页面交互要求很高。注重的是用户体验。

百度自 99 年成立到现在,前端产品有很多遗留的代码。一方面是为了解决这些遗留代码,另一方面是为了更好的设计产品,让工程师快速开发出好的可持续维护的前端产品。百度前端通用技术组设计了他们的 JS 库——Tangram

百度的 JS 代码可以分为四层:

● 第一层:Base 基础库,职能单一的基础方法。为其他层提供基本的操作支持。● 第二层:Component,跨产品线级别的通用组件。

● 第三层:Widget,不包含任何业务代码,是一种能够让所有产品线方便开发的机制。

● 第四层:App,业务逻辑,前面三层都是为这一层服务的。

接下来,雷志兴开始介绍 Tangram 库的设计特点。

● 提供容易封装的静态方法。● 按需装载,保证从中调出的代码都是最小的。

● 增加兼容性,实现与现有的系统零冲突。

● 尽量拆分控件功能特性,让所有特性实现可插拔

● 提供多种初始化方式,让用户根据自己的需要选择。

最后,雷志兴又对他们的 UI 系统结构做了简单介绍。通过建立这样一个适合百度所有产品的库,不仅能让产品线高效开发 JavaScript,而且也让前端项目变的持续可维护。

Qunar 的 JavaScript 模块化之路点击下载音视频、文字资料

胡金埔是去哪儿网的前端架构师、前端组负责人,他在本期沙龙跟大家分享的是去哪儿网建设 JavaScript 库的实践经验。在分享的开始,胡金埔先给大家看了一段糟糕的代码,引出这次分享的话题。

用 LabJs 实现更好的加载,采用 Ant、Rake、Nginx 等实现文件的压缩和合并。如果做到这些,对前端开发来说是不是就足够了呢?这样的话,对一个简单页面来说是足够的,但是对于现在的富客户端只能说是可能足够。

在去哪儿网产品发展的过程中,他们也采用过许多优秀的 JavaScript 开源框架,但因为缺乏具体的针对性,一些老代码的维护工作变的非常繁重。在产品开发的实践过程中,去哪儿网开发出了自己的 JavaScript 库 Module.js 和 Qtest。胡金埔在沙龙现场向大家分享和演示了 Module.js 和 Qtest,并特别介绍了 Qtest。

Qtest 是一个基于本地浏览器的 JavaScript 测试工具,具有以下优点:

● 基于 Qunit● 真实浏览器环境(可测试多个浏览器)

● 可方便的添加插件(Jshint、Keywords)

● 支持 Rake(使用 Ruby 语法)

OpenSpace

在沙龙最后的环节依旧是讲师、嘉宾和参会者共同参与的交流,本次我们邀请的嘉宾是淘宝北京的前端工程师罗克彪同学。本次 OpenSpace 的话题:

去哪儿网——林浩:QTEST 代码测试化之路

我们在做前端测试时,发现测试是前端开发一个重要环节。轻松快速的实现测试,就是 Qtest 的设计目标,刚才我简单介绍了 Qtest 的一些基础的东西。同时也希望大家在活动后可以上网查看一下,现在前端测试框架和手段有哪些,用测试的手段控制代码的质量,弥补不足,提高代码的质量。

百度——雷志兴:如何设计适合自己团队的 JS 库

我们组大部分人都是在自己公司自己的内部做通用的研发的。在讨论中发现大家对如何设计还是有些问题的。对什么时间做什么事情,以及如何提供技术支持,还比较模糊。这是一个值得长期研究的问题。我总结一下我的经验,在设计的时候要考虑两件事情,一是产品,第二就是团队。

淘宝——罗克彪:多人协作代码组织

我们讨论的问题是每个公司都会遇到的,就是一些老的产品中有一些代码,在新产品中往往还要写,造成工作的重复,如何避免这种重复,讨论到最后讨论到管理上面了,就是看大老板肯不肯下决心花费金钱和人力来整理这些代码。

中软国际——王磊:前端的安全问题,过多的业务逻辑放在前端,是否有安全隐患

我之所以提出这个问题,是因为我自己做了一个网站,只有一张页面,能实现局部刷新。我把所有页面组装都放在了浏览器端。但是有一个问题,设定的值很可能会被用户给改掉,刷新之后就会出现混乱。如何能避免这个问题?最后的结论是没有办法,因为数据到了浏览器端后是可以被修改的。第二个问题就是一个网站可否完全用阿贾克斯局部刷新来实现,讨论的结果是可以,但是比较麻烦。主要是因为 JS 代码维护起来比较难。

参会者博客

本期沙龙结束之后,有部分热心的同学把自己参会的过程和笔记整理成博客,和大家一起分享。摘录如下:

参加“百度技术沙龙”JavaScript 库的设计与应用笔记中,作者把他在雷志兴的分享中记的笔记跟大家做了分享;另外在 JavaScript 库的设计与应用——百度技术沙龙第十三期图文放送!!中作者对两位讲师的分享做了一下总结,并贴上了图片和大家一起共享。非常感谢这些热心的同学,也欢迎大家继续通过博客或微博分享在沙龙中的心得。

下期百度技术沙龙的开放日期预定为 5 月 21 日,大家可以随时登陆 InfoQ 官方微博或者百度技术沙龙微博群了解最新动向。同时也欢迎大家登陆新浪微博,提出对沙龙的期望和建议,发布相关话题时,请注意标注#百度技术沙龙#。谢谢!

2011 年 4 月 18 日 08:212406
用户头像

发布了 669 篇内容, 共 345.3 次阅读, 收获喜欢 870 次。

关注

评论

发布
暂无评论
发现更多内容

直播报名 | 携程技术沙龙——前端测试技术创新与实践

携程技术中心

AI 数据分析

TeamLeader不可不知的三种团队建设形式

Alan

团队管理 个人成长 28天写作

测开之数据类型· 第3篇《列表推导式、字典推导式、2种方式创建生成器》

清菡

测试开发

架构师训练营 1 期 -- 第十三周总结

曾彪彪

极客大学架构师训练营

重点人员管理系统开发,重点人情报预警管控平台建设

WX13823153201

重点人员管理系统开发

架构师训练营第 1 期 week13 总结

张建亮

极客大学架构师训练营

利用Python进行数据分析(原书第2版)免费下载

计算机与AI

Python 数据分析 数据科学

5张图搞懂Java引用拷贝、深拷贝、浅拷贝

bigsai

Java 浅拷贝和深拷贝

架构之书:我们从何处来?我们是谁?我们向何处去?

lidaobing

架构 编程的未来

波场链智能合约软件系统开发|波场链智能合约APP开发

开發I852946OIIO

系统开发

复盘node项目中遇到的13+常见问题和解决方案

徐小夕

Java node.js 前端 nodejs

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 开源 自动化 工具 高效率

智能微卡口监控系统搭建,智慧平安小区建设解决方案

t13823115967

智慧城市

DAPP软件系统开发

开發I852946OIIO

系统开发

警务通APP系统开发,移动警务平台搭建解决方案

t13823115967

智慧城市

Tufin联合Cisco,将网络安全自动化进行到底

Geek_448e23

网络安全 自动化管理 云安全

闲聊个人服务:革「to C」的命

欧雷

产品 去中心化

生产环境全链路压测建设历程12:通过生产压测发现的问题摘录

数列科技杨德华

全链路压测

Rancher开源Harvester:基于K8S的超融合基础架构软件

RancherLabs

Kubernetes rancher

架构师 3 期 3 班 -week4- 总结

zbest

总结 week4

Kafka实战宝典:Kafka的控制器controller详解

数据社

kafka 七日更

阅站无数!不过我只推荐下面这些

cxuan

推荐 网站

闭嘴,别再问什么是锁了

程序员老猫

乐观锁 悲观锁 分布式锁 java锁 公平锁

架构师训练营第 1 期 week13

张建亮

极客大学架构师训练营

对于传统供热系统来说,转型智慧供热需要哪些条件?

一只数据鲸鱼

物联网 数据可视化 供暖系统 3D

re:Invent 重磅回顾 | AWS 重塑机器学习的四大亮点,触及每一位 AI 工作者

亚马逊AWS官方博客

云计算 AWS

星环科技自动特征工程论文被ICA3PP2020接收

星环科技

AI 数据集

安全管理 | 前后端方案详解:Vue/SpringBoot+SpringSecurity+JWT

梁龙先森

前端 springboot springsecurity JWT 七日更

盘点2020|多线程的遥感大数据行业产品经历

老壳有点爽

盘点2020 遥感大数据 InSAR

边缘计算和5G:我们从何而来?

VoltDB

云计算 大数据 5G 物联网 边缘计算

架构师训练营第 1 期第 13 周作业

业哥

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

百度技术沙龙第13期内容回顾:JavaScript库的设计与应用-InfoQ