写点什么

百度技术沙龙第 1​7 期回顾:​富客户端时代的 JavaScript 框架(含资料下载)

  • 2011-08-24
  • 本文字数:2303 字

    阅读完需:约 8 分钟

在 8 月 20 日百度主办、InfoQ 策划组织实施的第 17 期百度技术沙龙活动上,来自百度商务搜索部前端工程师董睿以及 IBM 中国开发中心的高级软件工程师成富,分别分享了 JavaScript 框架的相关话题,话题涉及企业级 RIA 框架的应用以及实际产品开发中的 Dojo 框架。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

主题一:整站式 Ajax 应用开发与 ER(Enterprise RIA)框架视频,MP3 和 Slides 等资料下载

来自百度的前端工程师董睿第一个为大家分享,演讲内容涵盖整站式 Ajax 应用介绍、ER(Enterprise RIA)框架介绍以及整站式 Ajax 与 ER 框架的应用开发,其中重点讲述了整站式 Ajax 与 ER 框架在实际开发中的应用。董睿首先列举了常见开发中遇到的问题:​​​​​​

  • URL 敏感
  • 浏览器的前进后退
  • 处理 Location 对应的请求行为(数据加载、视图渲染等)
  • Action 太多,乱七八糟
  • 数据怎么管理
  • 数据可能被多个场景使用
  • 在 JavaScript 里写 HTML 片段很不爽(换行、转义等)
  • UI 控件管理界面交互
  • 复杂区块的渲染
  • 频繁的 new 与 append
  • 进入页面的时候加载的 Js 文件太大​

在 ER 框架中,主要的解决方法有:

  • 封装 Locator(当 Locator 变更时,Locator 通知 Router 分发到某个 JavaScript Function 进行处理)
  • Controller 转交给某个 Object 进行处理(Action)
  • Action 对模型与视图进行选择与匹配,完成用户行为的处理
  • 对相似业务逻辑的 Action 进行归类
  • 数据的存储容器
  • 针对 propertychange 的事件监听机制
  • public 与 private 分级
  • 使用 HTML 注释
  • 支持不闭合声明
  • 支持对 model 和 JS Object 的引用:${}
  • 不提供流程控制的支持
  • 通过自定义 ui 标签来实现便捷的控件创建方式
  • 通过“*”来实现方便的引用 Context 中的数据
  • controller 根据 path 选择 Action 时,自动加载,以此来解决加载 Js 文件太大的问题

此外,董睿还分别从目录结构、架构的分层结构、开发时的 JavaScript 管理、开发时的 CSS 管理、开发时的 template 管理以及打包与压缩等常见的场景,通过具体的代码示例以及相应的总结,将其在开发中的经验加以分享。

最后,董睿总结了 ER 框架所具备的特性:实现了历史记录,前进后退等功能的封装、URL 敏感,处理 Location 对应的请求,提供数据环境,数据模型,HTML 片段编写的便利性,控件的加载与业务行为,按需加载,目录结构以及开发时的源代码管理等。​

主题二:实际产品开发中的 Dojo视频,MP3 和 Slides 等资料下载

成富主要从 JavaScript 框架的世界讲起,阐述为什么要选择 Dojo 这么一个开源的产品,然后介绍了实际产品和项目中的 Dojo 开发,最后总结了其在长期的使用过程中所遇到的经验与教训。

成富在演讲中提到,之所以 IBM 选择 Dojo 作为 IBM 的 RIA 标准框架,是因为 Dojo 具有交互性要求高、企业内联网和适合团队开发等特点。目前在 IBM,广泛使用 Dojo 框架的产品有 IBM Mashup Center、IBM Connections、Lotus Live。

接下来成富重点介绍了实际项目中的 Dojo 开发流程以及注意事项,只用 Dojo 的基本开发流程为:

  • 界面草图(草图设计)
  • 布局(使用布局组件手动控制)
  • 组件(使用标准组件、扩展标准组件、自定义组件或是复用其它组件等)
  • 界面(组件交互)

成富建议的组件使用路线图为:找到组件、直接使用组件、扩展组件,以及把组件功能发挥到极致的自定义组件。此外,成富还对组件从属性和方法的层面进行了剖析,介绍了组件的创建、销毁、交互以及扩展的注意点。在自定义组件时有以下几点需要注意:​

  • 组件粒度的权衡(可复用性 vs 性能)。
  • 组件的生命周期管理(创建与销毁)。
  • 遵循惯例(属性和方法的命名,使用 dijit._widget 的方法)。
  • 善用模板和容器(用 HTML 模板来创建基本骨架,继承 dijit._Container 来管理内部子组件)。

​最后,成富分享了其在开发中的经验和教训,目前主要面临的非功能性需求主要有:

  • 性能问题
  • 内存占有率和内存泄露问题
  • 可访问性
  • 单元测试​

以上问题的应对机制分别为:打包和压缩代码、控制页面上的组件数量,添加正确的组件销毁逻辑等。此外 Dojo 是首个提供支持完全可访问性组件库的 JavaScript 框架,还支持 W3C 的 ARIA 标准。单元测试的工作是通过 D.O.H 来进行逻辑单元测试的,同时使用 D.O.H Robot 还可进行界面相关的单元测试。

Open Space(开放式讨论环节)

和以往的环节一样,​为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了 Open ​Space(开放式讨论)环节。除了讲师​董睿和成富外,王文明、杨飞、贾珣也参与了小组讨论。在 Open Space 的总结环节,几位嘉宾​分别对讨论的内容进行了总结:​​

董睿分享了“Web 资源(文本)压缩”的话题,主要提到了 JavaScript 和 HTML 的一些压缩策略以及针对搜索引擎的优化策略等。​​成富则继续他演讲的话题“JS 框架在实际开发中的应用”,参会者对 Dojo 产生了浓厚的兴趣,成富对相关问题进行了解答,大家进行了深入的讨论,最后还讨论了关于常见 RIA 框架的一些问题。此外,王文明、杨飞、贾珣分别分享了“Zend Framework 快速开发和 PHP 性能优化”、“富客户端与轻量级互联网应用”以及“Node.js 的前景”等话题。

​​​​会后一些网友在新浪微博分享了他们参会的感受:

@陆明在京:今天下午百度技术沙龙主题和实用性都不错,蛮有价值的。

@北京辛星:#百度技术沙龙#今天参加百度技术沙龙,对 js 富客户端有了更多的了解,谢谢组织者和分享话题的各位。

@甘志:#百度技术沙龙# 提供的冰啤酒不错,内容也很精彩,以后要多参加。

​有关百度技术沙龙的更多信息,可以通过新浪微博关注 ** @百度技术沙龙,或者加入百度技术沙龙微群 **,InfoQ 上也总结了过往 15 期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读

2011-08-24 20:284828
用户头像

发布了 156 篇内容, 共 58.4 次阅读, 收获喜欢 7 次。

关注

评论

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

是什么让 TiDB 从一款中国受欢迎的数据库产品在短短几年内成为全球受欢迎的数据库产品?

TiDB 社区干货传送门

支付宝携手HarmonyOS SDK打造高效便捷的扫码支付体验

HarmonyOS SDK

HarmonyOS

全球布局、极速集成:IMkit搭建全面、快捷、安全的聊天应用

ZEGO即构

人工智能 即时通讯 IM UIKits imkit

《黑神话:悟空》真的带火云电脑了吗?

脑极体

AI

一文说清楚数据集成中的流处理与批处理的区别

谷云科技RestCloud

Apache 数据处理 批处理 ETL 流处理

参与“2024,我想和 TDengine 谈谈”有奖征文活动,赢 AirPods

TDengine

数据库 tdengine 时序数据库

万界星空科技MES系统如何实现设备数据集成

万界星空科技

数据采集 mes 设备管理 万界星空科技

Serverless 安全新杀器:云安全中心护航容器安全

阿里巴巴云原生

阿里云 Serverless 云原生

TiDB在 G7 的实践和未来

TiDB 社区干货传送门

TiDB 数据库核心原理与架构_Lesson 01 TiDB 数据库架构概述课程整理

TiDB 社区干货传送门

TiDB 底层架构

Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?

tapdata

sybase ase sybase数据库 sapsybase sybase到postgresql

2024 医疗 Datathon 又叕来啦~!“理-工-医-信”跨学科联合科研,以数据驱动医疗实践

ModelWhale

R 语言 datathon 医疗大数据

对比传统数据库,TiDB 强在哪?谈谈 TiDB 的适应场景和产品能力

TiDB 社区干货传送门

非凸科技钻石赞助第四届Rust China Conf 2024

非凸科技

SQL 中 Drop、Delete 与 Truncate 的区别

Chat2DB

数据库 开源 AI sql

mes系统在新材料行业中的应用价值

万界星空科技

mes 万界星空科技 生产管理MES系统 新材料mes 新材料行业

品牌未来式,增长进行时|2024凯度BrandZ中国品牌盛典回顾

财见

喜报 | 博睿数据荣获“绿色领导力董秘标杆之星”、“信息技术服务创新标杆之星”

博睿数据

金蝶云·苍穹OEM版产品正式发布!AI时代共创软件产业新质生产力

金蝶云·苍穹

金蝶 生态伙伴 金蝶云苍穹

人工智能 | ChatGPT 插件开发

测吧(北京)科技有限公司

测试

K1计划100%收购 MariaDB; TDSQL成为腾讯云核心战略产品; Oracle@AWS/Google/Azure发布

NineData

oracle 腾讯云 MariaDB tdsql K1

面试官:线程池遇到未处理的异常会崩溃吗?

王磊

How to Add a Built-in Function to TiDB Using a Cursor in 20 Minutes

TiDB 社区干货传送门

TiDB 源码解读

关于新版本 tidb dashboard API 调用说明

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 新版本/特性解读 7.x 实践

手工转测试开发轻松实现薪资 50%涨幅的逆袭之路

测吧(北京)科技有限公司

测试

几张图带你了解TiDB架构演进

TiDB 社区干货传送门

版本升级

MySQL 扛不住了,来试试这款平替的“国产化改造”必入手的国产数据库吧!

TiDB 社区干货传送门

Hume AI 推出 EVI 2 情感模型;OpenAI o1 模型问世,模拟人类思考问题 丨 RTE 开发者日报

RTE开发者社区

百度技术沙龙第1​7期回顾:​富客户端时代的JavaScript框架(含资料下载)_Web框架_贾国清_InfoQ精选文章