`
Sean220
  • 浏览: 2203 次
  • 性别: Icon_minigender_1
  • 来自: HZ
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于Desktop风格设计的应用框架探索

阅读更多
看到EXT版里许多基于desktop demo改写的应用界面,包括差沙老兄的那个DEMO,结合自己目前完成的工作做个简单的分享:

(1)为了追求desktop应用OAOP的实质,不采用iframe等方法来取巧,否则只是学了一个界面而已

(2)desktop应该有一个基础框架来为后续开发提供支持,包括调试、任务管理、接口模型等多个方面

(3)组件化,动态加载(根据实际需要异步或同步),desktop里的每样东西,包括开始菜单、任务栏、桌面图标、类加载提示窗口等内容都进行插件化管理。

(4)垃圾收集问题。既然作为OAOP应用,使用过程中动态加载的的模块的各种ui组件,必须保证在模块destory时从dom树上删除,这点在做的时候调试非常辛苦,举个例子:比如window组件只要close,就会自动从dom树上remove,而Menu则不会,如果带contextmenu的模块destory时候未手动将自身相关的menu清除,那么即使重复打开同一模块,未释放的menu element也会造成内存泄漏。(好在有firebug可以动态监视dom树变化)

由于没有外网服务器,加上目前完成度不高,只能用图片看看,以后差不多在拿出来共享吧。


截图已实现部分功能说明:

(1)可以从开始菜单、桌面图标加载模块(可拖放),桌面右键菜单(保存当前设置、排列图标等),快捷方式支持自定义的右键菜单,模块可根据自身需要在自身快捷方式右键菜单里加新的项(默认为打开、在新窗口打开(脱离desktop窗口,以浏览器新页面模块窗口全屏打开,即为传统方式)、删除快捷、重命名、属性)

(2)调试窗口实现类似log4j方式的消息监视,可避免到处alert(),将来可以扩展两个方面,一个方面可将本地调试日志发往服务器保存,二可以服务器日志在本地显示,调试窗口消息上点右键可打开详细内容或打开对象浏览窗口

(3)实现任务管理器机制,模块可动态加载,删除实例(包括script一起delete掉),这样在调试模块的时候不用刷新页面,只需要删除实例,再加载,即可将新的js代码重新加载并初始化实例。(?类似热部署^_^)。对具有autoRun属性的模块进行启动加载

(4)桌面图标、加载进度口等desktop本身组件也是模块,可运行过程中加载或卸载。





  • 大小: 596.8 KB
  • 大小: 551.8 KB
  • 大小: 607.8 KB
分享到:
评论
12 楼 rihoonet 2007-11-16  
cool,在哪下载?
11 楼 Sean220 2007-11-16  
只要目前2.0的api稳定了,那些细节bug对整个体系影响不大,我认为不用干等稳定版本发布,另外会在闲暇尝试跟下代码,用firebug看下css,发现往往都能解决问题
10 楼 fangzhouxing 2007-11-15  
Sean220,非常欣赏你运用Ext的高水平!希望有机会和你交流。

感觉Ext2.0RC1中还是有一些bug,看正式版本能否解决。主要是在TabPanel中显示GridPanel问题,页脚无法显示,只能等调整浏览器窗口后才显示出来。这个问题我
很早已经给Jack提出,好像一直没有解决。
9 楼 longyan1979 2007-11-15  
受益不浅,刚好在看这块内容,也想改造一下ext这个例子
希望能参与改造开发
8 楼 Sean220 2007-11-15  
to timezz:

能具体谈谈你发现的BUG么

2.0RC1 应该来讲还是比较稳定了,到现在我只发现DD里的offset的bug

就是拖放的时候,如果在notifyDrop里手动调用element的setXY,则再

拖放开始的时候,proxy里的cloneNode会偏移出位置,因为offset的缘故。

当然有可能这是使用不当的原因。
7 楼 timezz 2007-11-15  
Sean220 写道
sp42 写道
呵呵 它需要更多的Extension,小弟用EXT 做了仿WIN的资源管理器(从ext1.0 alpha起开发,现在升级到2.0了),不知可否集成?



完全可以,Desktop本身就是开放的框架,如果有资源管理器,可以让用户管理本地文件一样管理自己在服务器上的文件,上传、删除、改名等,将是一个非常有用的Extension,已M你了,QQ交流下



根据我2周对ext的学习运用,我不得不说ext的这个框架现在并不十分flexible,且bug不断(layout方面),我觉得其强项应该在grid,treeview等插件,或许等他2.0版本稳定后,再来审视其oaop的可能性吧
6 楼 sp42 2007-11-15  
嗯 有个服务端的问题
我是用MS FSO的(asp com调用)文件一般服务的
不过幸好,也是JS实现的:)

5 楼 Sean220 2007-11-15  
sp42 写道
呵呵 它需要更多的Extension,小弟用EXT 做了仿WIN的资源管理器(从ext1.0 alpha起开发,现在升级到2.0了),不知可否集成?



完全可以,Desktop本身就是开放的框架,如果有资源管理器,可以让用户管理本地文件一样管理自己在服务器上的文件,上传、删除、改名等,将是一个非常有用的Extension,已M你了,QQ交流下

4 楼 i_love_sc 2007-11-15  
引用
(3)实现任务管理器机制,模块可动态加载,删除实例(包括script一起delete掉),这样在调试模块的时候不用刷新页面,只需要删除实例,再加载,即可将新的js代码重新加载并初始化实例。(?类似热部署^_^)。对具有autoRun属性的模块进行启动加载


这个特性不错啊,开拓了思路。
3 楼 fangzhouxing 2007-11-15  
Sean220,非常感谢分享桌面风格应用框架的设计。
2 楼 sp42 2007-11-15  
呵呵 它需要更多的Extension,小弟用EXT 做了仿WIN的资源管理器(从ext1.0 alpha起开发,现在升级到2.0了),不知可否集成?
1 楼 Sean220 2007-11-15  
对于动态加载的内容,与差沙的实现略有不同,差沙的思路为所有的模块(Action)定义为json形式,如发现存在execute方法则执行,考虑到不同模块的复用可能(json方式本身就已是对象,如果两个模块功能相同而只是初始化参数不一样,那么按json方式就必须相同的json代码copy两份)


因此一个用户登录后,后台根据权限返回给taskManager的只是模块列表的config信息,一般表现形式如下
[
{id:m0102,title,'用户列表',script:"app.module.userlist",smallIconCls:"x-app-userlist-s",largerIconCls:"x-app-userlist-l",initcfg:{...},...},
{id:m0103,title,'用户新建',script:"app.module.usernew",smallIconCls:"x-app-usernew-s",largerIconCls:"x-app-usernew-l",initcfg:{...},...},
....
]
而存在可能就是两个module的script都是同一个类,但是initcfg不相同,就具有不同的标识id,不同的title,不同的icon等。


基本的Module主类定义如下
$package("app.desktop")
//所有的需要纳入任务管理器管理的模块必须由此Module继承
app.desktop.Module = function(config){
	this.opener  = null;
	this.mainApp = null
	this.openWinInTaskbar = true;  //false则不出现在任务栏,不让taskmanager打开窗口,手动打开
	this.autoRun = false
	this.type = "USER"
	
    Ext.apply(this, config);
    app.desktop.Module.superclass.constructor.call(this);
	this.classId = this.script + "-" + this.id
    this.init();
}

//继承于Observable,为模块之间、模块与desktop采用事件机制通讯提供基础 
Ext.extend(app.desktop.Module, Ext.util.Observable, {     init : function(){},
    getWin: function(){return null},//需要override,加载后taskmanager自动调用获得模块主窗口,无窗口模块可不实现该方法
    setMainApp:function(mainApp){
    	this.mainApp = mainApp;
    	this.logger = mainApp.logger.createLogger(this.classId) 
    },
    destory: function(){  //需要override,垃圾清场,关闭主窗口时自动由taskManager调用
    	if(this.win){
    		this.win.close()
	}
    }

});

相关推荐

    JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册

    ### JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册关键知识点解析 #### JIDE Desktop Application Framework 简介 - **背景**: 随着应用程序规模的扩大,Swing 开发面临诸多挑战,例如缺乏一致...

    基于CAE构建GIS桌面端应用系统框架全代码

    本压缩包中的"基于C#+AE构建GIS桌面端应用系统框架-全代码"提供了上述各个步骤的具体实现。通过学习和研究这些代码,开发者可以了解如何结合CAE方法和ArcEngine SDK构建自己的GIS桌面应用。对于初学者,这是一个很好...

    基于C#+AE构建GIS桌面端应用系统框架-全代码

    本项目“基于C#+AE构建GIS桌面端应用系统框架-全代码”是利用C#编程语言结合Adobe After Effects(AE)来开发GIS桌面应用的实践案例,旨在为开发者提供一个完整的系统框架。 C#是一种面向对象的、现代化的编程语言...

    ArcGIS 8 Desktop地理信息系统应用指南

    《ArcGIS 8 Desktop地理信息系统应用指南》是一本专为GIS(Geographic Information System)初学者和专业人士编写的详尽教程,旨在帮助读者深入理解和掌握ArcGIS 8 Desktop这一强大的地理信息系统软件。这本书以超星...

    x-desktop1.5

    "X-Desktop1.5" 是一个基于Ajax技术的桌面应用程序框架,专为构建互联网上的图形用户界面(GUI)应用而设计。Ajax,全称Asynchronous JavaScript and XML,是一种在无需刷新整个网页的情况下,能够更新部分网页内容...

    Jquery EasyUI DeskTop原创

    1. **Windows桌面风格**:jQuery EasyUI Desktop高度模仿了Windows 8的界面设计,包括开始菜单、任务栏、窗口拖放、最大化/最小化/关闭等功能,让用户在Web应用中感受到熟悉的操作体验。 2. **自定义窗口**:开发者...

    ARCGIS 8 Desktop 地理信息系统应用指南

    《ARCGIS 8 Desktop 地理信息系统应用指南》是一本深入探讨ARCGIS 8 Desktop这一GIS(地理信息系统)软件的应用手册。该书旨在帮助用户掌握如何利用此软件进行地图制作、空间分析、数据管理等核心功能。ARCGIS 8 ...

    基于Vue的WebDesktop系统TheWebDesktopsystembasedonVue

    基于Vue的WebDesktop系统,即使用Vue.js来构建类似于桌面应用的网页应用,提供更直观、操作更便捷的用户体验。 在创建基于Vue的WebDesktop系统时,首先需要对Vue的基本概念有深入理解。Vue的核心特性包括虚拟DOM、...

    Spring和Desktop的关系

    例如,"大地武士.txt"可能包含了关于如何构建一个基于Spring Desktop的特定应用的说明,而"三国之横行天下.txt"可能描述了一个历史题材桌面应用的开发案例,其中运用了Spring框架的技术。 总的来说,Spring框架虽然...

    基于C#+AE构建GIS桌面端应用系统框架

    【标题】"基于C#+AE构建GIS桌面端应用系统框架" 涉及的主要知识点包括C#编程语言、Adobe After Effects(AE)软件以及地理信息系统(GIS)的应用。这一项目旨在利用C#作为主要开发语言,结合AE进行图形界面设计,...

    GitHub Desktop(macOS版)是由GitHub开发的完全免费且开源的基于Electron的Git客户端应用程序

    GitHub Desktop是由GitHub开发的完全免费且开源的可自定义的基于Electron的Git客户端应用程序,它允许你与GitHub和其他Git平台(包括Bitbucket和GitLab)进行交互。 它的特点包括漂亮的分区方法,可以轻松地检查带有...

    GIS软件实验指导书 基于ArcGIS Desktop.pdf

    基于ArcGIS Desktop的GIS软件实验指导书

    desktop系统

    在这个特定的"desktop系统"中,我们谈论的是一个基于C#开发的桌面应用程序框架,这通常意味着它利用了微软的.NET Framework或更现代的.NET Core/.NET 5+平台。C#是一种面向对象的编程语言,以其高效、安全和强大的...

    ExtJS桌面化(desktop)插件Demo项目

    ExtJS是一款强大的JavaScript框架,专用于构建富客户端Web应用程序。在本项目中,"ExtJS桌面化(desktop)插件Demo项目"展示了如何利用ExtJS的桌面化功能创建一个类似于传统桌面应用的用户界面。这个Demo项目的核心...

    desktop:本机GUI应用程序,使您可以轻松探索和测试基于AWS Lambda的无服务器框架应用程序

    Serverless Desktop是GUI应用程序,可让您更轻松地探索和测试基于AWS Lambda构建的Serverless Framework应用程序。无服务器桌面目前处于测试阶段,我们正在寻求客户的反馈。 为了帮助我们打造您喜欢的东西,。特征 ...

    Java Desktop_java_javaDesktop_desktop_

    Java Desktop技术主要包括JavaFX和Swing这两个主要框架。JavaFX是Oracle在Java 8之后推出的下一代用户界面工具包,提供了丰富的图形和媒体功能,支持2D和3D图形,以及CSS样式化,使得开发者能够创建现代、美观且功能...

    jQuery-Desktop

    jQuery-Desktop是一款基于jQuery开发的桌面风格的用户界面库,旨在为Web应用提供类似桌面操作系统般的交互体验。这款库利用jQuery的灵活性和强大的DOM操作能力,结合CSS3和HTML5特性,创造出一种全新的Web界面展示...

    extjs4.2 desktop 拓展

    ExtJS 4.2 Desktop 拓展是一个用于构建桌面样式的Web应用程序的框架,它提供了丰富的用户界面组件和交互效果。这个拓展是基于ExtJS 4.2版本,一个非常强大的JavaScript库,用于创建数据驱动、富客户端的Web应用。在...

    extjs4.2 desktop mvc

    EXTJS 4.2 Desktop MVC 是一个基于EXTJS 4.2版本的桌面应用程序框架,它结合了MVC(Model-View-Controller)设计模式,为开发者提供了构建富客户端桌面应用的强大工具。EXTJS是一个流行的JavaScript库,专门用于创建...

Global site tag (gtag.js) - Google Analytics