什么是Dart?
Dart是谷歌开发的,类型安全的
,面向对象
的编程语言,被应用于Web、服务器、移动应用和物联网
等领域。
dart是谷歌在2011年推出的编程语言。谷歌希望使用dart来取代JavaScript。谷歌是一个颠覆式创新公司,谷歌退出golang是为了取代java,c++。谷歌退出flutter就是为了取代RN。dart的情况也是类似的。谷歌工程师觉得JavaScript有无法弥补的设计缺陷,所以就开发了dart,但是dart作为JavaScript的取代者,他并没有获得成功,然而是JavaScript后来因为nodejs的崛起成为了全栈语言前后端通吃。那dart也就进行了转变,作为flutter的开发语言重新出山
Dart最大的特点是什么?
他同时支持
JIT
和AOT
两种模式
我们开发阶段使用JIT
我们在发布阶段是AOT
完美实现了鱼和熊掌兼得,开发效率和运行效率都是业界标杆
1.JIT 是just in time
开发效率特别高
,但是因为需要实时编译,性能会受到一定的影响
运行的时候实时进行编译。
及时编译可以简单的理解为脚本语言
他一边解释一遍执行,他不需要事先编译可以动态的下发和执行代码,这就实现了flutter最受欢迎的功能叫热重载(hot reload)
代表语言有:JavaScript python 等等
2.AOT 是 ahead of time
运行前先编译,要生成二进制代码,由机器直接执行,好处是 速度快
,性能高
但是每次执行之前,他都需要提前去编译,编译需要花费一些时间,所以开发效率会相对低一点
代表语言有: C Golang 等等
Dart另外一个特点-单线程模型
我们在编程的时候都是需要支持并发。并发的支持目前主流有两种方式
一种是通过内存共享的方式,采用抢占加锁的方式来实现线程,进程直接的切换,从而实现并发,像c语言之类的就是这么做的(难度高,容易出错)。
另外一种没有共享内存,各个worker之间,通过消息通信来协调的
dart没有共享内存,只有单线程,是单线程模型,它可以有多个isolate(隔离) 通过event loop 、event queue 来传递消息来协调 isolate的工作。这种模式的概念相对会比较简单。代码写起来和维护起来都相对比较容易,对并发的支持也比较好。
Dart有那些运行方式?
- 原生虚拟机(Dart代码可以运行在Windows、Mac、Linux上)
- JavaScript引擎(Dart代码可以转成JS代码,然后运行在浏览器上)
pub 类似npm的工具
pub pub是管理包的工具类似npm
https://pub.dev 是包的仓库 类似 https://www.npmjs.com/