`

JavaScript重构(九):自定义的JavaScript产品框架

阅读更多

产品做到一定程度,JavaScript不仅仅需要几个层面上的重构,而需要将这些合理的、零散的重构集成起来、系统化,最终形成一套适合自己产品的前端框架。

以某套产品的前端框架为例,包含了这么几个组件:

  • 1、通用工具组件,提供了UI组件最基础的通用能力,包括:日志、缓存、数据共享、数据异步加载、原生对象扩展、Ajax产品定制化等等。
  • 2、共享UI组件,包括:通用弹出框、通用按钮等。
  • 3、产品基础模块,在所有页面均加载该JS,包括:评论模块、打分模块、基本资费模块、下载模块、播放模块等等。
  • 4、扩展产品模块,仅在特定页面加载该JS,包括:播放器组件、直播频道组件等等。
  • 5、关联常量预置模块,这部分主要是一些系统常量无法在JavaScript中确定下来,需要外部传值进去。

(依赖关系:5->1->2->3->4)

上述JS在开发过程中需要细化,并且需要严格限定互相之间的依赖关系,但在发布时,使用脚本或者JS聚合压缩工具整合到特定的一个或几个JS文件中。

 

UI模型和业务模型:

这部分可以说是框架的核心,包括模型的定义和模型数据的存储,所有的接口都是围绕模型制定的。

 

产品框架实施中遇到的几个典型问题:

1、页面JavaScript脚本对于不同语种下需要保持的差异:

譬如阿拉伯语是从右至左排的,那么对于操纵DOM的脚本来说,很可能和英文下有不同的差异,通常语种引起的差异可以用问题抽象和语种归类的办法化解:

比如语言文字从右向左排列和从左向右排列是造成某些展示不同的根本原因,那么在关联常量预置模块中设置好语种,涉及到的语种和左右排列方向的对应关系应当存放在代码中,最后在JavaScript代码中区分对待就可以了。

2、页面上的一些非通用的DOM操纵密切相关的代码和页面展示耦合紧密,这部分代码是不宜置入框架中的,置入后反而不便于产品定制,需要明确这个框架内外的分界线是什么。

3、结合开发团队技能情况制定详细的产品框架实现方案。

比如开发团队成员普遍缺乏JavaScript面向对象能力,这时候就不应当把框架做得太厚,应该对框架外的JavaScript使用适当放宽限制,同时做好命名规约。

4、API接口把关。

需要由有经验的程序员对于框架发布的接口把关,保证接口设计的合理性。

 

文章系本人原创,转载请注明作者和出处

分享到:
评论

相关推荐

    个性化你的编程宇宙:自定义IntelliJ IDEA界面与主题全指南

    它主要用于Java语言的开发,同时也支持包括Kotlin、Groovy、Scala、Python、JavaScript等在内的多种编程语言。 ### IntelliJ IDEA的主要特点包括: 1. **智能代码补全**:IDEA提供了非常智能的代码补全功能,可以...

    Javascript重构.pdf

    在进行JavaScript重构时,引入测试框架是至关重要的。JsUnit是一个独立的JavaScript测试框架,允许开发者编写和运行针对JavaScript代码的单元测试,确保重构过程中代码逻辑的正确性。 总之,JavaScript重构涉及模块...

    Eclipse的JavaScript插件 JSEditor

    4. **代码重构**:JSEditor支持JavaScript代码重构,包括重命名变量、提取函数等操作,这些操作对大型项目尤为重要,因为它们可以保持代码的整洁和一致性。 5. **调试工具**:除了编辑功能,JSEditor还集成了...

    纯javascript写的超级玛丽 IE9 火狐等可用

    【标题】"纯javascript写的超级玛丽 IE9 火狐等可用"揭示了这是一个使用JavaScript编程语言重构的经典游戏——超级玛丽,它可以在IE9及以上的版本以及火狐等现代浏览器上顺利运行。JavaScript是一种广泛应用于网页和...

    基于vue和JavaScript的通用个人网站的引导页、导航页模板源码

    Vue.js是尤雨溪开发的渐进式JavaScript框架,它强调简洁的API和易用性,使得开发者可以逐步地在现有项目中引入Vue的功能,而无需进行大规模重构。Vue的核心库专注于视图层,易于学习,同时也便于与现有库或项目集成...

    2048小游戏 - 原生JavaScript实现

    原生JavaScript意味着没有依赖任何库或框架,直接使用浏览器支持的语言特性来编写代码。 在2048游戏中,JavaScript主要负责以下几个关键功能: 1. **用户交互**:JavaScript监听用户的键盘输入,根据用户上、下、...

    select自定义下拉组合框

    在实际开发过程中,`select`自定义下拉组合框的实现可能涉及到HTML结构的重构,将`select`元素替换为自定义的HTML结构(如`<div>`、`<ul>`等),然后使用JavaScript来模仿`select`的行为。这样可以更好地控制样式和...

    angular-services-and-directives:角度应用程序重构为具有自定义服务和指令

    综上所述,`angular-services-and-directives-master`这个项目可能是对一个AngularJS应用的重构,它强调了使用自定义服务和指令来处理单一资源API的CRUD操作,并且包含测试用例以确保代码质量。通过学习和实践这个...

    Squery框架 1.0.1版

    **Squery框架1.0.1版**是一个针对前端开发的轻量级框架,它集成了JavaScript、Jquery、Ajax和插件控件等技术,旨在简化Web应用程序的开发流程,提高开发效率。该框架在1.0版本的基础上进行了全面重构,提升了性能和...

    JavaScript模拟select

    - **使用现代框架/库**:考虑使用React、Vue或Angular等现代前端框架来重构这个功能,这些框架提供了更强大且灵活的方式来处理用户界面和状态管理。 通过上述内容的学习,我们了解了如何使用纯JavaScript来模拟一个...

    vuejs社区手机端重构

    Vue.js 是一款轻量级的前端JavaScript框架,以其易学易用、高性能和组件化的特点在Web开发领域受到广泛欢迎。"Vuejs社区手机端重构"项目,旨在利用Vue.js技术栈来优化和重构移动端应用,提升用户体验和性能。在这个...

    Apress.Expert.JavaScript.Nov.2013

    这两章的内容对于维护大型项目尤其重要,可能包括编码规范、重构技巧、单元测试框架等方面的知识。 #### 3. **实用指南** - **风格与工作流**:第七章“Style”和第八章“Workflow”分别涉及编写高质量JavaScript...

    zui-master_javascript_

    2. **重构友好**:当代码需要重构时,单元测试可以作为安全网,确保改动不会破坏原有功能。 3. **持续集成**:zui-master库可能集成了自动化测试框架,如Jasmine或Mocha,与持续集成工具(如Jenkins)配合,可以实现...

    design-javascript

    "山寨Extjs"可能是指基于Ext JS框架进行模仿或自定义开发,因为Ext JS是一个广泛使用的JavaScript库,专为构建复杂的、数据驱动的Web应用而设计。它提供了丰富的组件库,包括表格、面板、菜单、工具栏等,以及强大的...

    JavaScript_模拟数据发生器.zip

    在JavaScript中,重构可以提高代码的可读性、可维护性和性能。 模拟数据生成器通常会提供一系列方法,用于创建各种类型的数据,例如字符串、数字、日期、对象等。开发者可以根据需求自定义生成规则,例如指定长度、...

    vue的豆瓣电影重构为react

    在重构过程中,开发者可能需要理解和对比Vue与React这两种流行的前端框架在组件化、状态管理、渲染机制等方面的差异,并将Vue的特性映射到React的相应概念上。 【主要知识点】: 1. **React基础**:首先,理解...

    香草js动画列表空间重构:使用StackBlitz创建

    在本项目中,“香草js动画列表空间重构:使用StackBlitz创建”是一个关于使用纯JavaScript(也称为香草JS)来改进动画列表空间结构的教程。StackBlitz是一个在线的开发环境,允许开发者直接在浏览器中编写、运行和...

    spket eclpise 插件

    Spket 插件不仅支持基本的JavaScript开发,还对多种流行的JavaScript框架如Dojo、jQuery、Prototype、YUI等提供了特别的支持。这意味着在使用这些框架时,可以享受到同样强大的代码补全和智能提示。 **5. 重构与...

    javascript万年日历js

    同时,为了提高性能和用户体验,可以考虑利用最新的Web技术如Web Components或模块化工具(如ES6模块或CommonJS)来组织代码,或者采用现代前端框架(如React、Vue或Angular)来重构。 总的来说,JavaScript万年...

    javascript 的面试题

    `parent` 不是JavaScript的保留关键字,它是一个内置对象,用于访问父窗口或框架。 - C. `class` 是ES6引入的关键字,用于定义类。 - D. `void` 是JavaScript中的保留关键字,用于返回undefined。 **3. 请选择...

Global site tag (gtag.js) - Google Analytics