作家
登录

10 个最终编译成 JavaScript 的脚本语言

作者: 来源: 2017-09-28 16:05:13 阅读 我要评论


与简单的网站比拟,现代应用法度榜样有更多 不合的需求 。然则,浏览器是一个拥有(大年夜部分)固定技巧的平台,并且JavaScript仍然是web应用法度榜样的核心说话;须要在浏览器中运行的任何应用法度榜样都必须用该说话实现。

我们都知道JavaScript并不是实现所有义务的最佳说话,当碰到复杂的应用时,它可能就不太合适。为了避免这个问题,已经创建了几种新的说话和现有说话的变体,它们都生成可以在浏览器中运行的代码,而无需编写任何JavaScript代码,也不消推敲说话的局限性。

文中介绍了10个有趣的说话,这些说话都可以转换成JavaScript代码在浏览器中履行,也可以在Node.js如许的平台上履行。

Dart 是一种经典的面向对象说话,个中所有事物都是对象,任何对象都是类的实例(对象也可以充当函数)。它专门用于构建浏览器、办事器和移动设备的应用法度榜样。它由谷歌保护,并且是驱动下一代 AdWords 用户界面的说话 , 而 AdWords 是给谷歌创造收入的最重要的产品,这本身就是在证实其大年夜范围的力量。

该说话可被翻译成 JavaScript ,以便在浏览器中应用,或者由 Dart VM 直接解释履行,这也许可你构建办事器应用法度榜样。可以应用 Flutter SDK 创建移动应用法度榜样。


复杂的应用法度榜样还须要一构成熟的库和专门为此义务而设计的说话特点,而 Dart 包含所有这些库和特点。一个风行的库的例子是 AngularDart ,Angular 的 Dart 版本。

关于虚拟机中的并发编程,Dart 应用所谓的 Isolates 连同它们本身的内存堆,来代替共享内存线程(Dart 是单线程的),应用消息实现通信。 在浏览器中,这个事宜稍有不合:你并不是创建新的 isolates, 而是创建新的 Workers 。

// Example extracted from dartlang.orgimport 'dart:async';import 'dart:math' show Random;main() async {  print('Compute π using the Monte Carlo method.');  await for (var estimate in computePi()) {    print('π ≅ $estimate');  }}/// Generates a stream of increasingly accurate estimates of π.Stream<double> computePi({int batch: 1000000}) async* {  var total = 0;  var count = 0;  while (true) {    var points = generateRandom().take(batch);    var inside = points.where((p) => p.isInsideUnitCircle);    total += batch;    count += inside.length;    var ratio = count / total;    // Area of a circle is A = π⋅r², therefore π = A/r².    // So, when given random points with x ∈ <0,1>,    // y ∈ <0,1>, the ratio of those inside a unit circle    // should approach π / 4. Therefore, the value of π    // should be:    yield ratio * 4;  }}Iterable<Point> generateRandom([int seed]) sync* {  final random = new Random(seed);  while (true) {    yield new Point(random.nextDouble(), random.nextDouble());  }}class Point {  final double x, y;  const Point(this.x, this.y);  bool get isInsideUnitCircle => x * x + y * y <= 1;}

开端应用Dart

TypeScript

TypeScript 是 JavaScript 的超集;有效的 JavaScript 法度榜样也是有效的 TypeScript 法度榜样,但后者添加了静态类型〖撇哙译器也可以充昔时夜 ES2015+ 到当前实现的转译器,所以你总能获得最新的功能。

不合于很多其他说话,TypeScript 保持 JavaScript 的精力无缺无缺,只增长了功能来进步代码的靠得住性。这些是类型注释,以及其他类型相干的功能,使得编写 JavaScript 加倍高兴,这得益于启用了静态分析器等专门的对象来赞助重构过程。别的,类型的添加改进了应用法度榜样不合组件之间的接口。

类型揣摸受到支撑,是以你不必大年夜一开端就编写所有的类型。你可以编写快速解决筹划,然后添加快有的类型以获取对代码的信念。

TypeScript 也支撑高等的类型,如 intersection(交集) 类型 、 union(并集、结合) 类型、 类型别号、 可区分结合(discriminated union)和类型保护。你可以在 TypeScript 文档 站点的高等类型 页面中查看所有这些类型。

如不雅你应用 React,则还可以经由过程添加 React 类型来支撑 JSX。

class Person {    private name: string;    private age: number;    private salary: number;    constructor(name: string, age: number, salary: number) {        this.name = name;        this.age = age;        this.salary = salary;    }    toString(): string {        return `${this.name} (${this.age}) (${this.salary})`;    }}

Elm 是一种纯粹的函数编程说话,它编译成 JS、 HTM L和 CSS。 你可以只应用 Elm 构建一个完全的┞肪点。这使之成为 JavaScript 框架如 React 的一个很好的替代筹划。用它构建的应用法度榜样会主动应用虚拟 DOM 库,使其速度异常快。其一大年夜长处是内置的体系构造,它使你忘记了数据流,而将重点放在数据声明和逻辑上。

在 Elm 中,所有函数都是纯粹的,这意味着它们将老是对给定输入返回雷同的输出。除非你指定,不然它们不克不及做任何其他工作。例如,为了拜访长途 API,你将创建 command (敕令)函数来竽暌闺外界通信,以及创建 subscription (订阅)以侦听响应。纯粹性的另一点是,值是弗成变的;当你须要某样器械时,你创建新值,而不是修改旧值。

Elm 的采取可所以渐进式的;可以应用 ports (端口) 与 JavaScript 和其他库进行通信。固然 Elm 尚未达到版本 1,但它正被用于复杂和大年夜型的应用法度榜样,使其成为复杂的应用法度榜样的可行的解决筹划。


  推荐阅读

  PHP7中我们应该学习会用的新特性

2. ?? &mdash;&mdash;NULL 归并运算符有效的类型有:class/interface name, self, array, callable, bool, float, int and string. PHP7于2015年11月正式宣布,本次更新可谓是PHP的重要里程碑,它将带来明>>>详细阅读


本文标题:10 个最终编译成 JavaScript 的脚本语言

地址:http://www.17bianji.com/lsqh/37664.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)