关于 Script# (scriptsharp)

我对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,真是一个有趣的话题。不过得益的还是最终开发者,有更多的选择摆在了我们面前。
时间: 2024-11-24 11:51:46

关于 Script# (scriptsharp)的相关文章

使用RemObjects Pascal Script (转)

http://www.cnblogs.com/MaxWoods/p/3304954.html 摘自RemObjects Wiki 本文提供RemObjects Pascal Script的整体概要并演示如何创建一些简单的脚本. Pascal Script包括两个不同部分: 编译器 (uPSCompiler.pas) 运行时 (uPSRuntime.pas) 两部分彼此独立.可以分开使用,或通过TPSScript 控件使用他们,这个控件定义在uPSComponent.pas单元,对这两个部分进行简

-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.chan

第一次使用Maven ,在eclipse中执行pom.xml文件的时候报错. -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 参考网上的解决方案: 设一个环境变量M2_HOME指向你的maven安装目录 M2_HOME=D:\Apps\apache-maven-3.3.1 然后在Window->Prefe

salt cmd.script

salt '*' cmd.script cmd.run  这个前面说了 cmd.script 这个是比较强大的命令,意思是可以从远程下载一个脚本在客户端执行 CLIExample: salt '*' cmd.script salt://scripts/runme.sh salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"' 帮助文档说Thescript can be located on the salt mast

vs 2012 调试不了js -- solution 中script document显示不出来

背景: 因为项目的需要,从ie8升级到ie11(并且自动更新安装了几个ie11的补丁),升级后想用vs2012 调试asp.net项目中的js 但是发现solution中script document项目没有在项目中运行时启动,js不能打断点(***的空心圈). 解决过程: 这个同组的同事以前遇到过,并且解决了,所以向他请教,无果,不知道怎么解决的... 搜索了一下不能打断点的提示信息,网上给的说法是高级设置ie中禁掉第三方的调试工具选项前面的勾去掉,无果:这个和我的问题没有关系. 之前有同事更

Why to Write Shell Script

Why to Write Shell Script ? Shell script can take input from user, file and output them on screen. Useful to create our own commands. Save lots of time. To automate some task of day today life. System Administration part can be also automated.

学习shell script

如果你的想要管理好你的主机,那么就要好好学习自动管理系统的有效工具--hell script!基本上,shell script有点像早期的批处理文件,即将很多命令整合起来一次执行,但是shell script拥有更强大的功能,它可以进行类似程序的编写,并且不需要经过编译就能够执行,非常方便我们对系统进行管理. 今天我们主要通过对一些shell script的习题来加深对脚本知识的学习. 习题1:对成绩进行判断,要求输入一个正整数,以60分,85分为界输出不同的评语. #!/bin/bash #

编译脚本支持(Build script support)

查看原文:Build Script Support 有些包需要编译第三方的非Rust代码,比如说C库.其他包需要链接到C库,这些C库可能位于系统磁盘上,也有可能需要从源代码中构建.其他人仍然需要一些功能,比如在构建之前的代码生成(考虑解释器生成器)(没明白是什么意思). Cargo并不是为了取代这些针对这些任务进行了良好优化的其他工具,但是它确实与构建配置选项集成在一起了: 一.如何使用构建脚本 在Cargo.toml文件中 [package] # ... build = "build.rs&q

Eclipse运行Maven命令时出现:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.问题解决

错误: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. 这个错误是由于Maven版本与当前IDE不兼容导致的,解决方法如下: 1.Maven降级. 2.升级IDE. 3.可以尝试这个方法:

zabbix 通过执行script发送告警消息

一.写在配置步骤前的话 可以在zabbix web前端设置自动消息告警机制,在http://afterdawn.blog.51cto.com/7503144/1923812 文档中已经介绍过了,下面介绍zabbix通过自动执行Linux主机上的script脚本来进行告警,该告警方式zabbix会传递三个参数并执行定义脚本. script:用来定义信息通道,完成信息传递的脚本: (1)脚本放置位置zabbix_server端:/etc/zabbix/zabbix_server.conf Alert