`
jindw
  • 浏览: 510144 次
  • 性别: Icon_minigender_1
  • 来自: 初到北京
社区版块
存档分类
最新评论

云想衣裳花想容--JSI组件模型介绍(二)

    博客分类:
  • JSI
阅读更多

装饰引擎简介:

系统默认的装饰引擎为:org.xidea.decorator.DecoratorEngine。
JSI装载后,将做如下操作:
  1. 判断有无装饰器命名空间声明(xmlns:d= "http://www.xidea.org/taglib/decorator")
  2. 若有,将在文档装载结束后,启动装饰引擎,初始化当前可用的装饰提供者表。(装饰提供者是一个JavaScript包,在注册这种装饰包时可同时指定他的别名,别名*表示默认包)
  3. 遍历当前文档,凡是该命名空间的节点,都被看作需要装饰的元素。若当前文档存在装饰元素,启用遮罩(关机效果),页面将不可操作(仍可查阅)。
  4. 查找装饰元素对应的装饰类(通过tagName判断类名),采用异步方式动态装载这些装饰器类(不会装载到全局空间),并更新当前进度信息,同时设置装饰器之间的关系(parent,children)。
  5. 以深度遍历的方式遍历这些节点,注册组件(以后可以通过$JSI.getComponent函数获取装饰器对象),依次执行他们的before操作,和decorate操作。
  6. 完成装饰,取消遮罩,页面进入可用状态。

装饰器规范简介:

装饰器指的是所有拥有decorate成员方法的类。一般来说,可将一组装饰器归为同一个包中(太复杂的装饰器,可将具体逻辑放置在其他包中),能后在配置文件中定义装饰包。
scripts/config.js   $JSI.addDecoratorProvider("org.xidea.decorator","xidea","*");

装饰器类包含两个方法before、docorate分别在遍历前(子节点未装饰)和遍历后(子节点装饰完成)调用。

同时,装饰引擎遍历时还将注入如下三个属性:
  1. parent:父装饰器
  2. children:子装饰器集合
  3. attributes:装饰器属性集对象(只有一个成员函数:get(attrName)  )

JSI现有装饰器集合简介

目前JSI2最高版本2.0预览版 (2007-04-16)包含如下装饰器:
  1. DatePicker
    日期选择控件,参照xul datepicker标签,支持弹出方式(默认值 type='pop'),和内嵌式(type='grid')
  2. Editor
    编辑器控件,参照xul editor标签
  3. Spinner
    Spinner控件(window时间日期管理中,年份调节的控件),参照backbase 的 Spinner标签
  4. TabBox、Tabs、Tab、TabPanels、TabPanel
    TabBox(标签页)控件,参照xul tabbox标签
  5.  Code
    代码语法高亮显示控件,参照SyntaxHighlighter的显示风格
  6. Include
    片断包含标签,支持xpath选取文档片断,支持xslt转换

这些装饰器的演示见:
http://www.xidea.org/project/jsi/decorator/index.html

目前JSI自带的装饰器不够丰富,而且都还是初级阶段,不够完善。现在发布的这些装饰器,主要是为了演示JSI的工作方式,编码风格,希望能吸引第三方团队、公司在这个基础上开发出自己的更加实用的装饰器集合。

JSI及其装饰引擎采用LGPL协议。可以商业应用,当能,更希望能开源。

目前就我一人之力,开发一套完整的装饰器,尚需时日,这次将这个半成品拿出来演示,主要是为了展示一下jsd的风格,希望能吸引其他开发者,共同参与这个工程,有兴趣丰富JS自带I装饰器集合的网友,请msn与我联系:jindw◎xidea。org
分享到:
评论
3 楼 fourfire 2007-05-24  
今天强试了一下,强
2 楼 lxchit 2007-04-26  
很不错的实现方式,记得有个利用class来查找被渲染的组建,这样是不是就可以减少你的标签对html的污染呢?
另外的问题是,感觉这个框架只是渲染前端,有没有考虑如何同Server通信?
1 楼 D-tune 2007-04-18  
你的DEMO老是显示不正常,另外在什么地方下载工程?

相关推荐

    海尔液晶电源 0094001224B JSI-190419-050 JSI-220409-050原理图.pdf

    根据提供的信息,我们可以了解到这份文档是关于海尔液晶电视电源板(型号:0094001224B JSI-190419-050 JSI-220409-050)的原理图。这份原理图详细地展示了电源板的内部电路结构、元件布局及其连接方式等关键信息。...

    JSI-GAN:JSI-GAN的官方存储库(于AAAI 2020接受)

    这是JSI-GAN(AAAI2020)的官方存储库。 我们提供了培训和测试代码,以及经过训练的权重和用于JSI-GAN的数据集(train + test)。 如果您发现此存储库有用,请考虑引用我们的。 参考: Soo Ye Kim *,Jihyong Oh ...

    JSI-full-2.0

    【JSI-full-2.0】是一个基于JavaScript的项目,主要关注的是JavaScript这门编程语言。这个项目的全称可能指的是JavaScript Interface或JavaScript Integrated,但具体含义需要根据项目的文档来确定。从提供的文件...

    HDT-JSI01

    【HDT-JSI01】项目是一个以JavaScript为核心的开发实践,它可能是一个开源项目或者教程,因为通常在编程领域,这种命名格式常用于版本控制或学习资源。JavaScript是一种广泛使用的编程语言,尤其在网络开发中扮演着...

    eccl-jsi.github.io

    eccl-jsi.github.io

    using使用JSI为React Native提供快速简便的多线程-C/C++开发

    react-native-multithreading using使用JSI的React Native的快速简便的多线程处理。 安装npm install react-native-multithreading npx pod-i react-native-multithreading using使用JSI进行React Native的快速简便...

    海尔液晶电源背光板 0094001274E JSI-320411 原理图.pdf

    ### 海尔液晶电视电源背光板0094001274E JSI-320411原理图解析 #### 概述 本文将详细解析海尔液晶电视电源背光板0094001274E JSI-320411原理图中的关键元件及其功能、电路设计思路与工作原理,帮助读者更好地理解该...

    jsi-modules:用jsi进行模块学习

    "jsi-modules"项目显然是一个专注于利用JSI进行模块化学习的资源集合。下面我们将深入探讨JSI的核心概念、其在模块化编程中的应用,以及如何通过"jsi-modules-master"这个压缩包来学习和实践JavaScript模块。 首先...

    java推荐算法源码-jsi:Java空间索引

    jsi-examples 存储库。 简而言之,您需要像这样初始化 RTree: // Create and initialize an rtree SpatialIndex si = new RTree(); si.init(null); 然后添加一些矩形; 每个人都有一个ID。 final Rectangle[] rects...

    jsi-wikifier-api

    JSI Wikifier OpenAPI规范 JSI Wikifier ...链接文档: : SwaggerUI: ://jsi-eubusinessgraph.github.io/jsi-wikifier-api/swagger-ui/ 看完整规格: JSON YAML 警告:仅当Travis CI完成部署后,以上所有链接才会更新

    轻量系统JS-UI框架子系统

    对于想要深入学习和使用轻量系统JS-UI框架子系统的开发者,可以从以下几个方面入手: - **官方文档**:阅读OpenHarmony官方提供的详细教程和API参考,了解框架的基本用法和最佳实践。 - **示例代码**:通过分析 ...

    JSI, java脚本开发工具

    JSI框架提供一个无侵入的脚本库管理解决方案,和一个全面的前端开发调试、文档解析、模版编译、打包导出环境支持。 作为一个开发期间的脚本管理工具,让开发者在开发期间享受JSI带来的种种便捷,也可以作为一个运行...

    react-native-multithreading:using使用JSI为React Native提供快速简便的多线程

    :thread: 使用JSI的React Native的快速简便的多线程处理。 安装 npm install react-native-multithreading npx pod-install 需要包括的react-native-reanimated版本。 您可以自己打补丁,也可以等到它发布后再...

    react-native-quick-md5:快速C ++实现与MD5的JSI绑定,用于React Native

    通过React 5的MD5的JSI绑定,以极快的速度实现C ++实现。 确认它比在iPhone 11 Pro上使用快10倍,在Essential Phone上快8倍。 您可以在下查看基准测试。 安装 npm install react-native-quick-md5 用法 import { ...

    jsish:Jsi是一个小型的C嵌入式javascript解释器,具有紧密编织的Web和DB支持

    Jsi是带有内置websocket-server,sqlite和C -extensibility的javascript -ish解释器。 | | | 快速开始下载适用于 / 的二进制文件: wget ...

    网页博客底部跳动的小鱼原代码

    在网页设计中,为了增加互动性和趣味性,有时会在页面底部添加一些动态元素,比如“跳动的小鱼”。... ...在`<head>`部分,我们将引入外部JavaScript文件,用于实现小鱼动画的效果。例如: ... ...

    基于react-native的购物阅读APP

    React-Native通过JavaScript Native Interface (JSI)与平台的原生代码交互,实现了高效性能和接近原生的用户体验。 在登录注册功能方面,项目可能采用了React Hooks,如useState和useEffect,来管理组件的状态和...

    正泰LQG-0.66型电流互感器.PDF

    正泰LQG-0.66型电流互感器PDF,

    react-native-vision-camera:see可以看到视野的Camera库

    文献资料安装npm i react-native-vision-cameranpx pod-install特征照片和视频拍摄可定制的设备( ultra-wide-angle , wide-angle , telephoto和虚拟多镜头) 可定制的FPS 由JSI和Reanimated支持的JS Worklet帧...

    自定义三种方式进度条

    第二种方式是环形进度条。这种进度条通常用在加载或者计时场景中。我们同样从自定义View出发,使用`drawArc()`方法来绘制圆弧,圆弧的角度表示进度。可以通过设置起始角度、结束角度以及是否闭合来控制进度条的形状...

Global site tag (gtag.js) - Google Analytics