“Web开发中的JavaScript设计艺术”聊天实录

聊天主题:Web开发中的JavaScript设计艺术
聊天时间2005127日星期四下午200—330<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

聊天嘉宾:Lostinet(戴立坚)、wch3116(万常华)

详细聊天实录:

[刘如鸿]:

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

[2005-1-27 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><time hour="13" minute="54"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">13:54:00</span></time>]

[刘如鸿]:

以下是他们的个人介绍:

Lostinet(戴立坚)2004年微软最有价值的专家,擅长于脚本开发和基于ASP.NET企业应用解决方案实现,主要作品为RaneCBMLostinet.Web控件集,CuteEditor 4CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。

[2005-1-27 <time hour="13" minute="55"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">13:55:00</span></time>]

[刘如鸿]:

wch3116(万常华) 擅长脚本开发及B/S系统架构设计,JSVM 项目负责人。主要作品,JSVMXpRPCWDB。可以通过[email protected]与他联系。现供职于中兴通讯/IT中心,致力于企业应用平台技术整合与应用框架设计。

[2005-1-27 <time hour="13" minute="56"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">13:56:00</span></time>]

[刘如鸿]: 现在我宣布一下聊天规则

1。聊天200正式开始,330结束

2. 2:002:30以嘉宾的讨论为主

3. 2:30以后可以自由提问,大家如果有问题,可以通过提交给futurelight,他会将问题提交给嘉宾

4。请不要在聊天室讨论一些和主题无关的话题

谢谢大家的支持和配合

[2005-1-27 <time hour="13" minute="57"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">13:57:00</span></time>]

嘉宾[戴立坚]:

大家好..我是戴立坚. 很高兴和万常华来到CSDN上做JS聊天的嘉宾. 很感谢大家来参与这次的讨论.

[2005-1-27 <time hour="13" minute="58"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">13:58:00</span></time>]

嘉宾[万常华]:

大家好,非常荣幸有这个机会能与大家在一起交流一下

[2005-1-27 <time hour="14" minute="0"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:00:00</span></time>]

[刘如鸿]:

虽然一开始JavaScript只是针对脚本设计的,但是发展到现在,已经初步具备了面向对象的功能,两位嘉宾如何看待JavaScript的面向对象呢?

[2005-1-27 <time hour="14" minute="1"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:01:00</span></time>]

[刘如鸿]:

从我个人的理解,基于JavaScript的面向对象本质上来说可以是Prototype-Based的继承实现方式,因为任何的实现严格意义来说只是采用了父对象的原型

[2005-1-27 <time hour="14" minute="4"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:04:00</span></time>]

嘉宾[万常华]:

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

[2005-1-27 <time hour="14" minute="7"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:07:00</span></time>]

嘉宾[戴立坚]:

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

[2005-1-27 <time hour="14" minute="10"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:10:00</span></time>]

[刘如鸿]:

那么我请问,JavaScript在面向对象中还存在哪些缺陷呢?这些的缺陷是否可以通过一些手段去绕过去

[2005-1-27 <time hour="14" minute="11"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:11:00</span></time>]

嘉宾[戴立坚]:

脚本本身的语法功能很有限 . 并没有 class 这样的功能. 我比较看好的是 Mozilla __defineGetter__/__defineSetter__ , FlashActionScript中的addProperty的功能 . 这些功能为面向对象提供了一定的方便 .

[2005-1-27 <time hour="14" minute="12"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:12:00</span></time>]

嘉宾[万常华]:

js是一门基于对象的语言,在基于webjs实际开发中,如果引入一些规范,我们基本上可以很少地方需要考虑他与面向对象之间的区别

[2005-1-27 <time hour="14" minute="12"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:12:00</span></time>]

嘉宾[戴立坚]:

当然 , MSBehavior(HTC)是实现面向对象的很使用的技术 . 这个技术可以定义属性与事件等等 .

[2005-1-27 <time hour="14" minute="13"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:13:00</span></time>]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 <time hour="14" minute="14"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:14:00</span></time>]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 <time hour="14" minute="14"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:14:00</span></time>]

嘉宾[戴立坚]:

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

[2005-1-27 <time hour="14" minute="14"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:14:00</span></time>]

嘉宾[戴立坚]:

是的 . 我很欣赏 Bindows JSVM . 这些都做得很好 . 如果JS能在语法上提供一些更直接的支持 , 那么我觉得它们会发展得更好的.

[2005-1-27 <time hour="14" minute="16"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:16:00</span></time>]

[刘如鸿]:

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

[2005-1-27 <time hour="14" minute="16"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:16:00</span></time>]

嘉宾[戴立坚]:

如果 IE 等环境支持JScript.Net就更好啦. 可惜现在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的应用也只在.Net开发中 . 但是做.Net的开发,C#VB.NET这两个更强大的语言 , JScript.Net 的地位真的不上不下.

[2005-1-27 <time hour="14" minute="18"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:18:00</span></time>]

嘉宾[万常华]:

js能否成,主要在于是否有一个良好的代码组织结构和规范

[2005-1-27 <time hour="14" minute="19"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:19:00</span></time>]

嘉宾[戴立坚]:

js 是否可对远程URL发送 XMLHttpRequest请求?

可以的. 但是要考虑以下情况: 操作系统是否支持 . 运行JS的环境是否允许你访问该URL. 一般的应用是网站在客户端通过XmlHttp/XmlHttpRequest来访问"本站"的内容 . 这个IEMOZILLA都支持.

[2005-1-27 <time hour="14" minute="20"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:20:00</span></time>]

嘉宾[万常华]:

Jscript.Net 由于运行环境的限制,导致他在web端没有用武之地,我想MS

对此他是有考虑的

[2005-1-27 <time hour="14" minute="20"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:20:00</span></time>]

嘉宾[戴立坚]:

同意万常华. 我想当网络速度不在是库下载速度的障碍时,基于JS的库会得到大规模的应用.

[2005-1-27 <time hour="14" minute="21"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:21:00</span></time>]

[刘如鸿]:

很多人问我过这样的问题,JavaScript里面有真正对象吗?那么他是如何实现的,你们的理解呢?所谓继承呢?是在一个怎样的角度去说的

[2005-1-27 <time hour="14" minute="21"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:21:00</span></time>]

[刘如鸿]:初步的面向对象是不是应该说成基于对象?

是的,基于对象和基于原型的面向对象,这是一个很有意思的东西

[2005-1-27 <time hour="14" minute="22"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:22:00</span></time>]

嘉宾[万常华]:

通过一些手段,在本地建立一个cache机制,可以一定程度上解决 网络带宽带来的一些瓶颈

[2005-1-27 <time hour="14" minute="23"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:23:00</span></time>]

[刘如鸿]:

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

[2005-1-27 <time hour="14" minute="26"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:26:00</span></time>]

嘉宾[戴立坚]: javascript vbscript 的区别

基本上是语法上,提供的内置对象/函数的不同. vbscript支持Class但不支持继承. vbscript只适合microsoft或兼容的平台

[2005-1-27 <time hour="14" minute="27"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:27:00</span></time>]

嘉宾[万常华]:

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

[2005-1-27 <time hour="14" minute="27"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:27:00</span></time>]

嘉宾[万常华]: javascript 能不能读取远程xml文件的数据

javascript 借助一控件比如 xmlhttp xmldom 可以实现读取远程xml,但这里有一个跨域安全限制的问题

[2005-1-27 <time hour="14" minute="28"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:28:00</span></time>]

嘉宾[戴立坚]: javascript 能不能读取远程xml文件的数据

这个是可以的 . 请参考 Microsoft.XMLHttp Mozilla XMLHttpRequest . 这两个对象的接口基本一致.

如果是在浏览器上应用 , 则通常会被浏览器拒绝程序访问其他网站的数据.

如果是在一些有更高权限的环境 , WScript , 就能访问其他站点的数据了.

[2005-1-27 <time hour="14" minute="29"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:29:00</span></time>]

[刘如鸿]:

现在可以开始自由提问,请大家讲问题提交到futurelight,最好指定哪个嘉宾回答您的问题,谢谢

[2005-1-27 <time hour="14" minute="29"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:29:00</span></time>]

嘉宾[戴立坚]: 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 <time hour="14" minute="31"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:31:00</span></time>]

嘉宾[万常华]:

js运行方式导致性能上不及别的语言,但就逻辑描述能力和一些动态特征,甚至是别的一些语言所不及的

[2005-1-27 <time hour="14" minute="31"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:31:00</span></time>]

[刘如鸿]: 脚本语言的安全性问题?

这问题很有意思,其实也是基于Web应用的最大挑战,没有绝对的安全,您可以将一些交互性的逻辑放置在客户端,但是对于严格的商业逻辑判断还是需要在服务器处理的。

[2005-1-27 <time hour="14" minute="33"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:33:00</span></time>]

嘉宾[戴立坚]: 脚本语言的安全性问题?

其实脚本本没有什么安全的问题 . 这些问题都是被它的环境所限制的. 例如浏览器一般不给你使用某些对象,不允许访问本地磁盘,不允许访问其他站点的资源等等..

[2005-1-27 <time hour="14" minute="33"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:33:00</span></time>]

嘉宾[万常华]: 请万老师介绍一下JSVM好吗

JSVM 本质上是一个javascript 框架,遵循这个框架从事 js 开发,可以实现js code更好地被复用。

[2005-1-27 <time hour="14" minute="34"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:34:00</span></time>]

[刘如鸿]: js读取远程URL 是什么原因遭到拒绝访问的呢? 是远程URL的服务器不允许还是本地浏览器不允许?

还是安全的原因,从安全的角度考虑,IE是不允许你跨域访问的

[2005-1-27 <time hour="14" minute="37"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:37:00</span></time>]

嘉宾[戴立坚]: 说点JS的应用层面吧

这个首选是浏览器 . 然后就是用JS ASP WScript . 更有些程序会使用MSScripting技术来加载脚本来扩充程序的功能. 这个和VBA很像.

[2005-1-27 <time hour="14" minute="38"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:38:00</span></time>]

嘉宾[戴立坚]: 我还想问一下,jscrpit.net将来会有单独的开发环境出来吗?

这个不太清楚 . 我想如果MS要支持的话 ,将会在VS.NET中出现. C#,VB.NET一样的.

[2005-1-27 <time hour="14" minute="39"><span lang="EN-US" style="COLOR: darkgray; FONT-FAMILY: Arial; mso-bidi-font-size: 10.5pt">14:39:00</span></time>]

你可能感兴趣的:(JavaScript,Web,IE,脚本,asp.net)