美文网首页
xservice_kit yaml使用

xservice_kit yaml使用

作者: whqfor | 来源:发表于2019-06-25 17:53 被阅读0次

xservice_kit 的功能是管理channel通信,详细介绍之后开篇再讲,接上一篇,这篇主要介绍使用:官方文档 里面有介绍、集成说明、使用文档、原理介绍,如果看完明白了,就没必要往下看你啦。

Xservice的优势:
• 统一标准化配置
• 一份配置三端代码生成,告别重复手写代码工作。
• 消息类型显示指定,方便消息定义和调用,增加类型安全性。
• 方便支持双向一对一,一对多消息代码生成。
• 自定义消息过滤支持,防止自定义类型序列化过程中的异常。

看完是不是很心动呐,安装介绍pub文档即可,里面有详细说明。在使用的过程中 yaml的生成规则,感觉描述的不是很清楚,接下来结合yaml自动生成channel三端代码,介绍一下自己理解的Xservice使用。

Xservice的使用步骤官方文档给出如下:
• 在Flutter工程pubspec.yaml加入xservice_kit依赖: xservice_kit:^0.0.27
• 安装node(代码生成工具使用node开发),然后npm install xservice -g
• 编写配置文件
• 运行xservice命令行生成代码
• 将生成代码移动到项目,然后在程序的开始调用Serviceloader

前两步自行安装即可。

编写配置文件:

先给自己编写的yaml文件

name : TestService

messages:

 -
  name : MessageToFlutter
  returnType : Map 
  messageType : native
  channelType : method
  args : 
   -
    name : url
    type : String
   -
    name : params
    type : Map

 -
  name : MessageToNative
  returnType : Map
  messageType : flutter
  channelType : method
  args : 
   -
    name : params
    type : List

下面针对配置参数介绍下:

name : TestService        // 自定义Service名字

messages:

 -
  name : MessageToFlutter   // NA调用的Flutter方法名
  returnType : Map          // 返回数据类型 
  messageType : native      // 在native侧生成的代码
  channelType : method      // Channel类型
  args : 
   -
    name : MessageToFlutterArg1 // 参数名字
    type : String               // 参数类型  
   -              // - 要缩进对齐,格式有要求
    name : MessageToFlutterArg2 // 参数名字
    type : Map                  // 参数类型 
    
    // 以上有俩参数  一个是字典一个是string 则native侧会创建一个【字典】包装俩参数。
    // 只有一个参数时,type为什么类型,参数即是什么类型,如下:List在Android侧对应的
args : 
   -
    name : MessageToFlutterArg1
    type : List

Type 支持的数据类型如下:

"int":"0",
"double":"0.0",
"bool":"false",
"String":'""',
"List”:"[]"
"Map”:"{}"
运行xservice命令行生成代码

命令如下:

xservice -o flutterService -p channel -t yaml /Users/whqfor/Desktop/ServicesYaml 

/usr/local/lib/node_modules/xservice/index.js这个文件里可以找到生成channel代码的逻辑,这里只做简单解读:

先介绍命令里的参数

.arguments('<directory>')
.option('-o , --output <output>' , 'A directory to save the output')
.option('-t , --type <type>' , 'input file type support json and yaml default is json')
.option('-p , --package <package>' , 'Java package')
.action(function(directory){
    program.directory = directory;
    start(directory);
}).parse(process.argv);

这一段是index.js 里的命令解释,结合自己的使用说明一下,
-o flutterService 定义输出的路径,默认是在用户目录下,命令执行完之后,生成的三端代码会存放在这里。
-p channel主要是给Android小伙伴使用,Android的package 路径里添加的例如:
package channel.TestService.handlers;
目录结构和package是对应的的,如下:

目录结构.png

-t yaml配置文件的类型,推荐yaml格式,也支持json格式
/Users/whqfor/Desktop/ServicesYaml存放yaml文件的地址
执行完生成的结构如下:

文件结构

最后将生成的文件拷贝到项目里即可,iOS的拷贝打开iOS工程,copy if need,Android和dart的代码可以直接拖到项目里。

相关文章

  • xservice_kit yaml使用

    xservice_kit 的功能是管理channel通信,详细介绍之后开篇再讲,接上一篇,这篇主要介绍使用:官方文...

  • azkaban(二):YAML

    前言 使用azkaban必须要先掌握yaml用法 什么是YAML? YAML 是 "YAML Ain't a Ma...

  • robot数据分层

    使用yaml导入变量 使用yaml保存配置文件,然后直接导入,可以获取环境变量 在robot中,引入该yaml文件...

  • Python读写yaml排版混乱还丢失注释?我来告诉你解决办法!

    Python使用Yaml 日常我们在使用Python读写Yaml时,都是使用推荐的Pyyaml模块。安装: pip...

  • k8s的api调用(python)

    脚本使用yaml,注意requests中的auth 2.yaml文件

  • 4、数据驱动测试DDT-使用文件及实践

    如何使用文件进行数据驱动? 1、使用yaml2、使用json3、使用csv test_data.yaml test...

  • YAML 教程

    目录 YAML 的名字? YAML 的特点 YAML 需要注意的 YAML 基本使用后缀名键值对列表注释多文档Pa...

  • yaml数据处理

    yaml的使用 一 、yaml的基础规则 首先了解一下yaml最基础、最常用的语法 大小写敏感 使用缩进代表层级关...

  • YAML语言

    YAML经常被用于编写配置文件。越来越多的工具使用YAML语言作为配置文件语言。YAML格式参考YAML语言语法规...

  • YAML 入门指南

    YAML 入门指南 YAML 简介 我们使用 YAML 是因为它像 XML 或 JSON 是一种利于人们读写的数据...

网友评论

      本文标题:xservice_kit yaml使用

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