阅读更多

12顶
19踩

编程语言

原创新闻 JavaScript 的替代品

2012-12-11 17:06 by 副主编 wangguo 评论(87) 有43838人浏览
JavaScript几乎无处不在,HTML5的出现,使得JavaScript达到了前所未有的高度。如今,JavaScript已经开始向移动应用开发领域渗透,成为开发跨平台应用不可或缺的语言。

如果你不会JavaScript,或者你对JavaScript的语法不满意,这一点都不影响你的web应用的开发工作,相反,你可以使用其他语言来代替JavaScript。尽管目前的浏览器尚不支持这些语言,但你可以将它们编译成为JavaScript代码。

比如,如果你更喜欢经典的面向对象方式,并想要一些语法糖,那么你可以试试CoffeeScript;如果你希望有一个更严格的类型系统,那么你可能会发现Dart或TypeScript更有趣一些;如果你更喜欢函数式编程,那么ClojureScript或Roy可以帮助你。

下面就是一些JavaScript的替代方案。这些语言之所以能够成为JavaScript潜在的替代品(实际上还无法替代),说明它们足够优秀,而它们优秀的原因,正是因为它们“站在JavaScript的肩膀上”。

1.  CoffeeScript官方网站 / GitHub

CoffeeScript是一个使用纯Ruby编写的编程语言,创建者Jeremy Ashkenas戏称它是“JavaScript的不那么铺张卖弄的小兄弟”。优势如下:

  • CoffeeScript只使用了JavaScript的“精髓”,抛弃了原来JavaScript晦涩、容易出问题的那部分东西,如全局变量声明、with等。
  • CoffeeScript提供了很多语法糖,让代码更优雅可读。
  • CoffeeScript还提供了一个机会,让你现在就可以使用ECMAScript的新特性。


2.  Dart官方网站

Dart是谷歌推出的一种基于类的可选类型化编程语言,主要用于创建Web应用程序。谷歌称,Dart的设计目标是为Web编程创造结构化但又富有灵活性的语言;编程方法一目了然,符合程序员的自然习惯,易于学习;能在所有浏览器和不同环境中实现高性能。

Dart代码以两种方式执行,一种是原生虚拟机,一种是JavaScript引擎,用编译器将Dart代码翻译成 JavaScript代码。这允许程序员在Dart中创建Web应用,编译后在任何浏览器上运行。



3.  TypeScript官方网站

TypeScript是微软开发的开源编程语言,它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TypeScript扩展了JavaScript的句法,所以任何现有的JavaScript程序可以不加改变的在TypeScript下工作。TypeScript是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性。



4.  ClojureScriptGitHub

ClojureScript是由Clojure的创建者Rich Hickey推出的,目标是“做Javascript所能做到的事情”。它是LISP 和 Java 技术结合的产物,兼具函数编程和Java平台的优势,聚焦于低错和易用的并发编程,同时足以完成一个通用编程语言的各种任务。你可以通过ClojureScript使用Clojure语言编写代码,然后将其编译为Javascript。

5.  Opal官方网站 / GitHub

一个可将Ruby代码转换为JavaScript的编译器。



6.  IcedCoffeeScript官方网站 / GitHub

这是Coffeescript语言的扩展集。iced解析器是标准coffee解释器的非正式替代方案,因为它能解释所有现存的Coffeescript程序。它添加了2个关键字:await 和 defer,为浏览器和服务器两者提供了强大的异步控制功能。



7.  LiveScript官方网站 / GitHub

LiveScript是Coco的一个分支,是CoffeeScript的间接子集,并在面向对象和命令式编程方面进行了诸多改进。其代码可以编译成JavaScript。



8.  Kaffeine官方网站 / GitHub

Kaffeine是JavaScript语法的扩展,与JavaScript非常类似,代码可以直接编译成JavaScript。



9.  Roy官方网站 / GitHub

Roy是一个以JavaScript为目标的试验性的编程语言,试图融合JavaScript语义和静态函数语言的一些特点,如Damas-Hindley-Milner类型接口、缩进语法、编译时元编程、模式匹配、Monad语法等。



Via Jster
  • 大小: 52.1 KB
  • 大小: 33 KB
  • 大小: 40.5 KB
  • 大小: 39.3 KB
  • 大小: 54.6 KB
  • 大小: 59.7 KB
  • 大小: 33.6 KB
  • 大小: 31.3 KB
12
19
评论 共 87 条 请登录后发表评论
27 楼 半人马 2012-12-13 13:57
所谓码农 写道
喷javascript的必然是js菜鸟.

用着javascript这么垃圾的语言还奉其为神明的开发者就跟天朝的五毛差不多。他们二的程度跟javascript很般配。
26 楼 半人马 2012-12-13 13:55
所谓码农 写道
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

我只想说,你真的会javascript吗?你觉得哪些地方需要被替代?


1. 语言层面缺乏namespace. 别跟我说有n多的库都能解决这个问题,javascript二就二在别的语言的库都在做实事,js的库一大部分在弥补语言缺陷。
2. 万恶的type coerce:  
1 == “1” => true

3. 弱智的判等
   
    {} == {} //false
    ['a', 'b'] == ['a', 'b'] // false
    

    要基于值判等?可以,为每一个类型写一套基于值的deep equality test
4. 乱七八糟的继承机制
    prototype和constructor指来指去,成员一会要放在constructor里,一会要放在prototype里,最后人们终于忍受不了了,搞出来一个Object.create
5. 恶心的scoping,跑跑这段代码:
   
   var arr = [1,2,3];
   var out = [];
   for(var i = 0; i<arr.length;i++) {
      var item = arr[i];
      out.push(function(){ alert(item); });
   }
   out.forEach(function(func){ func(); });

6. hoisting
引用一下肾球(真是好名字)的例子
a = 0;
(function foo() {
   a = 3;
   var a;
})();
alert(a);

7. ;不是必需的,但不写经常会有意外的结果, 为了避免潜在的bug,经常需要写丑陋的 ;function(){...} 
25 楼 kidneyball 2012-12-13 13:53
kanme818 写道
kidneyball 写道
所谓码农 写道
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

我只想说,你真的会javascript吗?你觉得哪些地方需要被替代?


如果你觉得

a = 0
function foo() {
   a = 3
   ...
   var a
   ...
}
alert(a)

的结果是0符合人类正常思维,而你又能接受Js高手们对它的解释:“因为它就是这样实现的”。那JS还真是没有什么地方需要替代的。


你这么挑刺那所有语言都能挑出毛病了,既然使用语言就习惯语法,你怎么不叫老美讲中文。


是他问“你觉得哪些地方需要被替代”,如果有个老美问我“你觉得英语里那些地方需要被替代”,也许也有人会有答案哦。话说不是有人搞出来一种“世界语”吗,而且世界语不能代替英语的最大原因恰恰就是历史原因。
24 楼 kanme818 2012-12-13 13:47
kidneyball 写道
所谓码农 写道
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

我只想说,你真的会javascript吗?你觉得哪些地方需要被替代?


如果你觉得

a = 0
function foo() {
   a = 3
   ...
   var a
   ...
}
alert(a)

的结果是0符合人类正常思维,而你又能接受Js高手们对它的解释:“因为它就是这样实现的”。那JS还真是没有什么地方需要替代的。


你这么挑刺那所有语言都能挑出毛病了,既然使用语言就习惯语法,你怎么不叫老美讲中文。
23 楼 kidneyball 2012-12-13 13:42
所谓码农 写道
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

我只想说,你真的会javascript吗?你觉得哪些地方需要被替代?


如果你觉得

a = 0
function foo() {
   a = 3
   ...
   var a
   ...
}
alert(a)

的结果是0符合人类正常思维,而你又能接受Js高手们对它的解释:“因为它就是这样实现的”。那JS还真是没有什么地方需要替代的。
22 楼 Sev7en_jun 2012-12-13 13:32
标题党,打广告
21 楼 所谓码农 2012-12-13 12:03
喷javascript的必然是js菜鸟.
20 楼 所谓码农 2012-12-13 12:01
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

我只想说,你真的会javascript吗?你觉得哪些地方需要被替代?
19 楼 Leon.Wood 2012-12-12 22:02
挂这种帖子 会教坏小朋友的
18 楼 sweat89 2012-12-12 18:05
日本鬼子 韩国棒子  中国喷子
17 楼 cy727893310 2012-12-12 16:39
操,大家都是发表下自己的见解,干吗非要喷来喷去的,有那个时间的话,还不如去研究研究,这样喷来喷去的话,有意思吗?
16 楼 kanme818 2012-12-12 15:42
qq413041153 写道
大家都少喷了,历史遗留问题确实严重, 但是不管怎么说.公司不上进也好,推崇新技术也好.总之关键在个人.别找外在原因.
说历史原因的 你可以放弃使用ie6,并推动别人也放弃(不管陈功与否,你努力过了)
说公司求稳定的,你可以给技术经理或者cto推荐,采纳不采纳是他们的问题.你也努力过了.
大家都不要喷了
程序员都不容易

不用最新技术未必就是公司不上进,你要知道换一个技术对公司来说风险是非常大的,收益未必很大。领导要考虑的东西太多,技术只是一小部分。
15 楼 qq413041153 2012-12-12 15:17
大家都少喷了,历史遗留问题确实严重, 但是不管怎么说.公司不上进也好,推崇新技术也好.总之关键在个人.别找外在原因.
说历史原因的 你可以放弃使用ie6,并推动别人也放弃(不管陈功与否,你努力过了)
说公司求稳定的,你可以给技术经理或者cto推荐,采纳不采纳是他们的问题.你也努力过了.
大家都不要喷了
程序员都不容易
14 楼 somefuture 2012-12-12 13:54
我是来看评论的。
Dart几个月前学过,没什么意思。
coffee是前几天去一个公司面试,人问道这个,我不懂。结果这公司说:我们公司都是新技术。还真是,我都不懂。
13 楼 allenny 2012-12-12 12:04
1和2看上去靠谱一点
12 楼 shengping521 2012-12-12 11:38
俺是js新手,上面说的那些最后都要说编译成js,那直接用js不是更快?
11 楼 kidneyball 2012-12-12 10:58
漏了 http://kotlin.jetbrains.org/
10 楼 步青龙 2012-12-12 10:36
技术从来都不会固步自封!!
kjj 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

此言差矣,要看浏览器的发展程度和支持程度,如果哪天浏览器内置了解释器就不可同日而语了,技术从来都不会固步自封!!

  大漠说的对,替代是不可能,份额我感觉也抢不到。历史原因确实影响很大,遥看IE6 还有很多用户,支持只可能在浏览器新版本支持,老版本的用户会长久存在,技术发展可以很快,但是作为企业不是这样,很多企业不追随,很多企业追求稳定。浏览器内置很多解析器必然也有其他的影响导致这些新语言用户更少。
9 楼 kanme818 2012-12-12 10:30
JS再2也无法被替代,不是因为技术,只是因为“历史原因”,君不见IE6还余孽尚存,HTML4大行其道么,一些上古的编程语言仍有各自用户,照样有一大堆程序跑在JDK1.4上。
8 楼 tlde_ti 2012-12-12 09:48
damoqiongqiu 写道
半人马 写道
damoqiongqiu 写道
非常可惜,列举的9款语言都非常二,别说替代,抢份额都抢不到。

无知者无畏。javascript无法被替代的唯一原因是历史原因。要想找到比javascript更二的语言真的不容易。

“无知者无畏”原封不动还给你,文章列举的9种语言你玩儿过几种?别为了喷而喷,有损身体健康

二语言 javascript+1,只用过coffescript,依然不满意,不过比javascript好多了.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • FreshWDL:FreshWDL是WDL的纯JavaScript替代品

    FreshWDL是WDL(在Flash上​​运行)的轻量级纯JavaScript替代方案。 这使用户几乎可以从任何设备和平台访问它。 目前,它仍然很简单,几乎没有可定制性,但是只要有兴趣和支持,它就能走很长一段路! 请通过以下...

  • js_password_w_asterisks:简单的 Javascript 替代品

    js_password_w_asterisks 简单的 Javascript 替代 &lt;input type="password" ...

  • stylekit:JavaScript替代品,用于使用XML和XSL创建动态文档

    样式包 使用XML和XSL创建动态文档。 由创建和维护。 该项目当前正在。 有关如何使用样式套件的更多信息,请参见LogicPull。 配置 Stylkit带有一个配置文件config.js 。 这可用于设置Apache FOP可执行文件的位置,...

  • Pure.Lettering.js:Lettering.js 的纯 Javascript 替代品

    Pure.Lettering.js 为什么要做这个? 我是忠实粉丝,而且我已经有一段时间了。 排版是 Web 中非常被低估的部分,但只有一个问题:jQuery。 你看,关于 Lettering.js 的事情是它实际上并没有做那么多,那么为什么要...

  • Dumbdown – Markdown的替代品-JavaScript开发

    降价的愚蠢替代品。 标题的关键字是标题。 Dumbdown-Markdown的替代选项首先是示例标题,这是Dumbdown。 标题的关键字是标题。 字幕Dumbdown编译为html。 Dumbdown段落是Markdown的替代方法。 段落空行变成 链接...

  • 7月十大Java故事:5种JavaScript替代品,OpenJDK Mobile回来了等等

    1.前端开发JavaScript的5种替代方法 我们七月份最受欢迎的文章是Matthew Davis对那些不想使用JavaScript的人的五个替代选择。 这是一种很难避免的语言,但是在他的来宾帖子中,他通过5种不同的方法与我们交谈来...

  • Heroku和Netlify替代-JavaScript开发

    Heroku&Netlify替代品警告:它仍处于beta版,但我想尽快将其发布,而无需过多考虑所有内容-大部分情况下都是如此。 probably它可能到处都是bug,意大利面条代码等,请忽略它们! 关于...

  • readonly-date:JavaScript的Date类型的不变替代品

    只读日期 JavaScript的Date类型的不变替代品 执照 该存储库根据Apache License 2.0获得许可(请参阅“注意”和“许可”)。

  • squery:另一个jQuery替代品

    squery 另一个jQuery“替换” squery基于令人敬畏的并带来以下扩展: .off支持。 即使没有听众。 .on和.off支持多个空格分隔的事件名称。 当仅匹配一个元素时, $('a')返回一个Node ,否则返回NodeList 。...

  • Sucrase:超快速的 Babel 替代品-javascript

    Sucrase:超快速的 Babel 替代品 Sucrase 尝试一下 Sucrase 是 Babel 的替代品,可以实现超快速的开发构建。 Sucrase 没有编译大量的 JS 功能以使其能够在 Internet Explorer 中工作,而是假设您正在使用最新的...

  • PureDom:基于纯 Javascript 的 HTML Builder 库作为模板的替代品

    PureDom 是一种高效的 HTML 构建器和 DOM 转换器,针对最新的浏览器引擎进行了优化,但主要针对与 Node JS 和 MVC 框架一起使用,作为 HTML 模板的替代品。 它旨在将模型数据转换为语义 HTML。 PureDom 不关心遗留...

  • MDEditor:一个可替换JavaScript textarea替代品,用于编写美观且易于理解的markdown

    MDEditor-Markdown编辑器插入式JavaScript textarea替代品,用于编写美观且易于理解的markdown。 WYSIWYG式编辑器允许用户使用工具栏按钮和快捷方式修改markdown。 产生HTML的所见即所得(WYSIWYG)编辑器通常很复杂...

  • sensei:https的替代品

    Sensei 旨在替代 ,使用更简单和更新的堆栈。 它在功能方面并不符合标准,但已准备好进行试驾。 安装 使用发布的 Docker 镜像 :spouting_whale: 使用docker image pull zenika/sensei 创建别名sensei alias ...

  • shrinkray:Electron的轻量级替代品,可使用Javascript制作macOS应用

    由于仅支持macOS(目前),因此是Electron的轻量级替代品。 特征 用于将静态网站转换为macOS应用程序的CLI。 微小的应用程序大小(macOS:&lt;100K&gt;/html -o example.app 示例应用 Draw.io (单击缩略图可下载应用...

  • graphlibrary:现成的dagregraphlib替代品

    图书馆 Graphlibrary是一个JavaScript库,它提供无向和有向多图的数据结构... 它被设计为dagrejs / graphlib的现成替代品。 要了解更多 。执照Graphlibrary是根据MIT许可条款获得许可的。 有关详细信息,请参见文件。

  • sox:SOX的开源替代品

    硫氧化物SOX的开源替代品

  • 掌声:人性化的替代品

    掌声 :clapping_hands: 模式替换器,有助于创建人性化的替换。 试试,在这里您可以测试掌声的每个选项。 安装 首先,请确保您已安装最新版本的 (在此步骤之后,您可能需要重新启动计算机)。...

  • Slack开源替代品RocketChat

    Rocket.Chat 是特性最丰富的 Slack 开源替代品之一。 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等。

  • cordova-medivac:cordova-mobile-spec 的简化替代品

    科尔多瓦医疗运输机 描述 这是cordova-mobile-spec的简化替代品。 跑步 要在平台PLATFORM上创建测试应用程序,请运行: cordova-medivac/drop.js --PLATFORM --all

  • 级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均

    级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不

Global site tag (gtag.js) - Google Analytics