JavaScript前端架构设计v1.6分析_第1页
JavaScript前端架构设计v1.6分析_第2页
JavaScript前端架构设计v1.6分析_第3页
JavaScript前端架构设计v1.6分析_第4页
JavaScript前端架构设计v1.6分析_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一 、 J S 架 构 设 计 的 背 景二 、 J S 架 构 设 计三 、 总 结 反 思 及 心 得 体 会一、JS架构设计的背景淘宝前端工程师的增长前端架构的重要性成立之初,10个人团队,1名UED工程师现在,支付宝就有100多名前端工程师团队阿里巴巴页面性能优化前端架构的重要性页面性能优化: 20秒 12秒 8.5秒 ?脚本数量的庞大前端架构的重要性脚本homeConsole.js达到了13389行(未包含注释与空行),压缩后达到527kb!不同浏览器支持的需要单一的IE浏览器多种浏览器支持为什么要架构设计用户观念改变的需要追求酷炫效果注重交互体验为什么要架构设计构建庞大项目的需要单

2、一页面脚本大型项目脚本为什么要架构设计项目的需要大部分时间花在后台代码编写大部分时间花在前台代码编写为什么要架构设计没有架构设计的弊端1、难以维护2、应用加载缓慢3、体验性差4、重复编码5、扩展困难一 、 J S 架 构 设 计 的 背 景二 、 J S 架 构 设 计三 、 总 结 反 思 及 心 得 体 会二、JS架构设计1、JavaScript架构演变历程第1时期,“混沌时代”第2时期,框架时代第时期,模块化设计2、JS前端架构的步骤需求确认框架选型目录结构应用编码发布.1 松散型的模块化设计没有使用具体的模块化设计的框架,根据业务模块需求进行脚本的设计,不同页面对自身调用的模块进行按需

3、引用、加载。基于页面的模块代码加载方式松散型的模块化设计模块1代码页面1页面2页面3框架基础库模块公共代码模块2代码模块3代码2.1.1 需求确认在JavaScript前端架构之前首先要进行需求的分析、确认。需求确认的内容包括:、用户对象2、用户计算机水平3、使用的浏览器4、使用的计算机设备5、主要的操作优克普云PaaS建模平台需求确认 开发人员、信息中心管理员用户对象用户对象 高计算机水平计算机水平 能够根据要求使用特定的浏览器使用的浏览器使用的浏览器 性能较好使用的计算机设备 进行组织架构管理、授权管理、数据建模、业务建模及系统参数等的配置主要的操作主要的操作通过分析PaaS建模的用户群体

4、,可以得出初步的结论:PaaS建模前端主要关注功能的实现,对浏览器并没有太多的限制要求,浏览器支持IE8以上的版本即可(浏览器支持的减少可以降低前端很多工作量)。2.2 当前流行的框架框架的选择jQueryDOJOEXTPrototypeYUIJavaScriptMVCMooToolseasyUIminiUI框架与应用的关系框架的选择框架通用lib包product基础库基础库通用组件通用组件产品需求产品需求框架选择的考虑因素项目需要的浏览器支持满足需求的丰富的组件框架的稳定性框架的成熟度扩展的容易程度学习的成本框架的选择2.1.3 目录结构第三方框架引用的独立定义与业务无关的公共部分的独立定义

5、与模块业务相关的公共部分的独立定义模块相关的独立定义定义规则优克普云平台PaaS前端脚本目录结构项目jslwlinewell.jslinewell.utils.jsjQueryjquery.jspluginsminiuiztreemodulejscommondatalistaddDatalist.jslistDatalist.jsobjects目录结构业务无关的公共库第三方框架业务模块的脚本2.1.4 应用编码可扩展性可维护性灵活性采用闭包的模块设计使用闭包来封装“隐私”、状态和结构包裹公开和私有的方法和变量,避免污染全局作用域避免与其他开发人员的接口冲突只返回公开的API,此外的一切则是封闭

6、和私有的。应用编码没有采用闭包的开发方法闭包设计没有采用闭包的设计,所有的属性与方法的定义全部对外开放,其他模块调用API很混乱,并容易引起全局冲突。采用闭包的模块开发方法闭包设计采用闭包后,私有的方法与公有的方法进行了区分,外部模块访问不到datalistSelector的私有对象与方法。通用控件的设计为了提高可复用性、可扩展性,在项目中经常要设计能够符合不同需求的通用控件,通用控件的设计也能够为今后发展自己的框架打下基础。通用选择框控件的需求原始需求1、应用系统的字典需要能够通过树形、列表的方式进行选择2、应用系统使用组织架构需要能够以树形的方式进行展示、选择3、应用系统使用组织架构需要提

7、供按部门、角色、岗位等方式展示人员进行选择4、通用选择可以是弹出窗口的形式,也可以作为控件嵌入页面5、需要提供搜索的功能6、可以支持单选、多选扩展需求1、支持不同数据来源、不同形式的可展示位列表与树形的数据2、可以定制通用选择框的模板3、能够组装选中后的数据格式嵌入页面弹出窗口通用选择框最终展示结果通用选择框的目录结构通用选择框设计展示模板的配置只要更改模板的.html,css样式通用选择框提供简单的接口通用选择框设计定义通用选择框的模块及对外开放的接口,options参数为外部扩展开发传入的参数。通用选择框options扩展开发接口通用选择框设计是否多选是否弹出窗口通用选择框options参

8、数数据源接口通用选择框设计最终的调用方式通用选择框设计定义以树形方式展示的字典选择框数据来源格式通用选择框设计返回的数据格式JSON数组JSON单个对象需要包含显示值与实际值的两个属性树形JSON逐级加载JS前端缓存的设计空间换取时间,缓存永远计算机设计的重中之重,从cpu到io,到处都可以看到缓存的身影,JS前端架构设计重,缓存设计必不可少。JS数据及对象的缓存浏览页面的缓存模拟k/v形式的简单前端缓存设计前端缓存的设计调用形式Object缓存对象基于jQuery缓存设计前端缓存的设计2.3 基于CMD规范的模块化设计 1.灵活架构,焦点分离 2.方便模块间组合、分解 3.方便单个模块功能调

9、试、升级 4.多人协作互不干扰 可维护性 1.可分单元测试 可测试性遵循CMD规范的前端设计具备可维护性、可测试性。在运行启动加载时,每个模块能够按需进行加载。基于CMD规范的SeaJSCMD(Common Module Definition),是SeaJS 在推广过程中对模块定义的规范化产出,该规范明确了模块的基本书写格式和基本交互规则。在 CMD 规范中,一个模块就是一个文件。开发规范定义SeaJS框架的目录结构定义以上为基于规范设计的一个系统,在模块化设计中。采用规范可以规范模块的书写格式、能自动处理模块的依赖,还非常有助于代码组织、开发调试和性能优化。(注:支付宝是采用基于规范的Sea

10、JS进行前端架构的)SeaJS模块的编写SeaJS模块标识的定义与目录结构相同,其他关联模块的引入采用require。SeaJS模块的引用采用require引入关联模块,实现了其他关联模块的动态异步加载。SeaJS模块接口的导出SeaJS通过module.exports可实现模块公共接口的导出。SeaJS的程序启动入口SeaJS采用seajs.use为页面JS脚本执行的入口。编码调试“工欲善其事必先利其器”,在前端编码过程当中,编码调试的工具的选择与技巧的掌握够大幅度提高前端脚本编码的速度与质量。浏览器选择编码调试前端脚本的调试选择的浏览器可以根据项目兼容性的需要进行选择,在前期开发阶段建议使

11、用以上、Chrome、Firefox等集成调试工具比较好的浏览器(选择原生态的,不要被封装过的,如:“双核”浏览器),需要兼容性测试时再选择需要兼容的浏览器。调试输出alert 最基本的输出方式console.log Firedebug的输出方式,IE从8.0开始引入,chrome默认就有,使用与alert一样,在console窗口数据结构自定义输出 在云平台的公共库中,定义了lw.utils.debug输出调试的结果编码调试自定义调试输出lw.utils.debug调试输出自定义调试输出在执行时会把输出信息展现在页面的最顶端。断点编码调试通过F12打开调试窗口,找到需要断点的代码设置断点;也

12、可以在JavaScript代码中加入一句debugger来手工造成一个断点效果。Chrome调试时自动清除前端缓存的设置编码调试IE11调试时自动清除前端缓存的设置编码调试3发布对公共脚本进行压缩并合并对各模块脚本进行压缩发布压缩的版本,并设置调用的版本号发布规则压缩合并工具采用雅虎的yuicompressor JavaScript脚本压缩工具结合ant脚本进行脚本的压缩与合并。云平台公共脚本库压缩合并的Ant脚本版本发布的注意事项1、在项目编码时需要把引用脚本的公共部分独立出来 独立公共的引用部分,避免发布时每个文件都需要更改2、发布时需要加入版本 发布时在文件名后加入版本,如:lw.js?version=1,避免浏览器端缓存3、SeaJS的发布 SeaJS可以通过ngnix的合并功能,在加载的时候进行动态合并 https:/ 、 J S 架 构 设 计 的 背 景二 、 J S 架 构 设 计三 、 总 结 反 思 及 心 得 体 会三、总结反思及心得体会1、总结架构要从需求的角度出发去考虑不存在放之四海皆准的前端架构只有合适的架构,没有最好的架构架构要与时俱进架构要不断积累2、反思需要对不同场景的应用架构进行实践要能够更多学习基于互联网的先进架构技术引入到项目中在项目中架构要有更多的积累,形成成熟的框架3、学习心得体会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论