zoukankan      html  css  js  c++  java
  • Atitit.dart语言的特性  编译时js语言大总结

    Atitit.dart语言的特性  编译时js语言大总结

     

     

    1原型环境1

    1.1. Dart可以编译js3

    2第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时会3

    2.1.1. 魔术私有变量方法4

    2.1.2. 类型转换5

    2.1.3. 表达式的值即为返回值的情况 5

    2.1.4. 级联操作符(..允许在一个成员变量上执行多个操作5

    2.2. 字符串转换6

    2.3. 支持有名字的构造方法构造方法  与魔术构造方法6

    2.3.1. Optional and Named Arguments7

    2.4. 异步操作  await 和 async。  7

    2.4.1. 生成器(Generator9

    3要体验Dart很简单,如果装了Java SDK,只要下载个集成环境(只有145M),9

    3.1. TypeScript 不好用9

    3.2. Coffeescript 带测试9

    3.3. 参考9

     

     

     

    1. 原型环境

    编程语言并不是孤立存在的,Dart也是这样,他由语言规范、虚拟机、类库和工具等组成:

    · SDK:SDK 包含 Dart VM、dart2js、Pub、库和工具。

    · Dartium:内嵌 Dart VM 的 Chromium ,可以在浏览器中直接执行 dart 代码。

    · Dart2js:将 Dart 代码编译为 JavaScript 的工具。

    · Dart Editor:基于 Eclipse 的全功能 IDE,并包含以上所有工具。支持代码补全、代码导航、快速修正、重构、调试等功能。

     

    Dart 两种运行模式:

    · 检查模式(checked):进行类型检查,如果发现实际类型与声明或期望的类型不匹配就报错。

    · 生产模式(production):不进行类型检查,忽略声明的类型信息,忽略 assert 语句。

    Dart 两种运行环境(和 JavaScript 类似):

    · 客户端模式(client):在浏览器中运行,通过 dart:html 库与页面交互,操作 DOM、CSS,HTML5 编程等。

    在支持 Dart VM 的浏览器中直接执行 dart 代码,如 Dartium。

    在不支持 Dart VM 的浏览器中,dart 代码被编译为 JavaScript 执行。

    · 服务器模式(server):在操作系统中,以独立 VM 中运行,可以使用 dart:io 库读写文件、套接字等

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    1.1. Dart可以编译js

    谷歌推出 Dart 语言,目的是解决 JavaScript 的缺点。当谷歌在 Dart 上注入满腔热情之时,微软却泼了一盆冷水,称“改善 JavaScript 还有很长的路要走”。

    Google正式正式发布了Dart语言,貌似是JavaScript的替代品。看看下面的代码,是不是很熟悉:整个就是一个Java框架,C++小局部混搭的MINI版JAVA。很看好这个语言。几乎没有任何障碍,一般的java程序员花1个小时看看语法,就几乎能够无障碍的上手开发了。

    简单的看了一下官网的说明,给我初步体验的感觉是Dart是Java和javascript结合体的样子,然后又围观了一下他的core library,给自己带来了不少的惊喜,很好的封装了Queue Collection等强大的集合以及数据结构,而且有match这样的匹配表达式的类,总之,就是一个开发Web程序的利器。

    2. 第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时会

    官网上文章介绍说Java程序员可以一小时熟悉Dart语法,那C#程序员半小时就够了。看那句 list.sort((a, b) => a.compareTo(b)),是不是倍感亲切?当然Dart刚刚起步,语言特性没有C#那么丰富,比如没有特性、反射之类的支持,不过能看出其该有的总归会有的。

    第三个理由,Dart从一开始就是开源项目,我们都可以参与其中,如果有一个Dart也成为像C一样不朽的语言,我们还可以名留青史呢。

     

    二、基本语法

     

    Dart 中的所有东西都是对象,包括数字、函数等,它们都继承自 Object,并且对象的默认值都是 null(包括数字)。

     

    Dart 中的语句以分号结束,并且不是可选的。

     

    Dart 的类型是可选的。Dart 语言本质上是动态类型语言,可以使用 var 声明变量,一个变量也可以被赋予不同类型的对象。但大多数情况,我们不会去改变一个变量的类型。在 Dart 中也可以使用类型来声明变量,就像在静态语言中做的那样。关于可选类型,详见我的另一篇文章《Dart 中的可选类型》

     

    Dart 支持顶层的变量和函数,就像 JavaScript 一样,它并不要求你像 Java 那样把所有的东西都放到类中。

     

    Dart 中以下划线开头的标识符是私有的。除此之外,都是公有的。注意私有单元不是类,而是库。也就是说,在同一个库中全部可见,私有只是对库的外部不可见。

     

    2.0.1. 魔术私有变量方法

    String _appellation;

    2.0.2. 类型转换

    Dart 用关键字 as 来做类型转换。

    void updateBadge(Event e) {

      String inputName = (e.target as InputElement).value;

    }

     

    2.0.3. 表达式的值即为返回值的情况

     

    2.0.4. 级联操作符(..允许在一个成员变量上执行多个操作

    级联操作符(The cascade operator (..))可以允许在一个成员变量上执行多个操作。

    genButton..disabled = false

             ..text = 'Aye! Gimme a name!';

    · 1

    · 2

    以上语句就等价于

    genButton.disabled = false;

    genButton.text = 'Aye! Gimme a name!';

     

    2.1. 字符串转换

    Dart 中变量转化成字符串比 Java 方便多了,跟 Python 有一拼,直接在变量名前加上$符号就可以了。

    '$_firstName the $_appellation';

    2.2. 支持有名字的构造方法构造方法  与魔术构造方法

    Dart 支持有名字的构造方法,这一点比 Java 和 Python 都先进。

    PirateName.fromJSON(String jsonString) {

      Map storedName = JSON.decode(jsonString);

      _firstName = storedName['f'];

      _appellation = storedName['a'];

    }

    · 1

    · 2

    · 3

    · 4

    · 5

    这里 PirateName.fromJSON 是一个整体,用的时候要写全了。

    return new PirateName.fromJSON(storedName);

     

    2.2.1. Optional and Named Arguments

    跟 Python 一样,Dart 也支持 Optional and Named Arguments,例如参数可以这么写:

    PirateName({String firstName, String appellation}) {

      # ...

    }

    · 1

    · 2

    · 3

    参数要用一个大括号括起来,应该是需要把参数封装成一个类似于 Python 的 Dictionary

    但是调用的时候不需要传递所有的参数。

    new PirateName(firstName: inputName)

    2.3. 异步操作  await 和 async。 

    Dart 语言原生支持异步操作,主要是用两个关键词 await 和 async。 
    例如,如果我们要定义一个异步方法,不需要像 java 那样去 new Thread,直接在方法后面加上 async 关键字就OK了,这样调用时,该方法时会直接返回一个 Future,caller 无需等待。

    static Future readyThePirates() async {

      String path = 'piratenames.json';

      String jsonString = await HttpRequest.getString(path);

      _parsePirateNamesFromJSON(jsonString);    

    }

    · 1

    · 2

    · 3

    · 4

    · 5

    await 跟 java中的 wait 方法用法一样,表示等待,但是它只能用于 async 的方法中。

    例如上面代码片段中, await HttpRequest.getString(path) 就表示必须要等到 HttpRequest.getString(path) 返回的 Future 有了最终结果才会继续往下执行 _parsePirateNamesFromJSON(jsonString);

     

    2.3.1. 生成器(Generator

    3. 要体验Dart很简单,如果装了Java SDK,只要下载个集成环境(只有145M),

    解压缩,运行DartEditor即可。作为初代IDE,界面很不错了,我觉得相当于VS2003的程度吧,也支持调试。

    3.1. TypeScript 不好用

    3.2. Coffeescript 带测试

    这一点来说,Dart、CoffeeScript、TypeScript和Fantom等许多后JavaScript语言的意义很大。Bredan Eich虽然嘴上不服软,但JavaScript和ES标准的演进在这些语言出现后明显加快,却是事实。

    3.3. 参考

    Google的飞镖有多犀利 - 试用Dart语言 - 小城故事 - 博客园.htm

     

    众家评说谷歌新编程语言Dart - 51CTO.COM.htm

    Dart是一个怎样的语言? 一介码农 博客频道 - CSDN.NET.htm

    Dart是一个怎样的语言? 一介码农 博客频道 - CSDN.NET.htm

    Dart 语言入门(一)——概述和基本语法 - hanguokai Jackie的日志 网易博客.htm (吗看完)

    ---佛拉了我nnot

     Read  finish  

    Dart语言惯用语——Dart中特有的代码味道(1) - 51CTO.COM.htm (骂完

    初读谷歌自家的语言之作------Go语言和Dart语言   Golang中文社区(Go语言构建)   Go语言中文网   Go语言学习园地.htm

    Dart实战 (2) Dart语言特点 推酷.htm

    [观点]众家评说谷歌新编程语言Dart-CSDN.NET.htm

  • 相关阅读:
    bash脚本编程之数组和字符串处理
    Linux启动流程简介以及各启动阶段失败的恢复方法
    Linux路由表的重要性以及配置
    Linux终端和伪终端简述
    Linux九阴真经之无影剑残卷9(Shell脚本编程进阶)
    Linux九阴真经之无影剑残卷8(计划任务)
    Linux九阴真经之无影剑残卷7(进程管理)
    Linux九阴真经之无影剑残卷5(Linux静态路由的实现)
    Linux九阴真经之无影剑残卷4(创建虚拟内存--swap)
    Linux九阴真经之无影剑残卷3(将home目录搬到新分区)
  • 原文地址:https://www.cnblogs.com/attilax/p/15198741.html
Copyright © 2011-2022 走看看