大前端时代搞定PC/Mac端开发,我有绝招
如果你是一位前端开发工程师,对“跨平台”一词应该不会感到陌生。像常见的前端框架:比如React、Vue、Angular,它们可以做网页端,也可以做移动端,但很少能做到跨PC、Mac端,也就是我们熟知的Windows、Linux以及macOS上的应用程序。即使有,受限于JS的性能瓶颈,当有大量的科学计算需求时,则会略显疲态。
有没有一个理想的UI框架能够通杀它们所有呢?答案是——Flutter。
Flutter的性能优势
做为一个通用的跨平台的UI框架,Flutter在性能方面的突出表现是非常引人夺目的。拿Android举例,一个安卓的原生APP在绘图的时候,要先调用Android框架的Java代码,然后再调用skia(C/C++)绘图引擎代码,最后生成的CPU或者gpu的指令,在设备上完成绘图。而Flutter的APP在绘图的时候,是先调用Flutter框架的Dart代码,然后直接调用skia(C/C++)代码。所以只要Flutter框架Dart代码的效率可以媲美原生框架的Java代码的时候,那么Flutter的性能就可以媲美原生APP。
而如React Native,它首先要调用框架本身的JavaScript代码,然后再调用Android框架的Java代码,然后调用skia,这比原生的App运行过程多出了一个步骤,所以它的这个性能肯定是不及原生的。
国内知名的“闲鱼”技术团队对于Flutter在性能上逼近原生App的解释如下:
1.预先(AOT)编译,运行时直接执行Native(arm)代码;
2.必需的同Native通信(channel)是C++层次,性能好;
3.其线程模型中Dart代码执行(在UI TaskRunner),图片下载(IO TaskRunner),真正的渲染(GPU TaskRunner),同平台的通信等(Platform TaskRunner即Native概念下的主线程)是互相隔离的。透过将耗时的逻辑放入IO TaskRunner或新开Isolate(会在Dart线程池中执行);GPU TaskRunner可以将帧数据提交给GPU时UI TaskRunner已在准备下一帧数据这种流水线的机制提高了渲染速度;
4.Flutter层面针对布局等的优化:布局计算时单次树走动即可完成;Relayout Boundary机制:如果Child 的size是固定的,那么不会因为Child的Relayout导致Parent ReLayout;Repaint Boundry机制:如果树的某个子树如果同树的其他部分不同频地重绘,那么RenderRepaintBoundary可以改善性能。
5.Skia团队针对Flutter的优化。
6.框架的布局优化对上层开发透明。
如果你有一定的前端开发经验,特别是移动端的开发经验,或者深入探究过Flutter,上述内容应该不难理解。
如今,使用Flutter开发移动端App的教程铺天盖地,我来手把手教你如何使用Flutter搞定PC、Mac端开发,从此彻底打通前端跨平台。
PC端实战
1. 准备工作
首先我们要确保Flutter开发环境准备就绪。有关搭建开发环境的步骤,可参阅:
https://flutter.cn/docs/get-started/install
此处不再赘述,我们重点关注下面的操作:
到今天为止,在Stable分支上的Flutter SDK可以设置启用PC端开发的能力,但实际上是无法使用的。因此,我们需要将其切换到master分支上。切换的方法是在命令行窗口执行下面的语句:
flutter channel master
或许也可以直接git方式切换,但我没有尝试,感兴趣的朋友可以自行尝试。
在回显切换成功的提示后,记得执行
flutter upgrade
升级到最新的SDK(包含Dart)版本。
另外,如果你使用的是Windows的话,还需要安装Visual Studio开发软件,并安装Desktop development with C++的Workload(中文名为:工作负载)。如果是macOS,则无需安装Visual Studio。
2. 启用PC端开发支持
在命令行执行
flutter config --enable-windows-desktop
稍等几秒后即可完成。控制台将如下输出:
Setting "enable-windows-desktop" value to "true".
You may need to restart any open editors for them to read new settings.
成功启用后,执行
flutter devices
列出已连接的调试设备列表,首次执行可能会花费一些时间下载必要的开发工具包。随后,可以看到如下类似的输出结果:
1 connected device:
Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.18363.900]
其他操作系统环境类似。
另外,我们也可以随时执行
flutter config
查看目前的配置。还可以随时还原为默认设定。
Settings:
enable-windows-desktop: true
3. 创建项目
这一步无需多言,在相应的目录下执行
flutter create [项目名]
即可。
4. 迁移项目
对于之前没有启用PC端开发支持的工程,或者需要迁移到PC、Mac端的工程,需要在项目根目录下执行
flutter create .
(注意最后的点)
5. 运行程序
这一步无需多言,进入项目根目录,然后执行
flutter run
即可看到运行结果。

好了,接下来就是实现具体业务的环节了。
希望各位读者有所收获,祝工作顺利!
大前端时代搞定PC/Mac端开发,我有绝招的更多相关文章
- 2018年末--积极拥抱h5.转载 大前端时代来临,我们何去何从?
1.大前端时代是什么? 大前端时代是WEB统一的时代,利用html5或者6甚至7,不但可以开发传统的网站,做炫酷的网页动态效果,更可以采用BS架构应用程序.开发手机端web应用.移动端Native应用 ...
- 06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 我们先看看画布的魅力: 初始画布 canvas默认是宽3 ...
- 大话大前端时代(一) —— Vue 与 iOS 的组件化
序 今年大前端的概念一而再再而三的被提及,那么大前端时代究竟是什么呢?大前端这个词最早是因为在阿里内部有很多前端开发人员既写前端又写 Java 的 Velocity 模板而得来,不过现在大前端的范围已 ...
- Web大前端时代之:HTML5+CSS3入门系列
准备来一波新技术,待续.... Old: 联系源码:https://github.com/dunitian/LoTHTML5 文档下载:https://github.com/dunitian/LoTD ...
- 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...
- 01.Web大前端时代之:HTML5+CSS3入门系列~初识HTML5
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 文档申明 <!--文档类型申明,html代表是ht ...
- 02.Web大前端时代之:HTML5+CSS3入门系列~H5结构元素
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.结构元素 可以理解为语义话标记,比如:以前这么写&l ...
- 03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 2.功能元素 1.hgroup 对网页或区段(secti ...
- 04. Web大前端时代之:HTML5+CSS3入门系列~HTML5 表单
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 一.input新增类型: 1.tel:输入类型用于应该包 ...
随机推荐
- [原创][开源] SunnyUI.Net 开发日志:UIBarChart 坐标轴刻度取值算法
_ 在开发UIBarChart的过程中,需要绘制Y轴的刻度,数据作图时,纵横坐标轴刻度范围及刻度值的取法,很大程度上取决于数据的分布.对某一组数据,我们很容易就能知道如何选取这些值才能使图画得漂亮.但 ...
- @gym - 100958J@ Hyperrectangle
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个大小为 \(l_1\times l_2 \dots l_ ...
- Windows10 下安装和配置Redis
原文链接:https://blog.csdn.net/linghugoolge/article/details/86608897 一.下载地址https://github.com/MicrosoftA ...
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- Android学习笔记触摸事件
案例代码: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <Relativ ...
- drf之框架基础
(一)drf基础 全称:django-rest framework 接口:什么是接口.restful接口规范(协议) CBV(基于FBV的基础上形成).CBV生命周期源码----基于restful规范 ...
- 键盘侠Linux教程(四)| 常用命令
前言 Linux命令并不可怕,只要熟悉日常的操作命令即可,其他不熟悉的命令,需要用到的时候可以查阅资料,熟能生巧. Linux常用操作命令 命令的基本格式 命令的提示符 [root@localhost ...
- Quaternion:通过API对Quaternion(四元数)类中的方法属性初步学习总结(二)
1.RotateTowards方法 RotateTowards(From.rotation,To.rotation,fspeed) 个人理解:使From的rotation以floatspeed为速度, ...
- Beta冲刺--冲刺总结
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 Beta冲刺--冲刺总结 作业正文 如下 其他参考文献 ... Beta冲刺 ...
- 12.DRF-节流
Django rest framework源码分析(3)----节流 添加节流 自定义节流的方法 限制60s内只能访问3次 (1)API文件夹下面新建throttle.py,代码如下: # utils ...