javascript教程_为 JavaScript 开发人员准备的 Dart 参考教程

8cc975755d333dfa200f361bfb7a1060.png

Dart 是 Flutter 主要的开发语言,这一篇文章主要为 JavaScript 开发人员准备的 Dart 教程,我会用很详细的对比来参考,力争 JavaScript 开发人员可以快速的熟练使用 Dart,为使用 Flutter 做好准备;

使用 es2015 做为参照;

示例可以使用 https://dartpad.dartlang.org/ 来运行;Dart 和 JavaScript 有非常重要的不同,Dart2 开始它变成了一个强类型的语言,JavaScript 开发人员可以类比你在使用 TypeScript 。

常量和变量

变量

JavaScript

var c = 1;
c = 2;

let a = 1;
a = 2;

Dart

int a = 1;
a = 2;

var h = 1;
h = 2;

常量

JavaScript

const b = 1;

Dart

final b = 1;
const ggg = 1;

finalconst 唯一的区别是 final 可以接收一个变量但 const 不行,多数情况下我们会使用 final 来定义只赋值一次的值;

函数

定义函数

JavaScript

function a(){}
const b = function(){}

Dart

void funcs(){}
final funcs = (){}

多数情况下 Dart 的函数和 JavaScript 的函数都有一样的特性,如:

  • 将函数当做参数进行传递
  • 将函数直接赋值给变量
  • 对函数进行解构,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数
  • 创建一个可以被当作为常量的匿名函数

当你要使用一个非常简单的函数时,比如只返回一个字符串,它的表现形式和 JavaScript 的箭头函数非常的像;

JavaScript

const d = () => 'dd';

Dart

String d() => 'dd';

实际上它可以等价为:

JavaScript

const d = () => {
  return 'dd';
}

Dart

String d(){
  return 'dd';
}

当我们需要传递一个函数做为参数时:

javascript

function a(){
  console.log('a');
}

function b(funcs){
  funcs()
}

b(a);

Dart

String dd() => 'dd';

void PrintString(funcs){
  print(funcs());
}

PrintString(dd);

字符串模板

JavaScript 的模板和 Dart 一样,都是一个表达式;

javascript

const d = 'icepy';

`hello ${d}`;

function dd(){
  return 'dd';
}

`hello ${dd()}`;

Dart

final d = 'icepy';

'hello $d';

String dd() => 'dd';

'hello ${dd()}';

模块导入和导出

JavaScript 使用 import 和 export 来导入导出模块,Dart 也使用了 import 来导入模块,只不过它和 JavaScript 有一个显著的区别,Dart 并不需要使用 export 来导出模块。

javascript

import xxx from "xxx";
import * as xx from "xxx";
import { xx } from "xxx";

Dart

import 'package:xxx/xxx'; 

import 'package:xxx/xxx' show xxx; //导出其中一个对象

import 'package:xxx/xxx' hide yyy; //导出模块时不导出yyy

import 'package:xxx/xxx' as myxxx; //给导出的模块加上别名

为了更好的用语言来描述你的程序,类就是这样一个很好的媒介,与 JavaScript 非常一致的是 Dart 也使用 class 来定义一个类,使用 extends 来完成继承,与 JavaScript 不同的是 Dart 有更为丰富的功能;

构造函数

JavaScript

class Icepy {
  constructor(a){
    this.a = a;
  }
}

Dart

class Icepy {
  int a;
  Icepy(this.a);
}

构造函数参数默认值

JavaScript

class Icepy {
  constructor(a = 1){
    this.a = a;
  }
}

Dart

class Icepy {
  int a;
  Icepy({this.a = 1});
}

void main() {
  final i = new Icepy();
  print(i.a);
}

定义实例方法

JavaScript

class Icepy {
  constructor(a=1){
    this.a = a;
  }

  say(){
    console.log(this.a);
  }
}

Dart

class Icepy {
  int a;
  Icepy({this.a = 1});

  void say(){
    print(this.a);
  }
}

void main() {
  final i = new Icepy();
  i.say();
}

定义静态方法

JavaScript

class Icepy {
  static staticMethod() {
    return 'static method has been called.';
  }
}

Dart

class Icepy {
  int a;
  Icepy({this.a = 1});  
  Icepy.stt(){
    print('2');
  }
}

void main() {
  Icepy.stt();
}

getter&setter

JavaScript

class Square{
  constructor(length) {
    this.name = 'Square';
  }
  get area() {
    return 2*2;
  }
  set area(value) {
    this._area = value;
  }
}

Dart

class Rectangle {
  num left, top, width, height;
  Rectangle(this.left, this.top, this.width, this.height);
  num get right => left + width;
  set right(num value) => left = value - width;
  num get bottom => top + height;
  set bottom(num value) => top = value - height;
}

void main() {
  var rect = Rectangle(3, 4, 20, 15);
  print(rect.left == 3);
  rect.right = 12;
  print(rect.left == -8);
}

重写

JavaScript

class B {
 say(){
    console.log(1)
 }
}


class A extends B {
 say(){
  console.log(2)
 }
}

new A().say();

Dart

class ICe {
  void say(){
    print(2);
  }
}

class ICCC extends ICe {
  @override
  say(){
    print(1);
  }
}

void main(){
  new ICCC().say();
}

当然 JavaScript 也有很多它比较独特的特性,这就不一一列举了,更多的 Dart 特性需要你在使用的过程中慢慢学习了,比如:

  • 抽象方法
  • 抽象类
  • 隐式接口
  • ...

在我们使用 Flutter 的过程中 @override 应该是我们使用的最多的特性之一;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Dart三端一体化开发是指使用Dart编程语言进行跨平台开发,可以同时为Web、移动端和桌面端开发应用程序。 首先,Dart是一种高性能、可嵌入式的编程语言,可以用于开发Web应用、移动应用和桌面应用。Dart具有良好的可读性和可维护性,通过使用Dart语言进行三端开发,可以减少开发成本和时间。 其次,Dart有丰富的工具和框架支持。最常用的框架是Flutter,它是一个用于开发跨平台移动应用和桌面应用的UI框架。Flutter的热重载功能使得开发过程更加高效,开发者可以即时看到界面的变化。此外,Flutter还提供了丰富的组件和界面风格,使得开发出的应用具有良好的用户体验。 最后,Dart三端一体化开发具有良好的兼容性。Dart编译器将Dart代码编译为JavaScript代码,使得Dart应用可以在各种Web浏览器上运行。同时,通过Flutter的跨平台特性,开发者只需编写一套代码,即可在Android、iOS和桌面操作系统上运行应用程序。 总之,Dart三端一体化开发通过使用Dart语言和相关工具,可以实现在Web、移动端和桌面端的跨平台开发,大大提高了开发效率和代码的可复用性,是一种非常便捷和高效的开发方式。 ### 回答2: Dart三端一体化开发是指使用Dart语言进行跨平台应用程序开发的一种方法。它可以同时在Android、iOS和Web平台上运行,极大地提高了开发者的效率和代码的复用性。 Dart是一种由Google开发的面向对象的编程语言,它具有简洁灵活、易于学习和理解的特点。可以使用Dart编写应用程序的核心逻辑,并且可以通过Dart框架来实现UI界面的构建和管理。根据Dart的特性,我们可以将应用程序的逻辑和界面组件进行有效的分离和封装,从而实现三端一体化的开发。 使用Dart三端一体化开发可以大大减少重复代码的编写量。开发者只需要编写一套逻辑代码,然后根据不同平台的要求,编写相应的界面代码。通过使用Dart的跨平台框架,这些界面代码可以在不同平台上进行复用,从而减少了重复开发的工作量。 此外,Dart三端一体化开发还能够降低项目的维护成本。由于采用了统一的开发语言和框架,开发者可以更加方便地进行项目的维护和升级。当应用程序需要更新时,只需要针对逻辑代码进行修改,而不需要改动各个平台上的界面代码,从而极大地加快了项目的开发周期。 总之,Dart三端一体化开发是一种高效、灵活和可维护的开发方法。它能够充分利用Dart语言的特点,实现跨平台应用的开发与维护,提高开发者的生产效率和代码的复用性。未来,Dart三端一体化开发有望成为移动应用开发的主流趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值