美文网首页
Flutter For Web实践

Flutter For Web实践

作者: huangjun0 | 来源:发表于2020-08-20 18:36 被阅读0次

    Flutter For Web 已经发布一年多时间,他的发布意味着我们可以真正地使用一套代码、一套资源部署大前端。在这里希望和大家分享下实践过程和踩坑实例,欢迎一起交流探讨。

    01 Flutter For Web简介

    什么是Flutter

    Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。
    Flutter重写一套跨平台的UI框架,引擎依靠跨平台的Skia图形库来实现,依赖系统的只有图形绘制相关的接口,可以在最大程度上保证不同平台、不同设备的体验一致性。

    其他跨平台解决方案 Flutter

    Flutter For Web

    Flutter For Web想在单代码库的情况下,使Flutter应用拥有Web支持。
    Flutter应用可以被部署到任意的Web服务器上,或嵌入到浏览器中,而不需要特殊的浏览器插件支持。

    Flutter for Web架构 Flutter for Mobile架构 Flutter For Web的绘制

    开发过程

    1.配置开发环境

    $ flutter channel beta 
    $ flutter upgrade 
    $ flutter config --enable-web
    

    2.创建应用

    $ flutter create myapp
    $ cd myapp
    

    3.编译

    $ flutter build web
    
    1. 老项目增加对flutter web的支持
    $ flutter create .
    

    代码结构

    代码结构:

    lib
    写 dart 代码的主要区域

    web
    web工程的主目录了,包含 index.html 文件。但是如果你需要有资源文件、js 文件等 web 所需资源,也可以放到这个文件夹。

    main.dart.js
    dart文件转化为js,会在编译后的build文件夹中看到

    Flutter For Web 工程目录结构

    编译后的产物:

    assets 资源相关文件
    index.html web工程的入口
    main.dart.js dart代码编译后的文件

    编译后的产物

    开发中存在的问题

    Dart库的平台差异

    1. 有部分库在Flutter web中不支持
      如:dart.io无法在web中使用,dart.io支持非web应用程序的文件、套接字、HTTP 和其他 I/O 操作。

    2. 有部分库只支持Flutter web中使用
      dart:html html 相关的操作,如 document、ua、cookie 等等

      dart:js dart 和 JS 进行交互,可以给 js 方法传参,甚至还可以将 js 的参数带回等等

    3.解决方案--条件引用

       import ‘httpReuqest-stub.dart’
            if (dart.library.io)   ‘httpReuqest-mobile.dart’
            if (dart.library.html)  'httpReuqest-web.dart’;
    

    与客户端开发的区别

    支持Flutter web的第三方库相对较少

    只支持iOS和Android的第三方库

    Flutter web中的Cookie管理

    Flutter web中的cookie实际上是由浏览器来管理的,因此无法像客户端开发一样,自由的设置cookie

    跨域访问

    一个web页面发起的ajax请求,只能是于当前页同域名的路径,这能有效的阻止跨站攻击。

    因此,与客户端不同,web原则上只能请求本域名的网络接口,除非该接口设置可以接受跨域访问。

    性能

    1.Flutter For Web 目前也是单页面应用。

    编译后main.dart.js 轻松过 1M,导致首次加载时长可能过慢,比如 canvas 绘制可能会导致性能问题。

    1. PC 端首次加载的速度略慢,而手机端会有超过 2S 的延迟。

      复杂列表滑动的时候帧率也只有十几,所以这里还有待官方后面对性能进行优化。

      示例网站:https://dev.kuyichang.com/

    https://rive.app/

    http://jetpack.ibaozi.cn

    总结

    Flutter For Web的优缺点总结

    展望

    1.对不同浏览器的支持
    chrome、safari、firefox、ie/edge


    image.png

    2.性能的优化
    js大小
    渲染效率

    3.生态的完善
    第三方库的支持

    相关文章

      网友评论

          本文标题:Flutter For Web实践

          本文链接:https://www.haomeiwen.com/subject/qksejktx.html