《JavaScript设计模式》——10.4 适配异类框架

简介: 首先g方法是通过id获取元素,所以通过$(jQuery的简写名称)方法获取jQuery对象然后通过get获取第一个成员即可,不过on方法有些复杂,我们不能直接替换,因为jQuery和我们的A库在通过id获取元素时是有区别的,jQuery的id前面要加#。

本节书摘来自异步社区《JavaScript设计模式》一书中的第10章,第10.4节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看

10.4 适配异类框架

“嗯,这是因为咱们公司的整个轻量级的A框架太像jQuery了,我们可以将这两种框架看成是相似框架。但是如果一个框架与jQuery血缘远一点,那么对于这种异类框架适配情况就复杂得多了。举个例子吧,还是实现上面两个事件,所以我写了一个这样的框架。”

// 定义框架
var A = A || {};
// 通过ID获取元素
A.g = function(id){
  return document.getElementById(id)
}
// 为元素绑定事件
A.on = function(id, type, fn){
  // 如果传递参数是字符串则以id处理,否则以元素对象处理
  var dom = typeof id === 'string' ? this.g(id) : id;
  // 标准DOM2级添加事件方式
  if(dom.addEventListener){
    dom.addEventListener(type, fn, false);
  // IE DOM2级添加事件方式
  }else if(dom.attachEvent){
    dom.attachEvent('on' + type, fn);
  // 简易添加事件方式
  }else{
    dom['on' + type] = fn;
  }
}

“那么要完成上面的需求我们可以这样做。”

// 窗口加载完成事件
A.on(window, 'load', function(){
  // 按钮点击事件
  A.on('mybutton', 'click', function(){
    // do something
  })
})

“好了,小白,那么我想引入jQuery来换原有的A库,你知道该如何做么?”

小白思考了一下说:“首先g方法是通过id获取元素,所以通过$(jQuery的简写名称)方法获取jQuery对象然后通过get获取第一个成员即可,不过on方法有些复杂,我们不能直接替换,因为jQuery和我们的A库在通过id获取元素时是有区别的,jQuery的id前面要加#。所以异类框架的适配器应该是这样的吧。”

A.g = function(id){
  // 通过jQuery获取jQuery对象,然后返回第一个成员
  return $(id).get(0);
}
A.on = function(id, type, fn){
  // 如果传递参数是字符串则以id处理,否则以元素对象处理
  var dom = typeof id === 'string' ? $('#' + id) : $(id);
  dom.on(type, fn);
}

“你还是很聪明的。是这样,通过适配器我们发现如果两种框架的‘血缘’比较相近,那么我们适配起来是比较容易的,如果‘血缘’相差甚远我们的适配器写起来要复杂得多,因此你要记住,日后非到万不得已情况下,尽量引入相似框架。”

“是呀,后一种要写不少代码呀。”小白补充说。

相关文章
|
4月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
27天前
|
设计模式 JavaScript 算法
浅谈几种js设计模式
设计模式是软件开发中的宝贵工具,能够提高代码的可维护性和扩展性。通过单例模式、工厂模式、观察者模式和策略模式,我们可以解决不同场景下的实际问题,编写更加优雅和高效的代码。
28 8
|
2月前
|
设计模式 数据安全/隐私保护
Next.js 实战 (七):浅谈 Layout 布局的嵌套设计模式
这篇文章介绍了在Next.js框架下,如何处理中后台管理系统中特殊页面(如登录页)不包裹根布局(RootLayout)的问题。作者指出Next.js的设计理念是通过布局的嵌套来创建复杂的页面结构,这虽然保持了代码的整洁和可维护性,但对于特殊页面来说,却造成了不必要的布局包裹。文章提出了一个解决方案,即通过判断页面的skipGlobalLayout属性来决定是否包含RootLayout,从而实现特殊页面不包裹根布局的目标。
123 33
|
3月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
886 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
3月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
4月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
4月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
4月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
83 2
|
4月前
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
67 2
|
4月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
112 4

热门文章

最新文章