示例项目服务端使用ThinkJS 3.2.10,通过RESTful API提供服务。
# 创建项目
创建目录lost,在该目录下操作:
执行`thinkjs new [project_name]`来创建项目,如:
~~~
$ thinkjs new server
$ cd server
$ npm install
$ npm start
~~~
执行完成后,控制台下会看到类似下面的日志:
~~~
[2019-04-25 15:21:35.408] [INFO] - Server running at http://127.0.0.1:8360
[2019-04-25 15:21:35.412] [INFO] - ThinkJS version: 3.2.10
[2019-04-25 15:21:35.413] [INFO] - Enviroment: development
[2019-04-25 15:21:35.413] [INFO] - Workers: 8
~~~
打开浏览器访问`http://127.0.0.1:8360/`,如果是在远程机器上创建的项目,需要把 IP 换成对应的地址。
# 创建 RESTful Controller
可以通过`-r`参数来创建 REST Controller。如:
~~~
thinkjs controller event -r
~~~
会创建下面几个文件:
~~~
create : src/controller/rest.js
create : src/controller/event.js
create : src/logic/event.js
~~~
其中`src/controller/event.js`会继承`src/controller/rest.js`类,`rest.js`是 RESTful Controller 的基类,具体的逻辑可以根据项目情况进行修改。
修改rest.js文件的getAction的默认实现,增加分页查询的功能。
```js
async getAction() {
let data;
if (this.id) {
const pk = this.modelInstance.pk;
data = await this.modelInstance.where({ [pk]: this.id }).find();
return this.success(data);
}
const page = this.get(page);
if (page) {
const pageSize = this.get(pageSize) || 10;
data = await this.modelInstance.page(page, pageSize).countSelect();
this.success(data);
} else {
data = await this.modelInstance.select();
return this.success(data);
}
}
```
# 添加自定义路由
RESTful Controller 创建后并不能立即对其访问,需要添加对应的自定义路由,修改路由配置文件`src/config/router.js`,添加如下的配置:
~~~js
module.exports = [
[/\/event(?:\/(\d+))?/, 'event?id=:1', 'rest'],
]
~~~
上面自定义路由的含义为:
* `/\/event(?:\/(\d+))?/`URL 的正则
* `event?id=:1`映射后要解析的路由,:1 表示取正则里的 (\\d+) 的值
* `rest`表示为 REST API
通过自定义路由,将`/event/:id`相关的请求指定为 REST Controller,然后就可以对其访问了。
- 内容介绍
- EcmaScript基础
- 快速入门
- 常量与变量
- 字符串
- 函数的基本概念
- 条件判断
- 数组
- 循环
- while循环
- for循环
- 函数基础
- 对象
- 对象的方法
- 函数
- 变量作用域
- 箭头函数
- 闭包
- 高阶函数
- map/reduce
- filter
- sort
- Promise
- 基本对象
- Arguments 对象
- 剩余参数
- Map和Set
- Json基础
- RegExp
- Date
- async
- callback
- promise基础
- promise-api
- promise链
- async-await
- 项目实践
- 标签系统
- 远程API请求
- 面向对象编程
- 创建对象
- 原型继承
- 项目实践
- Classes
- 构造函数
- extends
- static
- 项目实践
- 模块
- import
- export
- 项目实践
- 第三方扩展库
- immutable
- Vue快速入门
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入门
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 组件注册
- Prop
- 自定义事件
- 插槽
- 混入
- 过滤器
- 项目实践
- 标签编辑
- 移动客户端开发
- uni-app基础
- 快速入门程序
- 单页程序
- 底部Tab导航
- Vue语法基础
- 模版语法
- 计算属性与侦听器
- Class与Style绑定
- 样式与布局
- Box模型
- Flex布局
- 内置指令
- 基本指令
- v-model与表单
- 条件渲染指令
- 列表渲染指令v-for
- 事件与自定义属性
- 生命周期
- 项目实践
- 学生实验
- 贝店商品列表
- 加载更多数据
- 详情页面
- 自定义组件
- 内置组件
- 表单组件
- 技术专题
- 状态管理vuex
- Flyio
- Mockjs
- SCSS
- 条件编译
- 常用功能实现
- 上拉加载更多数据
- 数据加载综合案例
- Teaset UI组件库
- Teaset设计
- Teaset使用基础
- ts-tag
- ts-badge
- ts-button
- ta-banner
- ts-list
- ts-icon
- ts-load-more
- ts-segmented-control
- 代码模版
- 项目实践
- 标签组件
- 失物招领客户端原型
- 发布页面
- 检索页面
- 详情页面
- 服务端开发技术
- 服务端开发环境配置
- Koajs快速入门
- 快速入门
- 常用Koa中间件介绍
- 文件上传
- RestfulApi
- 一个复杂的RESTful例子
- 使用Mockjs生成模拟数据
- Thinkjs快速入门
- MVC模式
- Thinkjs介绍
- 快速入门
- RESTful服务
- RBAC案例
- 关联模型
- 应用开发框架
- 服务端开发
- PC端管理界面开发
- 移动端开发
- 项目实践
- 失物招领项目
- 移动客户端UI设计
- 服务端设计
- 数据库设计
- Event(事件)
- 客户端设计
- 事件列表页面
- 发布页面
- 事件详情页面
- API设计
- image
- event
- 微信公众号开发
- ui设计规范