我对Script# 的了解不算很多很深入,只是在开发项目的过程中接触过很多Script#写的code,当然他们最终还是要被编译成js的。
下面我来分享一下对这门语言(或者我们称之为工具)的一些理解。其中主要参考github上的介绍,稍作翻译- https://github.com/NikhilK/scriptsharp
Script# 是一个将C# style的源码编译成JavaScript代码的开发工具,它的作用在开发需要大规模使用HTML5,node.js等script-based 的web应用程序的时候更加突出,有效。
Script#将JavaScript看作是 “assemblylanguage of the Web”, 之所这样认为并不是因为觉得JavaScript不适合程序员直接用来开发,反而是因为JavaScript非常灵活多变而且无所不在。
当我们构建规模相对较大的应用程序(譬如需要连接大型数据库,项目需要投入很多人并且划分为很多子项目,需要较长的开发周期)时,代码的可维护性以及开发语言的工具支持对提升开发效率非常重要,而C#语言的 (such asmsbuild, refactoring, unit testing, static analysis, code visualization, fxcop))。
Script#将所有这些功能带给开发者,开发者仍然是在build JavaScript-based web应用,只不过使用了另外一套工具辅助做到这些而已。
因此,不难理解Script#产生的初衷:将C#语言的“高效率”,“为人所熟知”等优势 连同 JavaScript的灵活及跨平台等优势 结合起来。
现在的Script#支持开发者使用jQuery,jQuery plugins,Knockout等框架,并且可以通过扩展兼容更多的其他框架。
除了上述提到的好处之外, 当然也有一些问题:
其中我认为最突出的问题是:调试比较麻烦。试想一下,完全用JS写的code,我们直接打开网页,F12加断点,调试即可。对于Script#写的code,编译器最终生成的JS文件会和源代码文件有较大差异,开发者需要搜索到相应的函数再加断点,调试。除此之外,当code改动后,需要重新build新的JS文件进行调试。因此,为了避免重复编译耗费过长的时间,简单的改动我们可以直接针对JS文件进行,当发现改动之后的code达到我们的预期后,再重新修改Script#写的code。
以上的介绍多少会有些片面或者偏差,如果大家发现有问题的话,不妨留言给我我会纠正。谢谢。
以下是一则旧闻,讲述了Script#产生的原因: [原]微软为Ajax 发明C#衍生新脚本语言Script# http://m.blog.csdn.net/blog/EricLee00/770634 2006-6-3阅读7826 评论12 Ajax 可谓是目前最火爆的Web开发热点之一。微软也专门针对Ajax 推出了自己的框架 Atlas。然而,许多使用C#进行Web开发的程序员却略感郁闷,“Javascript”也许不是他们最喜欢的。也正因此微软架构师 Nikhil Kothari 正在引领团队开发一个名叫“ Script#”的语言,它是微软“#”语言家族的另一个衍生。 据Nikhil Kothari 介绍, Script#语言的编辑器,其实是使 C#言语的编译器生成Javascript,而不是通常的IL(Intermediate Language)。这样做的目的是为了是开发者编写更具有可读性的脚本语言,更好的基于Atlas进行开发。不过目前Script#还没有被整合进Atlas,但这是他们正在努力的方向,并最终整合,为C#开发者打造一个Script#/Atlas开发环境。 想想, Google Web Toolkit (GWT) ,也许许多java开发人员对它会比较有兴趣,这个工具包可以让java程序员不需要写任何HTML和JS就可以轻松地构建一个AJAX应用程序。这个工具包可以把你的java转换成浏览器上的js和html。 所以Script#/Atlas组合将是对google 一个对决。F# VS Javascript ,AtlasVS GWT,C#对决Java,真是一个有趣的话题。不过得益的还是最终开发者,有更多的选择摆在了我们面前。