缘起:
1.lqql仁兄要自己开发出一个ext和taglib结合的东西,开发人员只要通过配置就可以实现taglib调用ext,他的出发点是java开发人员无需知晓js就可以直接运用ext;
2.大安仁兄说ext很快就出visual editor,开发人员只要拖拽就可以实现前端的开发。so,根本没有必要去做ext与taglib的接口~~
3.两者的论点一下子就提到了是ext-taglib好还是visual editor好
有耐心的同志可以慢慢看完,这是qq群中的聊天记录
C.C 15:29:41
lqql同志,我们公司原来的项目也是用taglib做的,你这样的做法给我提供了个参考,不错~~~~~
lqql 15:30:20
....
lqql 15:30:35
我想做一个开源的ext-taglib
lqql 15:31:19
但是因为没有用ext做过项目,所以很多东西都不太清楚!
C.C 15:31:22
哦,那就是把ext全部封装在taglib里面喽?直接用taglib就ok了?
lqql 15:31:47
是的!
大安 15:31:55
干吗要用taglib动态生成ext
C.C 15:32:13
恩,大安有新的想法了
C.C 15:32:18
我知道为什么
lqql 15:32:22
因为为了提高开发效率!
OMagic 15:32:21
taglib这个库大吗
lqql 15:32:30
不大!
C.C 15:32:28
因为他不熟悉ext
C.C 15:32:37
他熟悉taglib
lqql 15:32:57
开发一个项目,并不能要求每个人都懂EXT
lqql 15:33:13
但是要会用taglib却很简单!
大安 15:33:37
这样反而复杂了,既要懂taglib又要懂ext
lqql 15:33:51
不需要懂ext啊!
lqql 15:34:00
只要知道属性就可以了!
C.C 15:34:03
大安,lqql的意思是只要他懂得taglib也懂得ext就可以了
C.C
我知道为什么
lqql
因为为了提高开发效率!
OMagic(93878495) 15:32:21
taglib这个库大吗
C.C ( ) 15:32:30
因为他不熟悉ext
lqql ( ) 15:32:30
不大!
C.C ( ) 15:32:37
他熟悉taglib
lqql ( ) 15:32:57
开发一个项目,并不能要求每个人都懂EXT
lqql ( ) 15:33:13
但是要会用taglib却很简单!
大安(12027555) 15:33:37
这样反而复杂了,既要懂taglib又要懂ext
lqql ( ) 15:33:51
不需要懂ext啊!
lqql ( ) 15:34:00
只要知道属性就可以了!
C.C ( ) 15:34:02
大安,lqql的意思是只要他懂得taglib也懂得ext就可以了
C.C ( ) 15:34:21
其他的开发人员直接用taglib就可以实现开发,这样
lqql ( ) 15:34:29
对!
lqql ( ) 15:34:36
这样代码也好控制!
lqql ( ) 15:34:44
因为只是标签代码!
C.C ( ) 15:34:51
目前还没有人这么做过
lqql ( ) 15:34:52
而不是一大段一大段的JS代码!
C.C ( ) 15:35:08
这个是个新思路~
lqql ( ) 15:35:51
我这个taglib里会有一个配置文件!
C.C ( ) 15:36:13
大安,说说你的看法
lqql ( ) 15:36:23
lqql ( ) 15:36:40
js代码可以在配置文件里修改!
lqql ( ) 15:37:37
我只是实现了一部分!
C.C ( ) 15:37:42
哦!!!
lqql ( ) 15:38:06
${}里的就是要设置的属性!
C.C ( ) 15:38:31
哦
C.C ( ) 15:38:50
你是不是把ext的js直接放在配置文件里?
lqql ( ) 15:38:56
是的!
C.C ( ) 15:39:09
那这个配置文件岂不是很大?
C.C ( ) 15:39:15
还有如何实现ajax?
lqql ( ) 15:39:28
不是EXT的JS文件,是用ext来写的JS!
C.C ( ) 15:39:36
恩
lqql ( ) 15:39:48
实现ajax?
C.C ( ) 15:39:54
那写这样写出来的配置文件如何解析?
lqql ( ) 15:40:42
在应用加载的时候,把配置文件解析掉,并在内存中存入一个map中!
lqql ( ) 15:40:55
用的时候就不用去解析了,直接取就行了!
C.C ( ) 15:40:58
哦~
C.C ( ) 15:41:15
那你测过没?服务端的负载会大吗?
lqql ( ) 15:41:23
这个不会的!
C.C ( ) 15:41:24
你的思路真新颖
C.C ( ) 15:41:29
不错~~~
lqql ( ) 15:41:40
不过我不知道大量taglib的时候会不会慢!
C.C ( ) 15:42:05
你这个实现过程有没有什么样例?
lqql ( ) 15:42:10
而且ext生成的控件,相当吃客户机内存!
lqql ( ) 15:42:23
什么意思?!
C.C ( ) 15:42:29
弄个小例子给我们看看
C.C ( ) 15:42:40
大家一起做这个接口~
C.C ( ) 15:42:42
呵呵~
lqql ( ) 15:42:43
我现在只写了一个dialog啊,就是上面截的图!
C.C ( ) 15:42:46
哦~~
C.C ( ) 15:43:00
能不能详细点?
C.C ( ) 15:43:18
我对你解析后弄到map这个有点不懂
lqql ( ) 15:43:23
...
lqql ( ) 15:43:56
用java解析一个xml你会吗?!
C.C ( ) 15:44:18
恩,没玩过,我都是用框架做
lqql ( ) 15:44:24
....
阿罡(16578548) 15:44:31
用什么框架?
阿罡(16578548) 15:44:42
支持ext的??
lqql ( ) 15:44:44
public class TagStart extends HttpServlet{
public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document doc = parser.parse(this.getServletContext().getRealPath("/WEB-INF/mytag-config.xml"));
NodeList nodeList = doc.getElementsByTagName("tag");
if(nodeList!=null){
for(int i=0;i
Element element=(Element)nodeList.item(i);
String name=element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
if(name!=null){
name=name.trim();
}else{
name="";
}
String start=element.getElementsByTagName("start").item(0).getChildNodes().item(1).getNodeValue();
if(start!=null){
start=start.trim();
}else{
start="";
}
String end=element.getElementsByTagName("end").item(0).getChildNodes().item(1).getNodeValue();
if(end!=null){
end=end.trim();
}else{
end="";
}
String script="";
if(element.getElementsByTagName("script").getLength()>0){
script=element.getElementsByTagName("script").item(0).getChildNodes().item(1).getNodeValue();
}
if(script!=null){
script=script.trim();
}else{
script="";
}
Constant.map.put(name+"-start", start);
Constant.map.put(name+"-end", end);
Constant.map.put(name+"-script", script);
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
lqql ( ) 15:45:20
就是一个servlet 重写init方法!
lqql ( ) 15:47:05
你写一个servlet不就行了啊!
lqql ( ) 15:47:30
干嘛要用action?用action就不能在加载的时候init了!
大安(12027555) 15:47:30
俺正在干力气活,没看明白他的意思,sorry
C.C ( ) 15:47:35
哦
C.C ( ) 15:47:44
我知道了
C.C ( ) 15:48:05
可是你就为了弄个taglib这样做是否太麻烦了
C.C ( ) 15:48:15
特别是配置,ext里面的ui小组件那么多
C.C ( ) 15:48:21
那你的配置不就很多吗?
lqql ( ) 15:48:49
这个有什么关系,配置文件就是因为ui多啊!
lqql ( ) 15:49:03
少的话还要配置文件干什么?!
C.C ( ) 15:49:23
还有个问题
lqql ( ) 15:49:32
什么问题!?
lqql ( ) 15:49:39
大安,我有个问题!
lqql ( ) 15:49:44
showDialog : function(){
if(!dialog){ // lazy initialize the dialog and only create it once
dialog = new Ext.LayoutDialog("hello-dlg", {
modal:true,
width:600,
height:400,
shadow:true,
minWidth:300,
minHeight:300,
proxyDrag: true,
west: {
initialSize: 150,
minSize: 100,
maxSize: 250,
titlebar: true,
collapsible: true,
animate: true
},
center: {
autoScroll:true,
tabPosition: 'top',
closeOnTab: true,
alwaysShowTabs: true
}
});
dialog.addKeyListener(27, dialog.hide, dialog);
dialog.addButton('Submit', dialog.hide, dialog);
dialog.addButton('Close', dialog.hide, dialog);
var layout = dialog.getLayout();
layout.beginUpdate();
layout.add('west', new Ext.ContentPanel('west', {title: 'West', split:false}));
layout.add('center', new Ext.ContentPanel('center', {title: 'The First Tab'}));
// generate some other tabs
layout.add('center', new Ext.ContentPanel(Ext.id(), {
autoCreate:true, title: 'Another Tab', background:true}));
layout.add('center', new Ext.ContentPanel(Ext.id(), {
autoCreate:true, title: 'Third Tab', closable:true, background:true}));
layout.endUpdate();
}
dialog.show(showBtn.dom);
C.C ( ) 15:49:50
配置文件解析后是什么?
lqql ( ) 15:49:53
你看上面这段代码!
lqql ( ) 15:50:04
west: {
initialSize: 150,
minSize: 100,
maxSize: 250,
titlebar: true,
collapsible: true,
animate: true
},
center: {
autoScroll:true,
tabPosition: 'top',
closeOnTab: true,
alwaysShowTabs: true
}
lqql ( ) 15:50:12
这个是直接写在dialog中的!
lqql ( ) 15:50:46
大安,谢谢了!
lqql ( ) 15:50:38
我想在dialog外,把west等注放,要怎么做?!
lqql ( ) 15:51:06
to-cc
lqql ( ) 15:51:08
Constant.map.put(name+"-start", start);
Constant.map.put(name+"-end", end);
Constant.map.put(name+"-script", script);
lqql ( ) 15:51:15
是一个map
lqql ( ) 15:51:22
HashMap
大安(12027555) 15:52:12
new 个LayoutRegion啊
C.C ( ) 15:53:00
哦
lqql ( ) 15:56:48
是怎么写到dialog里去
lqql ( ) 15:57:28
说详细点好嘛,麻烦了,我看这个东西,才几天!
大安(12027555) 15:57:49
var r = new Ext.LayoutRegion;
然后layout里面west: r
lqql ( ) 15:59:40
也就是说不需要直接写在里面的是吧!
大安(12027555) 16:00:53
当然
lqql ( ) 16:01:05
哦,明白了,我试试!
用户117747078被创建者(45865355)批准加入本群。
lqql ( ) 16:01:28
我把那个dialog写好了,发给大家看看!
C.C ( ) 16:01:49
哦,好的~~
C.C ( ) 16:01:56
有创意!
lqql ( ) 16:02:02
还有一个问题,就是那个ext all那个JS可以拆分吧?!
lqql ( ) 16:02:26
因为那个文件比较大,我想实现依赖注入!
安了!(117747078) 16:04:27
大家好,我是EXT初学者。
哪位有ext tree的完整例子,发给我一份好吗?最好有服务端的。
谢谢。
大安(12027555) 16:05:18
ext的visual editor相信会出来,taglib->ext就不必了
C.C ( ) 16:05:54
visual editor是什么作用?
阿罡(16578548) 16:05:58
taglib->ext还是很有必要的
阿罡(16578548) 16:06:16
就算没有taglib->ext,也会有其他的plugins出现的
C.C ( ) 16:06:27
哦~~~
lqql ( ) 16:06:31
你不可以要求每个java开发者都用visual editor吧
大安(12027555) 16:09:07
taglib->ext有啥好处
lqql ( ) 16:09:40
可以让任何一个java开发员,轻松的使用!
C.C ( ) 16:09:54
恩,不错,我支持lqql!~
大安(12027555) 16:10:02
那这个java开发员需要熟悉ext么?
lqql ( ) 16:10:24
不需要!
阿罡(16578548) 16:10:40
其实就是封装的更容易使用些。。。
lqql ( ) 16:10:46
对啊!
安了!(117747078) 16:10:53
各位大哥,ext tree中,服务端返回一个json客户端怎么得到啊?
大安(12027555) 16:10:54
那他怎么知道最终成什么样的ext widgets
大安(12027555) 16:11:02
xmlreader
大安(12027555) 16:11:08
jsonreader
J★土匪★E(190891071) 16:11:20
问下大家布局里面的contentPanel里面的URL怎么会是乱码
J★土匪★E(190891071) 16:11:25
取出来的数据
J★土匪★E(190891071) 16:11:29
有什么方法解决不
lqql ( ) 16:12:07
大安你说的最终成什么样的是说编缉的时候所见不所得的意思吗?!
大安(12027555) 16:12:30
visual editor就是所见所得
lqql ( ) 16:12:47
大安(12027555) 16:12:51
你用taglib再转ext,有必要么
大安(12027555) 16:13:31
服务器增加了负担
阿罡(16578548) 16:13:41
...
lqql ( ) 16:13:44
...
lqql ( ) 16:14:21
像你这样的开发成本是非常高的!
lqql ( ) 16:14:51
学习EXT,需要很高手JS水平!
C.C ( ) 16:15:02
恩,这一点我认同
lqql ( ) 16:15:08
如果有这么多高手平的程序,那另当别论!
阿罡(16578548) 16:15:22
大安你想想,现在为什么这么多web框架,还不是为了封装的更方便和规范些,不然大家都直接写CGI,写SERVLET就好了
lqql ( ) 16:15:30
但是事实上,这是不可能的事!
C.C ( ) 16:15:35
不过visual editor这个创意也很简便
C.C ( ) 16:15:52
开发人员也无需通晓ext细节
C.C ( ) 16:16:03
一切靠拖拽就ok了
阿罡(16578548) 16:16:41
2种方法都很有必要
大安(12027555) 16:16:51
to 阿罡:同意上面说的
大安(12027555) 16:17:19
taglib->ext现在有没有这样的框架?
C.C ( ) 16:17:36
建议frank把我们的聊天记录发到论坛上去
大安(12027555) 16:18:42
如果在设计时taglib->ext,还有点意思
OMagic(93878495) 16:18:56
可以直接设置的,就是可以把聊天记录保存在群里的
OMagic(93878495) 16:19:09
这样方便啊,我们什么时候都可以看我们的聊天记录了
lqql ( ) 16:20:22
to 大安,你说的是在设计的时候自动生成相关的JS?