论坛首页 Web前端技术论坛

从JSF和Ext看WebUI开发--给对JavaScript 有恐惧感的朋友

浏览 75305 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-04-29  
asheng88 写道
引用
你老盯着那cms/bbs干嘛,重点是框架。。。。7wxAop代码很少,读读代码就知道性能好不好了。

呵呵,对于框架和应用系统我更喜欢研究应用系统,应用系统的性能不是框架决定的吗?

在tomcat6.0上安装XJawa宣告失败,建议官网上直接提供可运行包下载!要框架让更多的人使用就要低高手一起照顾,再说真正高手又有几个。

 

 

看错误信息,是路径映射没成功。看看这个加了没有:

  <servlet-mapping>
    <servlet-name>cms5server</servlet-name>
    <url-pattern>/xjawa/*</url-pattern>
  </servlet-mapping>



还要注意第4步:

4、库lib:将{xjawa}/lib/下的所有文件复制到{WebRoot}/WEB-INF/lib/,将其中的cmsbbs.zip解压到{WebRoot}/WEB-INF/classes/。

cmsbbs.zip解压后,不能是classes/cmsbbs/com/xjawa/。。。应该是classes/com/xjawa/

 

 tomcat太大了,怕它。

0 请登录后投票
   发表时间:2008-04-30  
不就是HTML在Server端还是在Client端生成的区别而已吗。
0 请登录后投票
   发表时间:2008-05-04  
引用
不就是HTML在Server端还是在Client端生成的区别而已吗。

本质如此,可演化出了一种程序思想!
引用
B端和S端彻底分开,分别有自己的框架,“UI层与系统其他层面的东西的唯一联系应该是"数据" ,UI层应该是在后台系统不变的情况下可切换的”,这种架构策略完全可行,而且实际代码上也比JSF/asp.net等“server page”变种优雅

彻底分离是否存在某些严重的问题?如果没有问题,那么这样的框架应该早百年就流行了。不过看到下面这段话把我吓一跳!!
leebai:
引用
我认为,不管是哪种粗粒度界面组件实现,最好都由浏览器厂家联合来做,做出标准、通用、有持久生命力的界面组件。微软推出.net的时候,粗看简介我还以为是理想中的界面层技术,细看代码原来还是“服务器动态页面”,后来SUN的JSF也这么学,我们公司一个项目组现在在用的SAP的webDypro也是,因此我都有点怀疑:业界大佬们之所以不愿意在客户端组件上下功夫,之所以不想变革目前的Web应用架构,不是因为他们没看到技术需求,而是因为,他们的根本利益在于利润丰厚的各种服务器端产品;Web开发之所以搞得这么复杂,里面说不定有什么惊天大阴谋;或者说,这些业界大佬们睁一只眼闭一只眼地看着广大Web开发者累得死去活来,看着Web独立开发商和集成商一个个倒下去,却背过身去窃笑着点着大把的钞票----扯远了:),这问题有空发个专贴,反正做了6年IBM独立开发商就给我这种感觉。

惊天大阴谋,高手果然就是高手
下载的xjawa.zip第一天跑得很欢,可正当准备研究它的时候出问题了,主页可以打开,但进不了论坛:
  • 大小: 28.3 KB
0 请登录后投票
   发表时间:2008-05-04  
leebai 写道
Ajax框架的核心是浏览器和服务器之间的异步通讯,通常的Ajax程序使用非W3C标准的 XMLHttpRequest 作为通讯组件,7wxAop没有用XMLHttpRequest,而是采用简单的IFrame。从7wxAop的实践看,封装良好的IFrame通讯机制比XMLHttpRequest更好用,也更易用。

有没有哪个高手告诉我,这段话是否有地方存在问题?何为封装良好的IFrame?

leebai 写道

引用
7,S和B端全部传送的是数据,B端调用的是S端的服务,是否可以把S端完全改造为OO的?业务流程变为B(ajax)-->应用服务--->领域服务--->DAO等基础设施服务。

完全可以。我提倡的就是 View(就是你说的B(ajax))<--> Model编程,7wx调用后台Model(WebActions)的方法,就是一种RPC,和dwr是类似的,但比dwr简单。

把后端用OO替换,话说起简单,做做看?一个数据对象在jpa,spring里全部OO,可到表现层必须一个个肢解然后sendXX到脚本代码里面,别扭吗?特别是模型聚合模型时,难想象。还有业务层提供的OO数据是否还能够使用7xm的tree和list?不能使用的话就自己重写脚本画界面吧,form就不用说了,已经被多业务层阻挡。

to leebai:
请教一下你的数据页面,当一个表单target到某个内嵌框架IFRAME(buffer)的时候,你是如何做到通过buffer.name的方式获取后台数据的,在你的代码中我没有找到类似new buffer();buffer.add(var name)之类的代码。每个数据页面中都会出现XcurBuffer=window,为何不直接写死在sys_core.js中?
0 请登录后投票
   发表时间:2008-05-04  
·B端和S端彻底分开,分别有自己的框架。
彻底分离以前的确有严重问题——客户端计算机的性能和客户端脚本的成熟、应用程度。
现在这种问题越来越少了。在某些强交互类站点如gmap、gmail等,后台可以不生成任何html代码,只是给出数据就可以了。当然对于论坛等需要搜索引擎收录内容的站点,后台还是要把数据混杂在html里发到浏览器,这样的另外好处是在不支持js的客户端仍可浏览。

·何为封装良好的IFrame?
一个更通用的异步通讯方法,应该不仅使用XMLHttpRequest对象,还要使用动态创建<script>元素或<iframe>元素与跨域的服务端交互。因为XMLHttpRequest虽然可以提供更多的交互信息,但他是受同源策略限制的。
leebai所说的原文是“封装良好的IFrame通讯机制XMLHttpRequest更好用,也更易用。”而不是“封装良好的IFrame”。
0 请登录后投票
   发表时间:2008-05-04  
是不是惊天大阴谋,我其实不关心,
我不会因为他们是大厂家,就把他们的方案和思路当令箭.
我只遵守:
我是程序员
要的是自己的代码
要的是自己思路的体现
说句不好听的,前台框架真的建立起来了,后台开发平台会趋向什么语言呢?
肯定是两个方向:
1.简单易上手,易部署的动态语言
php,lua,javascript(别小看这个,照样能做后台服务器程序就是执行效率太低),perl(毕竟linux支持的很好)...java就不在此列了
2.可生产本地机器代码的程序
c/c++/d/Haskell(GHC)
还会产生另外一个影响,就是语言的多样性发展,一枝(或2,3枝)独秀的局面将彻底打破.
另外数数计算机语言历史上经典的流行,有多少是由大长家独立原发的?
c/pascal/lua/d(还没有流行)/Perl/Python(由研究机构发起)/basic.......
你就查吧,这些有灵魂的语言都不是大长家原发的,
大长家原发什么呢?
delphi 自创的VCL
.net   做平台了(完全是竞争逼的)
java   虚拟机(这个仅仅算卖点),还是做他的平台,最近才逼得有开源的趋向.
大厂家考虑的只有一个,就是卖的是产品,不是语言,羊的门.入我的门吧,受我包护,当然也受我约束.
可以预见的未来是,每个程序员都可以随时自定义一门语言,并且遵循某种协议在不同语言间交互协同工作.
但这个局面绝对不是靠大厂家来完成的.
看看IBM的发展道路,IBM是做什么的?
不是产品是服务,IBM才是有眼光和更高层次战略的公司.
0 请登录后投票
   发表时间:2008-05-04  
xzs 写道
引用
不就是HTML在Server端还是在Client端生成的区别而已吗。

本质如此,可演化出了一种程序思想!
引用
B端和S端彻底分开,分别有自己的框架,“UI层与系统其他层面的东西的唯一联系应该是"数据" ,UI层应该是在后台系统不变的情况下可切换的”,这种架构策略完全可行,而且实际代码上也比JSF/asp.net等“server page”变种优雅

彻底分离是否存在某些严重的问题?如果没有问题,那么这样的框架应该早百年就流行了。不过看到下面这段话把我吓一跳!!
leebai:
引用
我认为,不管是哪种粗粒度界面组件实现,最好都由浏览器厂家联合来做,做出标准、通用、有持久生命力的界面组件。微软推出.net的时候,粗看简介我还以为是理想中的界面层技术,细看代码原来还是“服务器动态页面”,后来SUN的JSF也这么学,我们公司一个项目组现在在用的SAP的webDypro也是,因此我都有点怀疑:业界大佬们之所以不愿意在客户端组件上下功夫,之所以不想变革目前的Web应用架构,不是因为他们没看到技术需求,而是因为,他们的根本利益在于利润丰厚的各种服务器端产品;Web开发之所以搞得这么复杂,里面说不定有什么惊天大阴谋;或者说,这些业界大佬们睁一只眼闭一只眼地看着广大Web开发者累得死去活来,看着Web独立开发商和集成商一个个倒下去,却背过身去窃笑着点着大把的钞票----扯远了:),这问题有空发个专贴,反正做了6年IBM独立开发商就给我这种感觉。

惊天大阴谋,高手果然就是高手
下载的xjawa.zip第一天跑得很欢,可正当准备研究它的时候出问题了,主页可以打开,但进不了论坛:

彻底分离是有问题,有时还很严重,比如,你就碰上了(“进不了论坛”)。如果Web客户端有足够强大和稳定的组件(大厂商能做而不愿做),就不会出现你碰到的问题。

看你的页面低下有个脚本错误,双击打开,看看是什么原因。

 

0 请登录后投票
   发表时间:2008-05-04  
xzs 写道
leebai 写道
Ajax框架的核心是浏览器和服务器之间的异步通讯,通常的Ajax程序使用非W3C标准的 XMLHttpRequest 作为通讯组件,7wxAop没有用XMLHttpRequest,而是采用简单的IFrame。从7wxAop的实践看,封装良好的IFrame通讯机制比XMLHttpRequest更好用,也更易用。

有没有哪个高手告诉我,这段话是否有地方存在问题?何为封装良好的IFrame?

leebai 写道

引用
7,S和B端全部传送的是数据,B端调用的是S端的服务,是否可以把S端完全改造为OO的?业务流程变为B(ajax)-->应用服务--->领域服务--->DAO等基础设施服务。

完全可以。我提倡的就是 View(就是你说的B(ajax))<--> Model编程,7wx调用后台Model(WebActions)的方法,就是一种RPC,和dwr是类似的,但比dwr简单。

把后端用OO替换,话说起简单,做做看?一个数据对象在jpa,spring里全部OO,可到表现层必须一个个肢解然后sendXX到脚本代码里面,别扭吗?特别是模型聚合模型时,难想象。还有业务层提供的OO数据是否还能够使用7xm的tree和list?不能使用的话就自己重写脚本画界面吧,form就不用说了,已经被多业务层阻挡。

to leebai:
请教一下你的数据页面,当一个表单target到某个内嵌框架IFRAME(buffer)的时候,你是如何做到通过buffer.name的方式获取后台数据的,在你的代码中我没有找到类似new buffer();buffer.add(var name)之类的代码。每个数据页面中都会出现XcurBuffer=window,为何不直接写死在sys_core.js中?



7wxAop对IFrame的封装就很“良好”啊,因为你感觉不到IFrame的存在:要做的只是callServer(),然后在回调函数中,从buffer里取返回数据。s79理解的对。IFrame比XHR好的另外一点就是,带文件上传的请求和普通请求可以做到编程没有差别,一样的方式处理。

 

buffer是在页面引用7wx.js时框架自动附加的iframe,所以你看不到“new buffer();”之类的代码。除了buffer之外,还有一个备用的buffer0,用于buffer的请求还没返回时,发出另外的一个请求(特殊场合下有这需求)。XcurBuffer=window就时为了区分这两个不同的buffer。

 

7wxAop的Model(WebActions)开发确实对OO对象的输出(转换成前端js数据)支持比较弱,好在大部分企业业务系统的后台数据都时RDBMS,7wxAop的SQLHTTP+AutoAction对关系表的处理和输出还是很简单,因此绝大部分Action的编程非常简洁。我将找时间另发个帖子谈谈SQLHTTP(AutoSQL)的设计思想。

 

 

0 请登录后投票
   发表时间:2008-05-04  
achun 写道
是不是惊天大阴谋,我其实不关心,
我不会因为他们是大厂家,就把他们的方案和思路当令箭.
我只遵守:
我是程序员
要的是自己的代码
要的是自己思路的体现
说句不好听的,前台框架真的建立起来了,后台开发平台会趋向什么语言呢?
肯定是两个方向:
1.简单易上手,易部署的动态语言
php,lua,javascript(别小看这个,照样能做后台服务器程序就是执行效率太低),perl(毕竟linux支持的很好)...java就不在此列了
2.可生产本地机器代码的程序
c/c++/d/Haskell(GHC)
还会产生另外一个影响,就是语言的多样性发展,一枝(或2,3枝)独秀的局面将彻底打破.
另外数数计算机语言历史上经典的流行,有多少是由大长家独立原发的?
c/pascal/lua/d(还没有流行)/Perl/Python(由研究机构发起)/basic.......
你就查吧,这些有灵魂的语言都不是大长家原发的,
大长家原发什么呢?
delphi 自创的VCL
.net   做平台了(完全是竞争逼的)
java   虚拟机(这个仅仅算卖点),还是做他的平台,最近才逼得有开源的趋向.
大厂家考虑的只有一个,就是卖的是产品,不是语言,羊的门.入我的门吧,受我包护,当然也受我约束.
可以预见的未来是,每个程序员都可以随时自定义一门语言,并且遵循某种协议在不同语言间交互协同工作.
但这个局面绝对不是靠大厂家来完成的.
看看IBM的发展道路,IBM是做什么的?
不是产品是服务,IBM才是有眼光和更高层次战略的公司.


没错,前后台分开之后的最大好处,就是:程序员不再被某种语言或技术或架构或服务器绑死,想换哪端(B or S)就换哪端。
0 请登录后投票
   发表时间:2008-05-04  
leebai 写道

7wxAop的Model(WebActions)开发确实对OO对象的输出(转换成前端js数据)支持比较弱,好在大部分企业业务系统的后台数据都时RDBMS,7wxAop的SQLHTTP+AutoAction对关系表的处理和输出还是很简单,因此绝大部分Action的编程非常简洁。我将找时间另发个帖子谈谈SQLHTTP(AutoSQL)的设计思想。

很期待,说实话,我是被你和s79从jdon论坛钩过来的,看了你们在那里的帖子,PF,PF.我就不客气了,把那里的主导思想copy过来问一下,用你的7mx开发软件,非常适合小中型系统,而且数据面向关系,可是一旦系统做大了怎么办?向何处扩展?用OO重写?再集群分布?

leebai 写道


彻底分离是有问题,有时还很严重,比如,你就碰上了(&ldquo;进不了论坛&rdquo;)[img]../../../../../../images/smiles/icon_biggrin.gif" alt="[/img]。如果Web客户端有足够强大和稳定的组件(大厂商能做而不愿做),就不会出现你碰到的问题。

看你的页面低下有个脚本错误,双击打开,看看是什么原因。


似乎在leebai的文档中看到过,用这个框架出问题时大不了界面上某些小角落显示不出来,呵呵,可我现在呢?直接白屏了,哈哈!!

可否讲解一下sys_core.js中的这些代码的作用,我初学js,不懂,谢谢!!
if(window.HTMLElement) {
	HTMLElement.prototype.__defineGetter__(
		"outerHTML", 
		function(){
			var str = "<" + this.tagName.toUpperCase(); 
			for (var i=0; i<this.attributes.length;i++) {
				var attr = this.attributes[i];

				str += " ";
				str += attr.nodeName + "=" + '"' + attr.nodeValue + '"';
			}
			str += ">" + this.innerHTML + "</"+this.tagName.toUpperCase()+">";
			return str;
		}
	);


	HTMLElement.prototype.__defineSetter__(
		"outerHTML", 
		function(s){
			var range = this.ownerDocument.createRange();
			range.setStartBefore(this);
			var fragment = range.createContextualFragment(s);
			//alert(fragment);
			this.parentNode.replaceChild(fragment, this);
		}
	);



	HTMLElement.prototype.__defineGetter__(
		"parentElement", 
		function(){
			return this.parentNode;
		}
	);

	HTMLElement.prototype.__defineGetter__(
		"children", 
		function(){
			return this.childNodes;
		}
	);
	
	CSSStyleSheet.prototype.__defineGetter__(
		"rules", 
		function(){
			return this.cssRules;
		}
	);

	CSSStyleSheet.prototype.getRuleByName = function(name){
		var rules = this.cssRules;
		name = name.toLowerCase();
		for(var i=0; i<rules.length;i++){
			if(rules[i].selectorText == name)
				return rules[i];
		}
		return null;
	}

	HTMLSelectElement.prototype.add = function(opt){
		this.appendChild(opt);
	};

	KeyboardEvent.prototype.__defineGetter__(
		"srcElement", 
		function(){
			return this.target;
		}
	);

	KeyboardEvent.prototype.__defineSetter__(
		"returnValue", 
		function(b){
			if(!b){this.preventDefault();}
		}
	);

	//IE中args固定用self,即dialogArguments固定为opener ,以兼容
	//对IE,对话页中在<html>标签中用style指定宽高,window.resize不可用,默认resizale=no;
	//对firefox,上面三项刚好相反,firefox还会忆用户上次的resize
	Window.prototype.showModalDialog = function(url, args , features){
		if(features==null || features.length==0)
			features = "modal=yes";
		else{
			features = features.replace(/\:/g,"=");//IE use :
			features = features.replace(/\;/g,",");//IE use ;
			features = features.replace(/scroll/g,"scrollbars");
			features = features.replace(/dialogWidth/g,"width");
			features = features.replace(/dialogHeight/g,"height");
			features += ",modal=yes";
		}
		//if(features.indexOf("width")<0)features += ",width=0";//如不指定width,resizale=no不管用???

		//alert(features);
		url = encodeURI(url);
		window.open(url, "" , features );
		return "ok";
	};


	Window.prototype.__defineGetter__(
		"dialogArguments",
		function (){
			return this.opener;
		}
	)


BTW:com.xjawa下的那些代码为何不开源?最新消息:旺财勇士同学开发的 Ext-js 到 7wxAop 的接口 ExtAop 已经完成,请点击查看演示程序 就演示程序吗?能下载不?




  • 大小: 25.6 KB
  • 大小: 25.3 KB
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics