`
j2eetop
  • 浏览: 64513 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

TinyUI组件开发示例

 
阅读更多
TinyUI实际上并不是一个具体的UI展现组件,它只是一个UI构建体系。它可以适应于各种Html+CSS+JS的体系架构中。 TinyUI主要解决下面的问题:
  • UI中JS的引入与顺序,JS合并的问题
  • UI中css的引入与顺序,CSS合并的问题
  • UI中碰到性能问题时的影响范围,比如:一个树出现问题,要改动许多用到树的地方
  • 代码重复的问题,同样的内容在许多地方都有,如果要改动就要改动许多个地方
  • 整体布局调整困难的问题
  • 开发效率的问题
  • 执行效率的问题,前台响应要求速度更快
  • 集群的问题
  • 国际化的问题
  • 等等
所以,它只是一个体系,不提供具体的UI组件,只是便于进行对其它UI框架进行包装、集成,同时解决运行过程中的各种问题。它还解决了模块化的问题,也就是说大家都按照规范构建一个一个的模块,然后复用的时候,是不用考虑如何引入css,js以及其引入顺序的相关问题的。 关于体系性的说明,请移步查阅UI开发的终极方案
下面我们就以集成Jquery和Jqueryui来示例,如何进行TinyUI组件包的开发。
JQuery TinyUI组件包的的开发
  • 新建一个Maven的Jar类型工程
  • 在main/resources/中创建jquery/js目录,然后在/jquery/js/目录中放入jquery-1.11.0.js文件
  • 在main/resources目录中创建jquery.ui.xml,文件内容如下

1
2
3
4
5
<ui-components>
<ui-component name="jquery">
<js-resource>/jquery/js/jquery-1.11.0.js</js-resource>
</ui-component>
</ui-components>



OK,JQuery的UI组件包就算开发完毕了。
简单说明:其实上面的文件组织形式,只是个示例而已,实际上你也可以根据你自己的需要制订自己的规范,来进行目录的组织,唯一需要注意的是js-resource中的jquery-1.11.0.js所在的路径,以/resources为根开始要正确引用。

JQueryUI TinyUI组件包的的开发
  • 新建一个Maven的Jar类型工程,并依赖上面创建的jquery工程
  • 在main/resources/中创建jqueryui/js目录,然后在/jqueryui/js/目录中放入jquery-1.11.0.js文件
  • 在main/resource/jqueryui/中创建theme目录,里面放jqueryui的所有主题文件夹
  • 在main/resources目录中创建jqueryui.ui.xml,文件内容如下

1
2
3
4
5
<ui-components>
<ui-component name="jqueryui" dependencies="jquery">
<js-resource>/jqueryui/js/jquery-ui-1.10.3.custom.js</js-resource>
</ui-component>
</ui-components>



OK,JQueryUI的UI组件包就算基本开发完毕了。
解释一下与做JQuery工程时的差异,为什么要在pom中依赖上面创建的jquery工程呢??原因是JQueryUI的运行需要用于JQuery运行库。
为什么已经在pom中依赖jquery包,还要在ui-component一行中要增加dependencies="jquery"属性呢??
因为Pom依赖解决的问题是如果要用JQueryUI,则必须要有JQuery的运行库。
但是有了运行库之后呢,JS的引入是有先后顺序的。这个时候,TinyUI框架就无法知道把哪个js引入在前面,但是有了dependencies="jquery"属性,TinyUI框架就知道,哦,jqueryui只能在jquery之后引用。
为什么上面有个说法叫基本完成呢?就是说,现在确实可以算做已经完成,但是程序员在写代码的时候还是要对JQueryUI进行深入学习,然后编写时的写法与原来没有什么本质的区别,这当然不是TinyUI框架解决问题的终点。
有没有办法,让不懂JQueryUI的人也可以简单的使用JQueryUI?当然可以,请看下节,创建界面组件定义文件。
TinyUI组件的定义在jqueryui工程的/resources目录中创建component目录,然后中其中创建jquery_ui.component文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
##==================================================================================
## jqueryUI Dialog
##==================================================================================
#*
参数
id:ID
title:标题
construct:构建参数,详细参见jqueryui手册
*#
#macro(jui_dialog $id $title $construct)
<div id="$id" title="$!title">
$!bodyContent
</div>
<script>
$(function() {
$( "#$!id").dialog($!construct);
});
</script>
#end
##=================================================================================



如上,定义了一个宏,名字叫jui_dialog,它有两个参数,一个是标题,一个是构建参数。
采用的语法是Velocity语法--因为内部就是集成了Velocity模板语言的。
以后的人开发的时候,使用就非常简单了,只要输入下面的内容:

1
2
3
#@jui_dialog("窗口标题")
这里放内容
#end



就可以直接使用JQueryUI的Dialog来显示一个对话框了。
当然,你也可以定义更多的宏,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
##==================================================================================
## jquery accordion,参数:ID,构建参数
##==================================================================================
#macro(jui_accordion $id $construct)
<div id="$id">
$!bodyContent
</div>
<script>
$(function() {
$( "#$id" ).accordion($construct);
});
</script>
#end
##==================================================================================

##==================================================================================
##by 罗果 jquery accordion section,参数:标题
##==================================================================================
#macro(jui_accordionSection $title)
<h3>$!title</h3>
<div>
$!bodyContent
</div>
#end
##==================================================================================



然后就可以在编写界面的时候用下面的方式来构建一个抽屉效果了:

1
2
3
4
5
6
7
8
9
10
11
#@jui_accordion("abc")
#@jui_accordionSection("第一个抽屉")
第一个抽屉的内容
#end
#@jui_accordionSection("第二个抽屉")
第二个抽屉的内容
#end
#@jui_accordionSection("第二个抽屉")
第二个抽屉的内容
#end
#end



通过上面的处理,就可以在很大程度上屏蔽开发人员对具体的UI开发框架的依赖,而是在别人研究之后的基础上,像调用函数一下,就可以方便的来构建界面应用了。 TinyUI界面的开发TinyUI的界面开发,有两种文件格式,一种以.page结尾,一种以.layout结尾
.page文件表示是用来展现的一个页面文件,.layout文件表示是一个布局文件,它自己不能被单独用来展示,但是可以进行布局定义,并影响.page文件的展现效果。干巴巴的说,比较晦涩,还是用例子来进行演示:
  • 新建一个jar类型的maven工程
  • 在main/resources/目录中创建下面的目录结构目录,

1
2
main/resources/demo/a
main/resources/demo/b



也就是说在main/resources上创建demo目录,然后在demo目录中分别创建a和b两个子目录
在demo目录中创建default.layout文件,内容如下:

1
2
3
<h3>这里是Header</h3>
$pageContent
<h3>这里是Footer</h3>



然后在a目录中创建一个a.page,内容如下:

1
我是a



在b目录中创建一个 b.page,内容如下:

1
我是b



在执行的时候,浏览器中输入http://localhost:8080/sample1/demo/a.page
它的运行结果是:

1
2
3
<h3>这里是Header</h3>
我是a
<h3>这里是Footer</h3>



在执行的时候,浏览器中输入http://localhost:8080/sample1/demo/b.page
它的运行结果是:

1
2
3
<h3>这里是Header</h3>
我是b
<h3>这里是Footer</h3>



看起来,布局文件确实已经起效果了。
一些特殊用法用法1:个性化,从上面的例子中,可以看到布局文件会对当前文件夹中的所有文件起作用。但是在特殊场景下,确实有想不一样的情况出现,这时有两个办法:一个是把不一样的从当前目录中分离出去,另外一个是创建一个同名的布局文件。 比如,在上面的例子中,在demo目录中创建一个a.layout文件,其内容是如下:

1
2
3
<h3>This is Header</h3>
$pageContent
<h3>This is Footer</h3>





在执行的时候,浏览器中输入http://localhost:8080/sample1/demo/a.page
它的运行结果就会变成:

1
2
3
<h3>This is Header</h3>
我是a
<h3>This is Footer</h3>



用法2:Ajax支持:
比如,用Ajax进行局部加载的时候,不期望进行布局加载,只想这个page文件有啥就出啥,否则就会导致重复渲染的情况。TinyUI框架对此也有良好支持,只要请求的时候,在page后面加个let即可:
http://localhost:8080/sample1/demo/a.pagelet
这个时候它出来的内容都只有:

1
我是a



用法3:国际化支持 如果我想中国人访问,显示“我是a”,美国人访问,显示"I am a",怎么办呢?
创建a.zh_CN.page内容是“我是a”
创建a.en_US.page内容是 “I am a”
同理,布局文件也支持同样的国际化规则支持。
当然这个适合于两个页面结构及内容大相径庭的情况。
如果只是利用国际化资源进行简单的国际化内容支持
比如,有个国际国资源key值是title,那只要简单的写成#i("title")即可。
总结:TinyUI是一个UI构建体系,但它不是一个具体的UI框架,因此它里面没有JS,没有CSS,也没有HTML,它只是提供了集成各种UI展现框架的能力,并提供了UI组件包的组织形式。并解决JS,CSS引入顺序、合并、压缩、国际化等问题。
上面只演示了部分的特性,更多的请参阅相关文档或下载后直接试用。
分享到:
评论

相关推荐

    基于TINY4412的Andorid开发-------简单的LED灯控制源代码

    在本项目中,“基于TINY4412的Android开发——简单的LED灯控制源代码”是一个教程或示例,展示了如何使用Android系统进行硬件访问,特别是控制LED灯。TINY4412是一款常见的微控制器开发板,常用于嵌入式系统设计,它...

    vue element-ui el-date-picker限制选择时间为当天之前的代码

    在使用Vue.js框架开发前端界面时,经常会用到Element UI库中的组件来实现复杂的交互功能。Element UI是由饿了么前端团队开源的一套基于Vue 2.0的桌面端组件库,广泛应用于Web开发中。其中,`el-date-picker`组件是一...

    《自己动手写前端框架》电子书.pdf

    电子书还涉及了一些与开发环境有关的话题,例如在Linux下搭建Tiny开发环境、如何重构SmartAdmin来展示TinyUI、在Tiny框架中引入缓存解决方案如EhCache和JCS,以及如何利用Tiny框架中的组件来进行Web界面开发等。...

    C++builder小程序源码

    2. **VCL库**:Visual Component Library(VCL)是C++Builder的核心,包含了一系列预先构建的UI组件,如按钮、文本框、表格等,开发者可以通过拖放这些组件到表单上快速创建用户界面。 3. **RAD工具**:C++Builder...

    qtGPS定位源码,配tiny6410

    Tiny6410是一款基于ARM926EJ-S内核的开发板,通常用于嵌入式系统的开发和学习,具有丰富的接口和资源,适合作为GPS应用的基础硬件平台。 QT是一个跨平台的C++图形用户界面应用程序框架,由 Trolltech 公司(现为 ...

    精美日期选择器精美颜色选择器

    - **功能**:日期选择器是一种交互式的UI组件,允许用户方便地选择日期。在网页表单中,它通常用于生日、预约日期或任何需要日期输入的场景。 - **实现方式**:JavaScript库如`jQuery UI Datepicker`或`Bootstrap ...

    flex基础学习资料

    前者提供了大量实用的代码示例,帮助解决开发过程中遇到的问题;后者则侧重于实际项目开发经验,让读者了解如何将Flex应用于实际的企业场景。 综上所述,学习Flex需要理解其基本概念,掌握ActionScript和MXML的语法...

    arm用户手册

    - **Tiny2451/Mini2451/Tiny2416平台支持**:文档适用的开发板包括Tiny2451、Mini2451以及Tiny2416,这些平台为ARM开发提供硬件基础,便于进行各种应用和程序的开发与测试。 #### 2. 软件更新与支持 - **Linux软件...

    lotus domino BS开发 在文檔開關引用JS和CSS

    在示例中,我们看到了jQuery和jQuery UI的引用,这些都是常用的前端开发框架,它们提供了丰富的API和组件,简化了DOM操作、事件处理和动画效果。此外,还有`jqGrid`,这是一个用于创建数据网格的jQuery插件。 6. *...

    前端学习会用到的网站

    - 提供丰富的 UI 组件和样式。 #### 20. ExMobi - **网址**:http://edu.exmobi.cn/learn/ - **简介**:ExMobi 提供了完整的移动应用开发教程。 - **使用场景**: - 适合初学者系统学习移动应用开发。 - 提供了...

    CEGUI带生成好的VS工程

    CEGUI(Composite UI Element Library)是一个开源的图形用户界面(GUI)系统,专为游戏开发和实时3D应用设计。这个“CEGUI带生成好的VS工程”是一个包含Visual Studio(VS)项目的压缩包,便于开发者在Windows环境...

    javascript颜色调色板

    在前端开发中,颜色选择器通常用于表单输入、UI组件定制或者图形编辑应用等场景。JavaScript可以利用HTML5的Canvas API、CSS3以及一些库来创建动态的颜色选择界面。 首先,我们需要理解颜色的基本概念。颜色可以用...

    Plist文件查看器

    "TestMFC"项目使用MFC来创建一个Plist文件查看器,这表明我们可以利用MFC的丰富UI组件和类库来构建用户界面,展示Plist文件的内容。MFC是微软为Windows应用程序开发提供的一个C++库,它提供了一种面向对象的方式来...

    epub阅读dll控件内含解压缩代码

    EPUB阅读dll控件是开发EPUB阅读器的关键组件,它允许开发者将EPUB文件解析并展示在用户界面中。通过这个控件,我们可以轻松地将EPUB阅读功能集成到自己的应用程序中,无论是桌面应用还是Web应用。该控件的源码包含了...

    js或Jquery弹出层

    压缩包中的文件 "demo.html" 可能就是一个包含上述示例的 HTML 文件,而 "tc.all.js" 和 "tc.min.js" 很可能是某个 JavaScript 库或框架,比如 TinyColor 或者其他 UI 组件库,它们可能包含了弹出层的更高级实现,如...

    Android rss阅读器

    【Android RSS阅读器】是一...这款Android RSS阅读器的源代码对学习Android应用开发,特别是网络数据处理、UI设计和数据库操作等方面提供了很好的实践示例。通过研究和理解代码,开发者可以提升自己的Android开发技能。

    对于开发者的CEGUI的配置包

    CEGUI(Composite UI Environment)是一个开源的图形用户界面(GUI)库,专为游戏开发和实时应用程序设计。它提供了一套灵活且可扩展的组件,允许开发者创建丰富的、动态的用户界面。本压缩包“对于开发者的CEGUI的...

    jquery写的颜色器

    2. **UI组件构建**:颜色选择器通常包含一个颜色面板、拾色滑块、预览区域等部分。开发者需要用HTML和CSS构建这些组件,然后利用jQuery处理它们的交互逻辑。例如,使用CSS3的`linear-gradient`或`radial-gradient`...

    svg-t 图形 指南

    - **个性化设计**:开发人员可以根据需求创建独特的SVG图标和组件。 - **统一风格**:保持应用界面的一致性和专业感。 3. **优化的图像** - **高效存储**:SVG文件占用的空间比同等质量的位图文件少。 - **加载...

Global site tag (gtag.js) - Google Analytics