| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:Web开发中的JavaScript设计艺术(一)
只看楼主 加入收藏
linuxpluto
Rank: 4
等 级:贵宾
威 望:13
帖 子:889
专家分:23
注 册:2005-8-14
收藏
 问题点数:0 回复次数:0 
Web开发中的JavaScript设计艺术(一)

Web开发中的JavaScript设计艺术
Stone转贴 来自网络


刘如鸿 :
大家好,我是《msdn开发精选》的技术主编刘如鸿。首先感谢大家的到来,今天我们邀请了在JavaScript开发中享有盛名的Lostinet和wch3116到场和我们一同探讨JavaScript设计中的种种考虑。
[2005-1-27 13:54:00]


刘如鸿 :
一下是他们的个人介绍 Lostinet(戴立坚) 2004年微软最有价值的专家,擅长于脚本开发和基于ASP.NET企业应用解决方案实现,主要作品为Rane,CBM,Lostinet.Web控件集,CuteEditor 4,CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。
[2005-1-27 13:55:00]


刘如鸿 :
wch3116(万常华) 擅长脚本开发及B/S系统架构设计,JSVM 项目负责人。主要作品,JSVM,XpRPC,WDB。可以通过wch3116@hotmail.com与他联系。现供职于中兴通讯/IT中心,致力于企业应用平台技术整合与应用框架设计。
[2005-1-27 13:56:00]


刘如鸿 :
现在我宣布一下聊天规则 1。聊天2:00正式开始,3:30结束 2. 2:00到2:30以嘉宾的讨论为主 3. 2:30以后可以自由提问,大家如果有问题,可以通过提交给futurelight,他会将问题提交给嘉宾 4。请不要在聊天室讨论一些和主题无关的话题 谢谢大家的支持和配合
[2005-1-27 13:57:00]


戴立坚 :
大家好..我是戴立坚. 很高兴和万常华来到CSDN上做JS聊天的嘉宾. 很感谢大家来参与这次的讨论.
[2005-1-27 13:58:00]


万常华 :
大家好,非常荣幸有这个机会能与大家在一起交流一下
[2005-1-27 14:00:00]


刘如鸿 :
虽然一开始JavaScript只是针对脚本设计的,但是发展到现在,已经“初步”具备了面向对象的功能,两位嘉宾如何看待JavaScript的面向对象呢?
[2005-1-27 14:01:00]


刘如鸿 :
从我个人的理解,基于JavaScript的面向对象本质上来说可以是Prototype-Based的继承实现方式,因为任何的实现严格意义来说只是采用了父对象的原型
[2005-1-27 14:04:00]


万常华 :
OO 设计思想是 计算机语言向 现实模型靠拢 的必然发展过程,js作为一门脚本语言,也要引入这种设计思想,当然,目前因为语言本身的问题,把js作为一种面向对象的语言来做程序设计还有一些缺陷
[2005-1-27 14:07:00]


戴立坚 :
关于面向对象 , 我觉得现在JS主要作用是操作其他对象. 例如 DHTML 中的window/document/element . 或者是其他环境中的对象 例如用 ActiveXObject 创建出来的对象或Mozilla的XMLHttpRequest . 但是 JS 本身带的面向对象的功能很弱 . 适合做一些简单的类库. 但很难达到大规模的类库的应用.
[2005-1-27 14:10:00]


刘如鸿 :
那么我请问,JavaScript在面向对象中还存在哪些缺陷呢?这些的缺陷是否可以通过一些手段去绕过去
[2005-1-27 14:11:00]


戴立坚 :
脚本本身的语法功能很有限 . 并没有 class 这样的功能. 我比较看好的是 Mozilla 的 __defineGetter__/__defineSetter__ , 与Flash中ActionScript中的addProperty的功能 . 这些功能为面向对象提供了一定的方便 .
[2005-1-27 14:12:00]


万常华 :
js是一门基于对象的语言,在基于web的js实际开发中,如果引入一些规范,我们基本上可以很少地方需要考虑他与面向对象之间的区别
[2005-1-27 14:12:00]


戴立坚 :
当然 , MS的Behavior(HTC)是实现面向对象的很使用的技术 . 这个技术可以定义属性与事件等等 .
[2005-1-27 14:13:00]


刘如鸿 :
戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库
[2005-1-27 14:14:00]


刘如鸿 :
戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库
[2005-1-27 14:14:00]


戴立坚 :
而在面向对象中 ,JS最缺陷的就是无法在语法上直接实现 override(虚拟方法) 的功能. 虽然可以用其他方法来模拟 , 但是写法的特殊和不直观,很影响JS做面向对象的应用.
[2005-1-27 14:14:00]


戴立坚 :
是的 . 我很欣赏 Bindows 和 JSVM . 这些都做得很好 . 如果JS能在语法上提供一些更直接的支持 , 那么我觉得它们会发展得更好的.
[2005-1-27 14:16:00]


刘如鸿 :
那么对于JScript.NET,你们是如何看待呢?作为.NET环境下的一个半动态语言,除了拥有JavasScript的全部功能之外,还能够利用.NET Framework,按照微软的文档,JScript.NET是第一个实现了ECMA 262 Edition 3的语言,同时也引入了class,package等等关键字
[2005-1-27 14:16:00]


戴立坚 :
如果 IE 等环境支持JScript.Net就更好啦. 可惜现在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的应用也只在.Net开发中 . 但是做.Net的开发,有C#和VB.NET这两个更强大的语言 , JScript.Net 的地位真的不上不下.
[2005-1-27 14:18:00]


万常华 :
js能否成“库”,主要在于是否有一个良好的代码组织结构和规范
[2005-1-27 14:19:00]


戴立坚 :
js 是否可对远程URL发送 XMLHttpRequest请求?
可以的. 但是要考虑以下情况: 操作系统是否支持 . 运行JS的环境是否允许你访问该URL. 一般的应用是网站在客户端通过XmlHttp/XmlHttpRequest来访问"本站"的内容 . 这个IE和MOZILLA都支持.
[2005-1-27 14:20:00]


万常华 :
Jscript.Net 由于运行环境的限制,导致他在web端没有用武之地,我想MS 对此他是有考虑的
[2005-1-27 14:20:00]


戴立坚 :
同意万常华. 我想当网络速度不在是库下载速度的障碍时,基于JS的库会得到大规模的应用.
[2005-1-27 14:21:00]


刘如鸿 :
很多人问我过这样的问题,JavaScript里面有真正对象吗?那么他是如何实现的,你们的理解呢?所谓继承呢?是在一个怎样的角度去说的
[2005-1-27 14:21:00]


刘如鸿 :
“初步”的面向对象是不是应该说成基于对象?
是的,基于对象和基于原型的面向对象,这是一个很有意思的东西
[2005-1-27 14:22:00]


万常华 :
通过一些手段,在本地建立一个cache机制,可以一定程度上解决 网络带宽带来的一些瓶颈
[2005-1-27 14:23:00]


刘如鸿 :
就我个人而言,我不是特别赞成太依赖于脚本,如果我们将脚本虚拟机的运行环境扩充而且能够跨平台的话,那么这个时候脚本的优势才会更加明显,而目前,不论IE还是Mozilla,脚本解释器的功能还是极其有限的,对于简单的应用,它可以很好的解决,对于复杂的应用,可能好耗费比传统语言更多的精力才能够解决。那么从这个角度来说,我们是不是不要太过度使用脚本
[2005-1-27 14:26:00]


戴立坚 :
javascript 与 vbscript 的区别
基本上是语法上,提供的内置对象/函数的不同. vbscript支持Class但不支持继承. vbscript只适合microsoft或兼容的平台
[2005-1-27 14:27:00]


万常华 :
js 的另外一个应用领域是 hta - Html Appliction 作为最接近web的一种应用程序,我们如果撇开 跨域完全 及 性能方面的考虑,就开发方式和运行方式而言基本上是一致的。
[2005-1-27 14:27:00]


万常华 :
javascript 能不能读取远程xml文件的数据
javascript 借助一控件比如 xmlhttp xmldom 可以实现读取远程xml,但这里有一个跨域安全限制的问题
[2005-1-27 14:28:00]


刘如鸿 :
现在可以开始自由提问,请大家讲问题提交到futurelight,最好指定哪个嘉宾回答您的问题,谢谢
[2005-1-27 14:29:00]


戴立坚 :
javascript 能不能读取远程xml文件的数据
这个是可以的 . 请参考 Microsoft.XMLHttp 或 Mozilla 的 XMLHttpRequest . 这两个对象的接口基本一致. 如果是在浏览器上应用 , 则通常会被浏览器拒绝程序访问其他网站的数据. 如果是在一些有更高权限的环境 , 如 WScript , 就能访问其他站点的数据了.
[2005-1-27 14:29:00]


戴立坚 :
非IE浏览器下,如何用js读取远程URL的内容??
使用 var req=new XMLHttpRequest(); req.open("GET",url,false,null,null); req.send(""); req.responseXML 就是一个 XmlDocument 对象. (只适合Mozilla/FireFox或相关核心的浏览器. 另外Opera8也支持)
[2005-1-27 14:31:00]


万常华 :
js运行方式导致性能上不及别的语言,但就逻辑描述能力和一些动态特征,甚至是别的一些语言所不及的
[2005-1-27 14:31:00]


刘如鸿 :
脚本语言的安全性问题?
这问题很有意思,其实也是基于Web应用的最大挑战,没有绝对的安全,您可以将一些交互性的逻辑放置在客户端,但是对于严格的商业逻辑判断还是需要在服务器处理的。
[2005-1-27 14:33:00]


戴立坚 :
脚本语言的安全性问题?
其实脚本本没有什么安全的问题 . 这些问题都是被它的环境所限制的. 例如浏览器一般不给你使用某些对象,不允许访问本地磁盘,不允许访问其他站点的资源等等..
[2005-1-27 14:33:00]


万常华 :
请万老师介绍一下JSVM好吗
JSVM 本质上是一个javascript 框架,遵循这个框架从事 js 开发,可以实现js code更好地被复用。
[2005-1-27 14:34:00]


刘如鸿 :
js读取远程URL 是什么原因遭到拒绝访问的呢? 是远程URL的服务器不允许还是本地浏览器不允许?
还是安全的原因,从安全的角度考虑,IE是不允许你跨域访问的
[2005-1-27 14:37:00]


戴立坚 :
说点JS的应用层面吧
这个首选是浏览器 . 然后就是用JS写 ASP WScript . 更有些程序会使用MS的Scripting技术来加载脚本来扩充程序的功能. 这个和VBA很像.
[2005-1-27 14:38:00]


戴立坚 :
我还想问一下,jscrpit.net将来会有单独的开发环境出来吗?
这个不太清楚 . 我想如果MS要支持的话 ,将会在VS.NET中出现. 和C#,VB.NET一样的.
[2005-1-27 14:39:00]


戴立坚 :
可是一般浏览器默认是不允许远程发送 XMLHttpRequest请求的,它会弹出对话框提示是否继续,或者干脆说拒绝访问,如何解决这种问题? 可以让它直接访问!比如我有一公用的xml数据要通过几个服务器来远程访问!
主要是考虑隐私的问题. 例如如果别人访问你的网站,如果你的脚本能访问银行网站,那么你就有机会偷到密码了 . 所以浏览器是不允许你这样做的.
[2005-1-27 14:40:00]


刘如鸿 :
我还想问一下,jscript.net将来会有单独的开发环境出来吗?
我想不会的,微软通过.NET统一了编程语言,没有理由还分离出单独的运行环境,但是我想在Avalon,你是可以使用JScript的,不过这个时候使用C#或者VB.NET这样的语言可能更加习惯
[2005-1-27 14:40:00]


万常华 :
一个“良好的组织结构和规范”这样的规范应该从哪些方面考虑的? )
我想可以至少要考虑,代码文件的组织结构和js code语法域的独立性。 在JSVM中,采用类似java的包结构的规范,使任意两个人开发的js code能放在一起运行,而且他们的语法域相互对立,这样运行起来不会导致冲突。
[2005-1-27 14:41:00]


戴立坚 :
可不可以简单介绍一下 WScript 这个高权限的环境
如果你使用的是 Windows , 建立一个 test.js , 然后里面打 WScript.Echo("Hello World"); , 那么这就是一个 WScript 程序了. 双击它就能看到程序运行.(加入*.js文件的默认打开方式不变的话) WScript与IE中运行脚本不同的地方是,你使用的是WScript对象, 而不是window/document了. 另外你的权限是用户权限 , 可以访问很多资源的.
[2005-1-27 14:41:00]


戴立坚 :
我还想问个问题,flash的脚本将来在纯.net平台上会有影响吗
如果你的脚本是写在Flash里的,那么这个和.net没有什么直接的关系.
[2005-1-27 14:42:00]

[此贴子已经被作者于2006-1-2 5:39:09编辑过]

搜索更多相关主题的帖子: JavaScript Web 艺术 开发 设计 
2006-01-02 05:23
快速回复:Web开发中的JavaScript设计艺术(一)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026650 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved