关于 Script# 一些理解

我对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#语言的编码辅助补全(intellisense), 错误检查(build-time error checking), 面向对象编程的语法(natural language syntax for OOP constructs)等功能已经在相应的IDE开发工具(Visual Studio)中集成并且非常成熟 此外,IDE还为开发者提供了很多强大的功能,诸如build,refactor,单元测试,静态源码分析,源码可视化等等(the power Visual Studio IDE and standard .NETtools ecosystem (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,真是一个有趣的话题。不过得益的还是最终开发者,有更多的选择摆在了我们面前。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值