Flutter开发的Web应用 构建及部署 标准流程指南

前言

Flutter是Google推出的跨平台开发框架,支持多种平台:Windwos,Mac,iphone,Android,Web,Linux,甚至经过一些折腾还可以支持树莓派,十分强大,笔者曾写过一些探索其底层架构的文章,有兴趣的读者可自行阅读。

笔者的Flutter版本为3.16.5,算是比较新的一个版本了,本文将进行标准的把web项目部署到自有云服务器这一流程,云服务器采用Nginx作为Web托管服务器,服务器运维面板为宝塔面板(但这个不影响什么)。

本文的部署没有涉及到SSR等额外优化技术,只是全面介绍了如何让这一套合规走起来。

正文

构建产物

确保flutter应用支持Web端:

flutter create --platforms web .

构建Web产物:

flutter build web

额外补充

可以选择两种不同的渲染器来运行和构建 Web 应用:

使用 HTML 渲染
使用 HTML,CSS,Canvas 和 SVG 元素来渲染,应用的大小相对 CanvasKit 较小。

使用 CanvasKit 渲染
应用在移动和桌面端保持一致,有更好的性能,以及降低不同浏览器渲染效果不一致的风险。但是应用的大小会增加大约 2MB。

--web-renderer 可选参数值为 autohtml 或 canvaskit

  • auto(默认)- 自动选择渲染器。移动端浏览器选择 HTML,桌面端浏览器选择 CanvasKit。

  • html - 强制使用 HTML 渲染器。

  • canvaskit - 强制使用 CanvasKit 渲染器。

详情可看官方文档​​​​​​Web 渲染器 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

最简单的方式就选择flutter build web即可

上传产物

即上传产物到Web服务器,这个就不多赘述了,把打包产物的所有东西都上传上去就ok,打包产物的目录在build/web。

此外,在服务器上安装nginx的过程也不赘述,这些直接看其他博文就好。

配置Nginx服务器

为Flutter应用添加一个新的server块,server的示例配置直接可以照抄如下写法:

server {
    listen 80;
    server_name flutterapp.mydomain.com;

    root /www/my_flutter_app/build/web;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
    }

    location ~ .*\.(js|css)?$ {
        expires 12h;
    }

    access_log /www/wwwlogs/flutterapp-access.log;
    error_log /www/wwwlogs/flutterapp-error.log;
}
  • listen 指定web的监听端口号
  • server_name 代表域名,没有的话就写服务器ip地址吧
  • root 代表web的跟路径目录
  • index 指定了用index.html文件作为响应
  • 第一个location匹配所有的请求路径,先尝试按请求的URI在root定义的目录下查找文件;如果没有找到,再尝试将URI当作目录处理并查找该目录下的index.html文件;如果还是没有找到,最后就返回根目录下的index.html文件,这样配置更适合flutter这种SPA应用一些。
  • 第二个location和第三个location都是定义了缓存,提升网站访问性能
  • 后面就是两个报错log了

接下来保存并且重启Nginx服务,同时不忘放行指定端口就大功告成。

补充

在Nginx配置中,server_name 指令用于定义处理请求的服务器的名称。这可以是一个具体的域名(如 example.com),一个子域名(如 sub.example.com),一个通配符名称(如 *.example.com 表示 example.com 的所有子域名),或者是一个精确名称(如 localhost 或特定的一个名称,不一定是有效的域名)。

server_name 将匹配HTTP请求的 Host 头部,使Nginx正确地匹配并处理这些请求。

另外,实测部署flutterWeb后一些显示效果可能会有些问题,需要继续测试改进。

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Flutter开发Windows应用是一种跨平台的开发方式,可以让开发者在Windows平台上开发出高质量的应用程序。Flutter提供了一套完整的UI框架和工具,可以帮助开发者快速构建出美观、高效的应用程序。同时,Flutter还支持热重载、动态UI、响应式编程等特性,可以大大提高开发效率和用户体验。如果你想开发Windows应用Flutter是一个不错的选择。 ### 回答2: Flutter是一个崭新的移动应用程序开发框架,它基于Dart开发,并具有独特的自定义窗口渲染引擎,提供了深受开发者喜爱的快速开发能力。目前,Flutter在移动应用开发方面取得了巨大的成功,不过人们也越来越关注Flutter在其他方面的应用场景。 近年来,随着Windows操作系统在不断改进,人们开始注重构建用于Windows平台的高质量应用程序。Flutter社区也已开始把Flutter应用于Windows应用程序开发领域。 Flutter应用于Windows应用程序开发,不仅可以构建高性能的UI,还可以利用Dart语言以及其他特性,构建兼容WINDOWS的高质量应用程序。另外,Flutter提供的快速开发能力显著减少了开发时间和劳动力成本,使得Flutter成为Windows应用程序开发的必备工具。 对于Windows应用程序开发者而言,Flutter开发环境的搭建非常简单。Flutter提供了一套完整的工具包和API,可通过在Windows操作系统上安装Flutter SDK完成设置。 Flutter开发Windows应用程序的不同之处在于,需要考虑不同平台的兼容性问题,并优化应用程序的UI设计和性能。Flutter提供了许多组件和插件,使开发人员能够轻松地构建不同风格和大小的应用程序。同时,Flutter还提供了组件库和文档,可供开发者使用和参考,以提高开发效率。 总之,Flutter已成为开发人员的首选框架之一,以其高性能、高质量和丰富的UI组件而受到开发者的欢迎。使用Flutter开发Windows应用程序,将是一个高效、优质、灵活和具有前瞻性的选择。 ### 回答3: Flutter是一种跨平台的开源框架,用于构建高性能的移动应用、桌面应用Web应用,具有快速开发、高度可定制化和优秀的用户体验。Flutter的跨平台性使得它成为了同类开源框架中的佼佼者,而且它还提供了很多工具和插件来简化开发过程。 谈到Flutter开发Windows应用,我们可以先从桌面应用的角度出发,Flutter目前支持Windows、Linux和macOS三个桌面平台,并且已经发布了稳定版,可以让开发开发高性能的桌面应用Flutter开发桌面应用有以下几个好处: 1. Flutter桌面应用采用相同的代码结构和语言,不需要额外的代码重构或额外学习一门语言。 2. Flutter桌面应用的UI控件库相当强大,支持自定义和扩展,可以构建自定义的UI控件。 3. Flutter桌面应用具有良好的跨平台性,开发者可以一份代码适配多个平台,节省开发成本和时间。 4. Flutter桌面应用具有快速的热重载和调试工具,使开发速度更快,效率更高。 在开发Flutter桌面应用之前,我们需要安装Flutter SDK、 Visual Studio Code或Android Studio等开发工具。然后根据官方文档进行环境配置和项目创建,最后就可以使用Flutter的丰富控件来构建Windows应用了。开发者也可以使用第三方库来增强应用的功能和体验,例如窗体管理和应用更新等。 总的来说,Flutter桌面应用是一种快速、高性能、跨平台的开发方式,有着很好的可定制性和用户体验。通过Flutter开发Windows应用,可以为用户带来更好的应用体验,同时为开发者节省了时间和精力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏目艾拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值