热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《Flutter进阶》用dart搭建服务端:dart_mars框架研究

一种语言就可以轻松搞定前后端安卓端ios端web,等等,此时学习还给你送一个桌面端~~~听起来是不是很酷很骚跃跃欲试~!!走起~这篇文章主要是推荐一个dart开发服务器的思路,如

一种语言就可以轻松搞定前后端+安卓端+ios端+web , 等等 , 此时学习还给你送一个桌面端~~~听起来是不是很酷很骚跃跃欲试~!! 走起~

这篇文章主要是推荐一个dart开发服务器的思路 ,
如果你已经会用flutter开发app ,
如果你想尝试做后端服务器和接口开发 ,
如果你想极大提高一个人的全栈开发效率 ,
那么看到这篇文章对你或许有启发.并介绍我在过程中对项目的理解 , 主要给大家介绍几点:

  • 为什么想尝试dart服务端?
  • 为什么推荐dart_mars?
  • dart_mars给的思路和启示
  • 不足之处

一、为什么想尝试dart服务端?
本人之前一直在做移动端为主 , 项目集中在android社交和toB的产品 , 虽然研究过以前项目的服务端(php和java甚至.net 均有) , 但是一直对于服务端的系统性学习还停留在大学那会的shh. 此处一直是短板.

后来有一些自己想做的小型app, 受制于服务端的短板 , 我只能选择bmob这种第三方服务器做开发 , 实际效果并不理想 .

20年3月份开始转入flutter开发 , 发现 dart 也是可以作为服务器开发语言的 , 一直也在逛各种论坛 ,却发现这方面的文档少得可怜 , 更不要说开源框架那些 .

直到21年7月份 , 看到了大佬的dart_mars, 瞬间觉得打开了一座宝库的大门~~~~

  • 二、为什么推荐dart_mars?

除了dart统一语言的好处 ,我认为dart_mars:

  1. 本身文档清晰齐全(至少文档框架上是齐全的) ;
  2. 代码质量也很不错 ;
  3. 提供了命令式安装脚手架 , 其中包括了大部分的常用基类 , 代码非常简洁
    在这里插入图片描述
  4. 作者汤大佬不仅技术牛逼 , 人也很风趣友善 ,毫不吝惜为源码解惑 , 他的文风 也是很好玩的:

在这里插入图片描述

  • 三、dart_mars给的思路和启示

上面提到 , dart_mars提供了很好的dart服务端思路 , 主要体现在项目脚手架 、模板脚手架、以及功能划分这几方面

我们先结合源码来看项目脚手架 , 首先看看项目入口
在这里插入图片描述
可以看到在项目入口处 , 提供了 常用的几个命令行 , 分别执行创建项目 , 运行项目 , 编译项目等 (当然这里你也可以很方便的扩展你的方法) , 这里为我们扩展项目命令提供了环境 ;

具体创建或者运行项目的代码 , 都在各自的helper内 ,以创建CreateHelper为例 , 继续看代码

class CreateHelper {static Map fileMap = {/// readme'README.md': '# {package}',这里省略若干脚手架代码/// tests'lib/tests/test_main.dart': '''
void main(){print('you can do some test in here');
}''',};static void run(String package) {var path = Directory.current.path.replaceAll('\\', '/');var project = path + '/' + package;if (!Directory(project).existsSync()) {Directory(project).createSync();} else {print('dir ' +package +' is already exists, please chose other or delete it then try again');return;}fileMap.forEach((filePath, fileContent) {var filePathArr = filePath.split('/');for (var i = 0; i }

创建里面通过 path-content的模式 , 直接生成了模板项目的文件和内容 , 是不是简单粗暴~~
每一个content 就是实际执行出来的代码拉~
例如 Pubspec.dart 的content

class Pubspec {static String content = '''
name: {package}
environment:sdk: &#39;>&#61;2.10.0 <3.0.0&#39;
dependencies:yaml: 3.1.0mysql1: 0.19.2redis: 2.0.0mime: 1.0.0encrypt: 5.0.1
&#39;&#39;&#39;;
}

我们默认生成项目的模板就是template目录下的所有文件拉
在这里插入图片描述

这里已有的模板是汤大佬写的 , 当然我们也可以在这里根据需要修改他的模板content或者生成我们的模板 , 超简单啊 .

我们再来看看生成项目后 , 项目内的控制模板 , 也就是controller-model-service模板 , 先上代码

class TemplateHelper {String packageName;bool forceWrite &#61; false;TemplateHelper({this.packageName, this.forceWrite});void run(List list) {list.forEach((fileInfo) {_createModelFile(fileInfo);_createServiceFile(fileInfo);fileInfo.controllerFileNameList.forEach((controllerFileName) {_createControllerFile(fileInfo, controllerFileName);});});}void _createModelFile(TemplateInfo fileInfo) {创建model,dart}void _createServiceFile(TemplateInfo fileInfo) {创建service,dart}void _createControllerFile(TemplateInfo fileInfo, String controllerFileName) {创建controller,dart}class TemplateInfo {这里省略若干模板代码
}class TemplateContent {这里省略若干内容代码}&#39;&#39;&#39;;static String serviceContent &#61; &#39;&#39;&#39;这里省略若干脚手架代码&#39;&#39;&#39;;static String controllerContent &#61; &#39;&#39;&#39;这里省略若干脚手架代码&#39;&#39;&#39;;
}

调用:

TemplateInfo(tableName: &#39;comment&#39;,keyName: &#39;commentId&#39;,modelFile: &#39;../extend/model/Comment.dart&#39;,serviceFile: &#39;../extend/service/CommentService.dart&#39;,controllerFileNameList: [&#39;../app/open/controller/CommentController.dart&#39;,&#39;../app/user/controller/CommentController.dart&#39;,&#39;../app/admin/controller/CommentController.dart&#39;,],)TemplateHelper helper &#61; TemplateHelper(packageName: &#39;community&#39;);helper.run([TemplateInfo]);

可以看到 , 想要创建modle 和service , controller是非常方便的 , 配置一个文件TemplateInfo即可 , 是不是非常方便~~ PS:这里还可以结合flutter本身的模板几个字母就快速生成上面代码喔

最后我们在看看功能划分
首先dart_mars , 非常简单 , 就是入口文件&#43;helper&#43;模板,
在这里插入图片描述
然后项目下面:
在这里插入图片描述
是不是一目了然非常清晰 .
最后附一下darmars的地址

四、不足之处
1.目前看, 受制于dart生态 , 可能各种第三方插件兼容不会那么好 , 但是作为普通开发者做常用小项目的服务端是完全够用的 .
2. 对服务器的各种压测还是有待研究的 , 另外文档还有些地方没写完 ;
3.大佬项目如果有web管理后台的基础功能 ,就更好拉~

这些都是小问题了 , 相信dart_mars的思路会给大家很好的服务端开发启示~

以上是我研究几天下来对于dart_mars的了解, 我希望基于dart_mars现在的基础 , 花几个月打磨出更适合自己的基础服务器框架 , 以填补自己的服务端短板 , 再往后完善对应的app 和管理后台

希望今年有1个较好的社交demo或者博客demo出来 , 明年有机会尝试研究一下一件生成前后端 , 酷酷酷

最后附地址

源码在此
文档在此


推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • JVM钩子函数的应用场景详解
    本文详细介绍了JVM钩子函数的多种应用场景,包括正常关闭、异常关闭和强制关闭。通过具体示例和代码演示,帮助读者更好地理解和应用这一机制。适合对Java编程和JVM有一定基础的开发者阅读。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https:blog.csdn.netweixin_43171186art ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
author-avatar
城隍山人因
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有