ScriptSharp能为我的工具箱带来什么优势?

20

目前我们使用jQuery为我们的应用程序添加RIA功能,但最近我们在我们的Sharepoint门户中实现了Coveo搜索引擎,并发现他们的产品中使用了ScriptSharp。ScriptSharp能带来什么好处?

5个回答

23

我正在使用ScriptSharp,是在2-3周之前发现它的。老实说,我很喜欢它。原生Javascript很有挑战性,而DOM模型使得客户端编程更加困难。六个月前,我发现了jQuery,我认为它是一个救星。jQuery提高了我的生产力,但我经常因为仍需编写、调试和微调Javascript而陷入困境。

然后有了ScriptSharp。它提高了我的生产力,比jQuery减少了许多麻烦。我看到的最大优点是,在您编写代码时,您可以使用C#和Visual Studio的强大功能。这种能力的重要性不言而喻。现在,那些曾经花费数小时进行调试的琐碎的小错误在编译时期就被消除了。代码行数可能是jQuery的两倍左右,但生产力却高得多,所以谁在乎呢?你基本上只需要编写代码,编译/测试/调试周期要少得多,几小时变成几分钟。

我必须说,最初让ScriptSharp与Microsoft AJAX配合工作是相当困难的,直到我了解了一项非常重要的步骤才能与它一起工作。在我了解这个步骤之前,我折磨自己好几天。 (我相信这在ScriptSharp的61页PDF Readme中有记录,但很容易忽略它。)关键是在创建ScriptSharp库时选择项目类型"Web Site内的Script# Class Library"(或“Web Site内的MS Ajax Class Library”)。这将ScriptSharp项目放置在网站的Bin / Scripts目录中,而非常重要的是将编译后的输出指向该目录,而不是ScriptSharp项目的默认"bin"目录。也许一个例子会更有说明力:

Web Site or Application directory\
   Bin\ 
      Scripts\           <-- "..\\" config setting sends .js files here.
         ScriptSharp Project directory\
            Bin\         <-- will not be used at run time
               Debug\    <-- will not be used at run time

简而言之,我认为这个项目很值得。 我将撰写自己的HOW-TO(在我的情况下涉及使用Web用户控件)以将所有内容绑定在一起,并在此处发布一个URL。 现在我已经弄清楚了ScriptSharp,它让我在RIA开发方面非常高效。 只是希望它更加可见,如果CodePlex网站仍然存在就好了。


谢谢 - 详细程度很高。不过有一个后续问题 - 您说代码大小增加了一倍,但是您是否曾经在某些地方使用了更轻量级的jQuery实现? - David Robbins
1
这是一篇博客文章,详细描述了您必须将ScriptSharp项目放在Web应用程序或Web项目的Bin\Scripts目录中的事实:http://www.thinkfarahead.com/2008/07/tip-script-and-scriptpath_13.html - Jim Raden
你现在还支持Script#吗?我很感兴趣,因为你的第一篇帖子是在使用它三周后发布的,所以你可能(或者可能没有)遇到了我们遇到的一些问题。 - mcintyre321
1
我用它的项目只持续了几个星期,但在一个棘手的 AJAX 功能上为我服务得非常好。我同意你大部分的反对意见,但它远未死亡——它曾在 MIX11 上展示——并且即将成为开源软件。(请参阅 https://github.com/NikhilK/scriptsharp。)我觉得有时候使用它或不使用它是一个抛硬币的决定,部分原因是你提到的因素。但前几天我在一个项目中使用它来快速完成一个小功能,在原始 JavaScript 中(即使使用 jQuery)也需要更长时间,我知道这一点。我感觉它可能更适合于大型项目。 - Jim Raden
关于C# 2的“缺陷”:他现在已经包含了支持使用泛型,但是目前还没有声明它们的功能。他说Lambda表达式和声明泛型正在开发中。 - Jim Raden
显示剩余3条评论

17

在我上一家公司,我广泛使用了Script#。我写了一些很酷的控件(事实上是整个客户端MVC堆栈),这是我用javascript知识无法完成的。然而,由于几个原因,我不会再使用它:

  • 该项目是闭源的,支持也不是很好(自从论坛关闭以来实际上不存在)。当你在深度使用时会有相当多的烦恼,如果你拥有源代码就可以解决这些问题。随着您在s#代码中的投资越来越大,这个问题变得越来越严重。
  • 它仅限于.NET 2.0的子集,即使是这样它也是不完美的。
  • 最近,Javascript单元测试和VS对Javascript的智能感知都得到了很大的改进,因此静态类型的重要性有所降低。
  • 使用它限制了我学习jquery和javascript。

JS的工具正在变得越来越好,但在Script#开源之前,它处于停滞状态。

如果您对交叉编译感兴趣,您还可以查看http://jsc.sourceforge.net/ 项目,它允许您使用.NET 3.5并编译为JS,Java,Flash甚至PHP!不确定生成的代码效率如何......

编辑:现在还有一个名为JSIL的新项目,它也将.NET代码重写为JS。


感谢 - 虽然我是一个 .Net 程序员,但我发现越来越多的工作都是用 Javascript 完成的,而微软却置之不理。我们团队的核心优势是 .Net,因此我们希望在保持这种优势的同时,向新的方向拓展。 - David Robbins
在他的MIX11演讲中(http://channel9.msdn.com/Events/MIX/MIX11/HTM16),Nikhil Kothari宣布他打算在V1发布后开源整个项目。截至本文撰写时(v0.7.4),其中一部分已经在GitHub上以MSPL许可证的形式提供:https://github.com/nikhilk/scriptsharp - lightw8

8

jsc编译器项目支持以下场景:

  • C#到MSIL到浏览器JavaScript
  • C#到MSIL到AppJet的JavaScript
  • C#到MSIL到PHP5用于托管解决方案
  • C#到MSIL到浏览器小程序Java applets
  • C#到MSIL到应用程序Java
  • C#到MSIL到JavaCard
  • C#到MSIL到本机stub应用程序的C99
  • C#到MSIL到Flash 9的ActionScript3
  • C#到MSIL到Adobe Alchemy C的Flash 9
  • C#到MSIL到C# 2.0

通过一些努力,Visual Basic也可以用作源语言。jsc编译器甚至不会读取您的源代码,即使GWT和Script#这样做。我的编译器读取您的IL。

jsc编译器是:

  • 一个实验性项目
  • 一个人的努力
  • 已经相当有用。
  • 已有3年历史。
  • 等待捐赠以优化编译时间和输出本身
最新的例子是一个等离子体动画,可以在以下平台之间使用single 实现

FlashPlasma
(源自: sourceforge.net)


2
许可证不明确,商业使用的隐含条款是什么? - J Evans

3

Script sharp Prototype: Microsoft’s GWT

根据这个页面:

  • 一种具有自然结构的干净语言。
  • 更容易进行重构和探索。
  • 能够生成文档。
  • 能够轻松定制脚本代码。

我不确定我是否同意所有这些观点,但这就是销售宣传。似乎它带有一些面向对象的特性。个人观点:正如我在其他时候提到的那样,Java和C#开发人员似乎想要摆脱Javascript的原型/无类型方面,因为他们不习惯以这种方式编写代码。无类型原型语言有其存在的价值。


我同意你关于无类型代码的观点。在处理DOM时,您不必担心类型安全方面的问题或数量。我们注意到ScriptSharp,因为Coveo在其产品中使用了它。 - David Robbins
我认为Script#最大的优势在于,您可以使用Jetbrain的Resharper重构工具来清理和重构大型项目中的常规C#代码。据我所知,使用原始JavaScript实现这一点非常困难。 - 7wp

0
我想分享我的jQuery包装类给Script#。你可以立即在你的Script#项目中访问和使用jQuery的强大功能。
从这里获取: http://www.springsys.com/blog/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接