Jetbrains 全家桶,包括 android studio, 支持一个东西叫 Live Template

这个东西可以预先储存一个模板, 帮助我们快速开发, 这个功能很多朋友应该都知道,也在用

本篇使用dart作为主要示例语言, dart 语言语法比较简单, 有 java/js 等常用语言基础的都应该能看懂

简单使用

虽然想要重点介绍 groovyScript 的脚本使用, 但是也应该简单介绍下 Live Template

比如我可以存一个 stful, 然后会自动生成一段代码, 当然这个模板是 flutter 开发自带的

img img

进阶

自己搞一个小模板

这个模板就生成一个我们自己的类库调用, 比如我自己封装了一个 http 访问

final response = await HttpHelper.fetchString(url);

以这段代码为例, 我们一个小 app 可能有 100 个接口, 这时候 LiveTemplate 就派上用场了

img

img

我这里为了图省事, 直接指定只要是 dart 语言都生效 img

指定变量

使用两个$符号把变量包起来, 就可以指定变量名称 $1$

相同的变量会被同时编辑

img

变量名是自己定义的

表达式后面会说

默认值, 只有在没有表达式的时候才有用

是否跳过是说, 如果设置了表达式或者默认值就不再需要手动输入了, 适用于你确定表达式没错的情况

表达式(函数)

Jetbrains 有一个页面来讲预置的表达式和对应的说明

https://www.jetbrains.com/help/idea/2019.2/edit-template-variables-dialog.html#predefined_functions

包括一些常见的功能

  • clipboard(): 剪切板
  • camelCase(String): 驼峰
  • capitalize(String): 首字母大写
  • className(): 类名
  • date(sDate): 日期
  • fileName(): 文件名
  • fileNameWithoutExtension(): 无扩展文件名
  • groovyScript(“groovy code”, arg1) :执行 groovy 脚本

比如我可以组合使用一些功能以达到快速输入类名的功能

比如我的 dart 文件名为 test_page.dart 我使用如下的函数 capitalize(camelCase(fileNameWithoutExtension()))

img

会自动根据文件名生成一个符合 dart 规范的大写驼峰类名

groovy 脚本的使用

前面讲了一些基础, 这一节来说说 groovy 脚本

groovy 是一个 Apache 的语言, 可以编译成 java class,也可以直接运行

开发 android 时绕不开的 gradle 就是 groovy 语法

官网: http://www.groovy-lang.org/

安装

其他环境看情况自己下载

Mac 可以用这个: $ brew install groovy

基本语法

就不讲了

用 idea 打开,然后看提示 😁

编写一个基本的脚本

根据 Jetbrains 的说明, 需要 return 一个字符串

我脚本内容如下:

def a = 'I come from groovy';
return a

在 groovy 中,单引号和双引号基本同义, 建议代码中使用单引号, 因为这样复制到 idea 里不用转义, 当然如果你用了字符串插值的方式另当别论, groovy 中字符串插值只可以用双引号, 这一点和 shell 很类似

在 live template 中使用 groovy

groovyScript("def a = 'I come from groovy';return a")

把这个丑陋的东西复制到表达式框里, 就是把 groovy 脚本的内容放在一个字符串里, 然后作为 groovyScript 的第一参数

img

嗯 成功了

groovyScript 的简单讲解

类似于 java 或其他语言的不定参数

groovyScript 函数支持参数传递

在 groovy 脚本的内容中, _1,是第一个参数, _2, _3依此类推, 据说支持到_n,也就是无限多

例子: groovyScript("return _1",fileNameWithoutExtension()) 直接把无扩展名的文件名作为值返回.

后记

基本的东西就到这了, 抛砖引玉, groovy 可以做的东西很多, 毕竟是一门语言

以上