CN106227523A - 一种通用JavaScript数据源组件 - Google Patents

一种通用JavaScript数据源组件 Download PDF

Info

Publication number
CN106227523A
CN106227523A CN201610565356.9A CN201610565356A CN106227523A CN 106227523 A CN106227523 A CN 106227523A CN 201610565356 A CN201610565356 A CN 201610565356A CN 106227523 A CN106227523 A CN 106227523A
Authority
CN
China
Prior art keywords
data
data source
array
javascript
source component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610565356.9A
Other languages
English (en)
Other versions
CN106227523B (zh
Inventor
陈圣杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201610565356.9A priority Critical patent/CN106227523B/zh
Publication of CN106227523A publication Critical patent/CN106227523A/zh
Application granted granted Critical
Publication of CN106227523B publication Critical patent/CN106227523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种通用JavaScript数据源组件,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。本发明的一种通用JavaScript数据源组件与现有技术相比,采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能,实用性强,适用范围广泛,易于推广。

Description

一种通用JavaScript数据源组件
技术领域
本发明涉及计算机软件技术领域,具体地说是一种通用JavaScript数据源组件。
背景技术
随着浏览器技术的发展,Html渲染效率和JavaScript解析速度得到大幅提升。使用Html+JavaScript技术开发绚丽的Web应用越来越流行。各个控件厂商随即推出了各自基于Html5技术的Html控件,每套控件都有各成体系的数据绑定机制。有的控件提供自己的数据源组件,有的控件直接使用JavaScript对象或者数组作为数据源。各成体系的UI控件为我们带来了一系列的问题:
控件厂商的侧重点不同,对数据增量捕获、查询、排序等特性支持程度不同;
控件各自的数据管理机制,使前端业务逻辑代码严重绑定某一特定UI,难以开发一个稳定的业务逻辑框架;
混合使用不同系列UI控件,或者替换已有UI的难度较大。
针对以上问题,本发明提出了一种有效的解决方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种通用JavaScript数据源组件。
一种通用JavaScript数据源组件,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。
数据源组件包括若干数据源对象,数据源对象实现了JavaScript数组接口,具有过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能;该数据源对象是数据的容器,其中包括若干数据项。
所述数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象;数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义,即使用Object底层API观察对象,直接为观察对象的属性赋值即可记录数据变更。
数据源组件具有数据视图功能,数据视图中包含的数据为视图项,视图项是对数据项的包装。
数据视图时将数据源对象进行过滤、排序后的数据子集用于以不同形式展示的数据,且一个数据源对象创建至少一个数据视图。
本发明的一种通用JavaScript数据源组件和现有技术相比,具有以下有益效果:
本发明的一种通用JavaScript数据源组件,采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能;因为商业、开源控件均支持JavaScript数组数据源,本发明完全覆盖JavaScript数组接口,所以本发明可以适配各种Html控件,为不同厂商的控件提供统一的数据源管理功能,屏蔽UI控件层的差异,保持业务逻辑代码稳定,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的实现示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
如附图1所示,本发明的一种通用JavaScript数据源组件,适用于开发Html5+JavaScript技术的Html应用。本发明的目的是提供一个独立的数据源组件,该组件不依赖于具体的UI控件,并提供数据变更记录、排序、数据查找等数据管理功能。通过该组件使前端业务逻辑层代码与具体的UI控件解耦,增强前端代码对不同UI的适配性。
本发明采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能。
本发明总结了Html控件均支持数组数据源的规律,以JavaScript数组接口为标准接口与控件进行交互。该数据源组件独立于UI控件,提供添加数据、删除数据、过滤、排序、增量捕获等功能。
一、该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;
本发明灵活利用了JavaScript原型对象的原理,使数据源对象具有JavaScript数组的功能。JavaScript使用原型链的方式实现继承,数据源组件使用此种继承方式覆盖数组所有方法较为死板,难以复写数组原因方法并增加扩展。本发明采用直接引用数组原型对象的方式覆盖数组功能并增加扩展。
伪代码如下:
本发明采用的方法避免更改数据源对象的原型链,为数据源对象增加数组接口的同时,保留了使用数据源对象的灵活性,并在数据源对象上简单直接的扩展数组同名方法。
二、使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更;
一般情况下,JavaScript数组元素的某个属性值被改变后,不会发出任何通知。开发者为了记录属性值变化,通常采用将属性值声明为方法的方式。如:
示例1:
执行上面的代码后,object1.field1的值将变为“Hello World”,但是开发者无法捕获这个变化。
示例2:
通过上面的代码,开发者在为field2赋值时可以捕获变化了,但是严格限制了获取和设置对象属性值的方式,即必须通过方法访问对象的属性。目前许多流行的开发框架均使用这种方式记录数据的变化。
这种方式在与第三方控件进行集成时将遇到困难,如果控件按照示例1中的方式为数据复制,数据源中仍然无法捕获到数据变化。因此示例2的方式仅适用于特定的控件。
本发明使用Object对象的defineProperty方式定义对象属性。示例代码如下:
示例3:
执行上面代码后,将捕获到field3属性值的变化。
本发明采用这种方式创建数据源中的数据,实现了数据值变化的自动捕获。这种方式适用范围广,为数据源组件提供了一种通用的数据值变化捕获机制。
三、可直接用于第三方控件,为第三方控件提供统一的数据源管理功能。
商业控件和开源控件一般均支持数组作为数据源,本发明数据源组件覆盖了JavaScript数组对象的方法,可以直接替换替换数组做为第三方控件的数据源。
数据源组件提供的数据变更记录功能可以直接用在第三方控件。基于上述特征,第三方控件更新数组值的同时,本数据源组件可以自动记录数据变化,具有很好的适配性。
本数据源组件下包含若干数据源对象,数据源对象实现了JavaScript数组接口,并且本身支持过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能。
数据源对象是数据的容器,其中包含若干数据项。数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象。数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义。采用这种方式定义的属性,可以在获取、设置属性值时增加扩展逻辑,本发明采用此种方式实现数据字段的变更捕获。
数据源组件提供数据视图功能。数据视图时对数据源对象进行过滤、排序后的数据子集,用于已不同的形式展示数据。一个数据源对象可以创建多个数据视图。
数据视图中包含的数据为视图项,视图项是对数据项的包装。
以下将通过一个具体实施例,使本发明的上述目标、特征和优点更加清晰、易懂。
实例一,将数据源组件用于以数组为数据源的数据列表控件。该控件为jQuery插件,插件名为datagrid。伪代码如下:
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (5)

1.一种通用JavaScript数据源组件,其特征在于,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。
2.根据权利要求1所述的一种通用JavaScript数据源组件,其特征在于,数据源组件包括若干数据源对象,数据源对象实现了JavaScript数组接口,具有过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能;该数据源对象是数据的容器,其中包括若干数据项。
3.根据权利要求2所述的一种通用JavaScript数据源组件,其特征在于,所述数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象;数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义,即使用Object底层API观察对象,直接为观察对象的属性赋值即可记录数据变更。
4.根据权利要求1-3任一所述的一种通用JavaScript数据源组件,其特征在于,数据源组件具有数据视图功能,数据视图中包含的数据为视图项,视图项是对数据项的包装。
5.根据权利要求4所述的一种通用JavaScript数据源组件,其特征在于,数据视图时将数据源对象进行过滤、排序后的数据子集用于以不同形式展示的数据,且一个数据源对象创建至少一个数据视图。
CN201610565356.9A 2016-07-18 2016-07-18 一种通用JavaScript数据源组件 Active CN106227523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610565356.9A CN106227523B (zh) 2016-07-18 2016-07-18 一种通用JavaScript数据源组件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610565356.9A CN106227523B (zh) 2016-07-18 2016-07-18 一种通用JavaScript数据源组件

Publications (2)

Publication Number Publication Date
CN106227523A true CN106227523A (zh) 2016-12-14
CN106227523B CN106227523B (zh) 2019-03-08

Family

ID=57530864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610565356.9A Active CN106227523B (zh) 2016-07-18 2016-07-18 一种通用JavaScript数据源组件

Country Status (1)

Country Link
CN (1) CN106227523B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423072A (zh) * 2017-08-11 2017-12-01 郑州云海信息技术有限公司 web页面动态列筛选与搜索表格数据的方法和装置
CN110825531A (zh) * 2018-08-14 2020-02-21 阿里巴巴集团控股有限公司 针对动态类型语言的优化方法、装置、设备以及存储介质
CN113268223A (zh) * 2021-07-20 2021-08-17 广州市玄武无线科技股份有限公司 响应式对象创建方法、系统、介质及其框架的搭建方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109410A1 (en) * 2004-09-15 2008-05-08 International Business Machines Corporation Methods for facilitating application development
CN101650745A (zh) * 2009-09-10 2010-02-17 中兴通讯股份有限公司 一种基于数据定义的web页面快速生成方法及装置
CN102184105A (zh) * 2011-05-13 2011-09-14 中国联合网络通信集团有限公司 基于组件方式的数据处理方法及数据中心系统
CN102750137A (zh) * 2011-04-22 2012-10-24 中国科学院沈阳自动化研究所 一种面向DeviceNet总线的接口系统
CN103677810A (zh) * 2013-11-21 2014-03-26 金蝶软件(中国)有限公司 业务移动应用系统及其应用方法
CN104850590A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种生成结构化数据的元数据的方法与装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109410A1 (en) * 2004-09-15 2008-05-08 International Business Machines Corporation Methods for facilitating application development
CN101650745A (zh) * 2009-09-10 2010-02-17 中兴通讯股份有限公司 一种基于数据定义的web页面快速生成方法及装置
CN102750137A (zh) * 2011-04-22 2012-10-24 中国科学院沈阳自动化研究所 一种面向DeviceNet总线的接口系统
CN102184105A (zh) * 2011-05-13 2011-09-14 中国联合网络通信集团有限公司 基于组件方式的数据处理方法及数据中心系统
CN103677810A (zh) * 2013-11-21 2014-03-26 金蝶软件(中国)有限公司 业务移动应用系统及其应用方法
CN104850590A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种生成结构化数据的元数据的方法与装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423072A (zh) * 2017-08-11 2017-12-01 郑州云海信息技术有限公司 web页面动态列筛选与搜索表格数据的方法和装置
CN107423072B (zh) * 2017-08-11 2020-10-30 苏州浪潮智能科技有限公司 web页面动态列筛选与搜索表格数据的方法和装置
CN110825531A (zh) * 2018-08-14 2020-02-21 阿里巴巴集团控股有限公司 针对动态类型语言的优化方法、装置、设备以及存储介质
CN110825531B (zh) * 2018-08-14 2023-05-30 斑马智行网络(香港)有限公司 针对动态类型语言的优化方法、装置、设备以及存储介质
CN113268223A (zh) * 2021-07-20 2021-08-17 广州市玄武无线科技股份有限公司 响应式对象创建方法、系统、介质及其框架的搭建方法

Also Published As

Publication number Publication date
CN106227523B (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN103618774B (zh) 一种基于网络行为的资源推荐方法及装置、系统
CN107911487A (zh) 信息推送方法、装置、服务器及可读存储介质
CN104346464B (zh) 网页元素信息的处理方法、装置和浏览器客户端
CN105824786A (zh) 一种电子文档生成方法及装置
CN106227523A (zh) 一种通用JavaScript数据源组件
CN104346502B (zh) 一种基于odb++文件转化为可编辑pcb版图的方法
CN106201170A (zh) 一种应用图标的角标处理方法及终端
CN106156346A (zh) 图标的自动分类方法和装置
CN107844530A (zh) 一种数据处理方法、装置、服务器及计算机可读存储介质
CN105989102A (zh) 一种备份数据的删除方法及装置
CN103488490A (zh) 一种确定弹窗所对应的应用的方法、装置及终端
CN103577417B (zh) 清理桌面的方法和装置
CN106354804A (zh) 文件下载处理方法及装置
CN107765945A (zh) 一种文件管理方法、装置、终端及计算机可读存储介质
CN103677781A (zh) 自动化测试的图形用户界面及其创建方法
CN105988837A (zh) 一种应用程序的安装方法及装置
CN107844519A (zh) 电子装置、数据库查询脚本生成方法及存储介质
CN106325878B (zh) 图片批量上传或下载的进度显示方法及装置
CN105630757A (zh) 一种数据编辑方法及装置
CN104408193B (zh) 数据可视化模型的处理方法及装置
CN107729485A (zh) 一种数据管理方法、装置、终端及计算机可读存储介质
CN104572981B (zh) 一种网页页面缓存处理方法和移动终端设备
CN105373533A (zh) 一种页面链接地址的检测方法、客户端及装置
CN106446055A (zh) 网页的生成方法及系统
CN109271083A (zh) 数据处理方法和装置、计算设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant