# MIAO-java
**Repository Path**: TheColdVoid/MIAO-java
## Basic Information
- **Project Name**: MIAO-java
- **Description**: Miao Is A web demO generator
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-20
- **Last Updated**: 2021-01-20
## Categories & Tags
**Categories**: code-generator
**Tags**: None
## README
# MIAO
- - -
中文 | EN
## MIAO是什么?
MIAO ( ”Miao Is A web demO generator”的缩写,读音为/mjɑʊ/) 是一个非侵入式的网页演示生成器,能够快捷地将某个函数或者某段代码转化为网页界面,用以临时的演示或者测试,开箱即用而无需复杂的配置过程。
MIAO 并不是一个 Web 框架,其关注点与Web框架有着很大差异,MIAO 主要是用于制作一些临时性的小 Demo 或者小的在线工具,而不是被应用在生产环境中,也不建议被用于正式的项目中。
MIAO 在灵活性与易用性之间作了取舍,主要着眼于提供便捷的,开箱即用的临时网页小 Demo 生成功能,而不提供过多的配置与自定义界面/交互的功能,也不像Web框架那样,提供诸如「权限控制」、「路由」、「模板渲染」、「Session」等功能。
只需三步即可快速创建一个临时小 Demo:
引入库->加注解->启动服务
MIAO目前仅支持 Java 和 Python,后续会加入对其他语言(如Golang,JavaScript,Haskell)的支持,敬请期待。
## 怎么使用?
**本工具尚未全部开发完成,目前仅能使用部分主要功能,其余功能的实现计划详见后文「规划路线图」章节**
(Python 版见:https://github.com/TheColdVoid/MIAO-python )
### Java 版:
**MIAO 仅支持在Java 1.8及以上的版本中运行**
pom.xml(Maven)中加入:
``` xml
cn.voidnet
MIAO
0.0.10
```
或者,您也可以去 Release 中下载 jar 并将其加入您项目的外部库依赖目录中
然后只需引入库,并在想要生成界面的函数(显然,只能是静态函数)上,打上@WebDemo 注解,
``` java
@WebDemo
public static int getRandomNumber(int min, int max) {
return new Random().nextInt(max - min + 1) + min;
}
```
最后在 main 函数(或者其他您想要启动服务的地方)中,启动本工具的服务器端即可
``` java
public static void main(String[] args) {
MIAO.start();
}
```
_( start()函数将在执行时阻塞,因此您需将此行代码放在 main 中您的其他代码的后面,或者开一个新的线程供本工具提供服务。)_
就可以自动生成这样的临时 Demo:

输入参数后,点击「执行」即可执行,并获得返回值:

### 可视化结果
执行结果可以以「表格」的形式进行可视化(后续会增加其他的可视化形式选项,如「图表」「图片」「树」等):
存储返回结果的类:
``` java
class Cat {
String name;
String color;
Integer age;
Integer length;
}
```
为函数加上注解( visualization 为选择可视化形式的注解参数):
``` java
@WebDemo(visualization = VisualizationType.TABLE)
public static List getCatInfo() {
return Arrays.asList(
new Cat("花花", "花", 8, 46),
new Cat("空空", "空", 17, 184),
new Cat("黑黑", "黑", 7, 73)
);
}
```
即可得到这样的「表格」形式的可视化结果:

(需要注意的是,**返回值的类中必须具有要显示的属性 Getter 方法**(可以用 lombok 等工具自动生成,或者手动编写),否则返回结果将无法正确地被序列化)
您也可以返回 List