# emock2-release **Repository Path**: MRLH/emock2-release ## Basic Information - **Project Name**: emock2-release - **Description**: 采用注解方式的mock虚拟服务器,实现了对于增删改查的完全模拟 - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-01-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # emock2-release ## 介绍 使用注解的方式配置mock服务器,实现了服务端增删改查的完全模拟,支持热加载。 ## 安装教程 1. 安装7.0版本以上nodejs。 2. 运行node mock.min.js或双击startServer.bat 3. 打开chrome访问http://localhost:3000/demo/index.html ## 入门 1. 在mock.min.js所在文件夹下新建一个mock文件夹 2. 配置Setup.ini文件 ```ini [EMock] port=3000 path=.\mock ``` 3. 在mock文件夹新建hello.js ```js @Controller class Hello { @GetMapping('/hello') sayHello () { return 'hello world' } } export default Hello ``` 4. 运行node mock.min.js或双击startServer.bat 5. 访问http://localhost:3000/hello,可以看到浏览器输出了 ```html "hello world" ``` ## 使用说明 ### 0. Setup.ini 配置文件: port:服务器监听端口号。 path:mock服务配置路径。 resourcePath:静态资源路径。 context:上下文。 ### 1. mock目录 选择目录(如根目录下的mock文件夹),点击载入按钮即可载入mock配置文件。 每次点击载入按钮相当于重启服务器。 mock目录中存放js文件。 ### 2. 静态资源目录 选择目录,点击载入按钮即可载入静态资源目录。 用于存放网页、图片、样式等静态资源。 ### 3. mock配置文件 本项目采用java spring的思想,使用依赖注入的方式来获取使用资源。 使用ES6尚未正式实行的装饰器(decorator)语法(以下简称注解)来应用依赖注入。 #### 3.1 模块管理 以配置的mock服务路径为根目录 导入: ```js import xxx from 'path' ``` 导出: ```js export default xxx ``` 由于模块方式是手动实现的,所以目前对于其他的导入导出的方式不是很兼容(TODO) #### 3.2 类注解 1. Component 声明这个类是一个组件,将被mock识别,并实例化为一个单例,将被注入到要被使用的地方。 ```js @Component class XXX { } ``` 2. Service 继承Component,效果同Component,目前可以看成是Component的一个别名 ```js @Service class XXX {} ``` 3. Controller 继承Component,额外把这个类定义成服务器路由配置文件,配置网络请求。 ```js @Controller class XXX {} ``` 4. RequestMapping 继承Controller,多了一个参数配置,用于统一配置路由的上下文。 ```js @RequestMapping('/xxx') class XXX {} ``` ### 3.3 属性注解 1. Resource > 只有在被标记为Component的类中使用才有效果。 向被标记的属性上注入对应资源的单例实例。属性名为首字母小写的驼峰式命名, 与其对应实例的类名相同(类名当然是首字母大写的驼峰式命名啦)。 ```js @Controller class XXX { @Resource resource } ``` 2. Ignore > 在类中使用 在类的实例转json时无视该属性。 ```js class XXX { @Ignore ignore } ``` 3. Value > 在类中使用 用于get方法,在类的实例转json时也转换该属性。 ```js class XXX { @Value get value () { } } ``` ### 3.4 方法注解 1. 生命周期(只在组件中有效) 1.1 Created 在组件实例化后,属性注入前执行该方法 ```js @Component class XXX { @Created created () { } } ``` 1.2 Mounted 在组件实例化后,属性注入后执行该方法 ```js @Component class XXX { @Mounted mounted () { } } ``` 2. 路由注解(只在Controller中有效) 被路由注解标记的方法,第一个参数将为前端传过来的参数对象,第二个参数为koa的ctx。 2.1 GetMapping 配置路由路径,将被识别为一个get请求 ```js @Controller class HelloController { @GetMapping('/get') get () { return 'hello world' } } ``` 2.2 PostMapping 配置路由路径,将被识别为一个post请求 ```js @Controller class HelloController { @PostMapping('/post') post () { return 'hello world' } } ``` 3. Return 仅能用于组件,用于改写函数的返回值,该注解有一个参数,参数的值为包路径(采用java包路径写法), 函数的返回值即为包路径所指向的js导出的值。 ```js @Component class HelloController { @Return('data.xxx') test () {} } ```