首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > ASP.net教程 > Asp.Net开发技巧 > 正文
Google
如何用JScript.net写.net应用程序
来源:老翅寒暑'blog 作者:老翅寒暑 2007年11月19日 09:30 网友评论:0条 点击:

  接下来,我们还要做一个工作。因为从实际的javascript编程中,我们有几个不方便的地方,一个是编辑,eclipse下游JsEclipse,但是.net下没有,好在vs2008出来了,问题不大了;第二就是调试,出奇的困难,firefox下有插件,很好。ie下也有,但是不太好用,经常抓不住断点,但是从vs2005开始也凑胡了,只是大了一点而已。第三个就是js语言本身的问题了,好在有现成的扩展库prototype,其他的几个库dojo,ext,jquery也都用过,只有prototype是纯面向js语言本身的扩展,其他几个跟浏览器绑定太紧密,用不了。所以我们接下来就要编译prototype 1.5作为我们的扩展库了。

  首先从这里获取prototype1.5的代码,用ultraedit装入,然后运行开头设置的“JScript.net编译”命令,出现一堆错误。不要紧,我们做如下的两个工作即可:

  全文、全词、大小写敏感查找替换set为_set,get为_get, event为ev


  生成compitable.js文件,内容如下:

  function fn(func):Function{return func;}
  var document = {
  getElementById: function(){ return null;},
  createElement: function(){return {appendChild:function(){}};},
  createTextNode: function(){return {};},
  getElementsByTagName: function(){ return []; },
  addEventListener:function(){},
  write:function(){},
  all: [],
  body: {},
  documentElement: {}
  };
  var window = {
  scrollTo:function(){},
  setTimeout: function(){},
  attachEvent:function(){},
  clearInterval:function(){},
  setInterval:function(){},
  location:{href:""},
  pageXOffset:0,
  pageYOffset:0
  };
  var navigator = {
  userAgent: "",
  appVersion:""
  };


  使用命令行jsc /debug /fast- mod.js pkg.js compitable.js prototype.1.5.js test.js编译,会有一堆警告和6个错误,都是在prototype中的类似function() { this.respondToReadyState(1) }.bind(this)的错误,把他们修改成fn(function() { this.respondToReadyState(1) }).bind(this)。估计原因可能是JScript编译器的一个bug,没能在这个环境下识别出function其实就是Function类型。


  如果使用的是最新的prototype1.6,除了上述几步外,还要大小写敏感替换this.Element为Element,把1555行var element = this.Element修改为var element = typeof Element == "undefined" ? {} : Element;把3845行wrapper.handler = handler;替换为fn(wrapper).handler = handler;即可。

  接下来我们修改test.js文件,如下:

  var arr = ["a","b"];
  var obj = {name:"test", value:3.0};
  print(arr[0]);
  print(arr[1]);
  print(obj.name);
  print(obj.value);
  var t = new hello();
  print(t.name);
  haha();
  print(France.Paris.Landmark.Tower);
  import France.Paris;
  new Landmark().p();
  var instance = {
  funca: function(){return "funca";},
  funcb: function(){return "funcb";}
  };
  Object.extend(instance, {
  funcb: function(){return "override funcb";},

  funcExt: function() { return "funcExt";}
  });
  print(instance.funca());
  print(instance.funcb());
  print(instance.funcExt());


  重新编译,运行即可。

  有一点小经验bigtall要给大家分享:如果程序运行有异常,一般都是值为null引起的,JScript的异常报告不明确。

  另外,prototype中dom相关的部分,ajax部分的代码都不能使用,setTimeout,alert等函数也不能用,除非你扩展我的compitable.js。

  基本的JScript.net帮助参考这里,同样内容在VS2005的msdn帮助里边也有。

  实际上,要真正用JScript.net来做桌面应用,还需要对.net做一个接口层才行,不过bigtall个人认为如果按照winform的接口规范来走,JScript就失去了优势,以js这么灵活,应该有一个全新的接口库。大家可以参考一下Ruby的GUI,Python的GUI库的做法,有兴趣的可以看这个文章。

  结论


  通过使用参数/fast-,并且替换少许保留字之后,JScript可以编译大部分的传统js代码,并且可以和JScript.net的扩展语法同事使用。这就给我们用JScript来编制实际的应用程序建立了基础。

  结合目前js领域的语言扩展库(目前只用了prototype),可以给JScript.net编程提供极大的方便性。但是目前JScript.net尚欠缺一个真正适合js特性的GUI库,XML库。

首页 上一页 [1] [2] 下一页 尾页
上一篇:采用 .Net Remoting 实现定向广播   下一篇:ASP.NET如何备份恢复Sql Server数据库
收藏此页】【打印】【关闭
 相关文章  我要点评
·ASP.NET2.0中文验证码的实现
·ASP.NET防止用户多次登录的方法
·ASP.NET中备份SQL Server数据库的方法
·ASP.NET页面间数据传递
·ASP.NET缓存的方法分析
·ASP.NET 2.0中连接字符串的设置
·ASP.NET程序安全的基础知识
·处理ASP.Net开发常见Datagrid错误

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】