随便写写服务器控件的一些想法
控件使用者
asp.net控件我们称之为服务器控件,当用贯了控件的话,有时候你几乎会忘记html语言的存在.当遇到一个问题时,业务逻辑除外,你可能首先想到的是,有没有一个控件可以解决我的问题.我相信一般情况下是有的.可能一个很复杂的效果,让一个封装好的控件一下子就解决了.当我们对内置的控件熟悉以后,我们开始讨论一些控件的使用技巧,比如GridView一些高级控件,我也曾经学过如"如何在GridView中为按钮添加提示框"."如何在GridView中鼠标经过时更改颜色"等.我们开始乐在其中,对着控件写着 控件.属性=. 的N多语句.
假如我们当初没接触过HTML,JavaScript而直接转战学习asp.net服务器标准控件,你会感觉asp.net是如此的简单.这个便是刚学控件的最初感觉.
工具使用者
这里的工具使用者是指一般网页设计工具
记得刚学DreamWeaver的时候,我们可以在DreamWeaver做很多的JavaScript特效,初学者就喜欢搞这些东西.至少在接触asp.net之前,我仔细学过html,接着再是DW,所以当时html代码还是看的懂的,当加入特效以后,就产生了一大堆的JS,头晕了.当我想修改的时候,不敢动js的部分,怕改错.在此asp.net控件可以代替你之前的晕晕的感觉,把这些js代码全部封装好,不让你看到,你只需要设置设置属性就好了,问题解决了.
另外服务器控件设计时的呈现效果并不好,只能是在Visual Studio环境下,让一个网页设计者来熟悉一个强大的自定义控件是比较痛苦的.根本摸不着头脑.
学习再学习
这里我们千万不可以忘记我们是在做网页,是在写html,html标签永远不会变(htc除外),当你使用一个新的服务器控件时,你就不得不再去学习了解这个控件的一些属性和方法,打开IE一看便会生成大堆的html代码,本质未变.你的要求,这个控件现在可以满足你,过了明天可能就说不准了,你可能需要寻找另外的控件了,需要再学习.
回头再想想反正最后生成的效果是一样的,只不过用DreamWeaver的时候我直接看到了一些复杂的js代码,我不要用控件了,麻烦,老是跟一些不认识的标签打交道.
开始学习自定义控件
对于这门技术,我真的非常喜欢,学习的过程中,我也会接触到一些很酷的效果.不知道大家有没有这样的习惯,当使用一个控件的时候, 首先第一步看效果,第二步则是查看源代码,源代码中产生的html就是效果.我们必须承认asp.net很多属性的设置都是硬编码,而这些控件的属性的设置也可以说是为服务器端的编程提供方便的,使用起来很方便,设置属性便可.
我们不可以否认控件的好处,而且我们有必要使用控件,让我们拖asp.net控件的时候,拖的理直气壮.
在这里我也看到一些同志说 "我从来不使用控件,直接写html就好" 招聘的人则写 "熟悉html代码,不要会拖控件的."
辛苦开发的控件真的就没用吗?我真的很想说,做好一个控件需要的知识比较全面,好的开发者,对html,js,css都需要非常熟悉,毕竟控件是需要呈现的,难道控件开发者就不会直接写html吗?不是的,他们只想让以后的工作更加的方便,不再写重复的html代码,让控件帮你生成吧.
但话说回来,国内专业开发控件的比较少,说实话内置的控件已经足够了,作为一个控件使用者的心态,则是控件越强越好,所以老是认为控件功能不够强,其实真的足够了.再者,你是否考虑过,你真的需要使用控件吗?比如Label控件,当你使用过这个控件以后,你则需要了解下它生成的html代码,我们是在做B/S程序,并非C/S程序.
每个控件的呈现都对服务器的性能有影响,能不用则不用,我们需要遵守这个原则.当然这就意味着你要自己全部手动写代码了.人都是有惰性的,说是这么说.当你写倦了,你则会想办法去偷懒.
转控件为框架
服务器端可以针对控件编程,客户端也可以针对html标签写js代码,不过页面标签ID不可变,这么个写法,意味着代码不可以重用,是很可惜的.
于是则出现了客户端的一些框架.作为使用者,区别在哪?
IDE宠坏了你,Visual Studio太高级了,而js的调试比较困难,可能大家对后台编程比较熟悉,而对JS的一些框架则比较畏惧,不敢使用.
正视控件的存在
在这里为什么要对控件进行对比呢?我更多的是对性能进行了考虑.让我们正视控件的作用,不可以贬低它,也不可以滥用. 控件越强,在页面生成的代码越多,对网页布局有影响,想修改起来是很困难的.
不仅asp.net有控件,java开发也有struts和webwork,不就是为了节省开发时间吗?你不用控件可以呀,你认为水平到家了便自己封装好了.
可以把html标签理解为绿色版,控件则是威力加强版.软件还分正式完整版和绿色免安装版呢
自己胡乱写写,大家拍砖
# re: 关于asp.net服务器控件的一些想法 2007-05-07 08:16 在北京的湖南人
恩,非常赞同,我一般是能用 html+js 实现的就实现,除非数据模板,才用repeater,其他控件都很少用.# re: 关于asp.net服务器控件的一些想法 2007-05-07 09:20 ljianl
正如Clingingboy所说的,不可以贬低控件,也不可以滥用。编程是一门艺术。# re: 关于asp.net服务器控件的一些想法 2007-05-07 15:57 Clingingboy
好象回到了手写html的时代,特别是要用到ajax的时候,很多控件根本派不上用场.