onemin: 一分钟就可以上手的nodejs框架
一、安装、使用、配置
安装
npm i onemin -g
使用
onemin默认使用0配置,0依赖方式启动
1、创建
index.js
module { app;}
2、启动
本机环境
//开发模式
onemin
//上线模式
onemin online
//指定路径
onemin --app=demo
docker环境
docker run -it -p 9230:9230 -v /$PWD:/app libinzhang/onemin onemin
docker-compose.yml
version: '2'services: one-nginx: image: libinzhang/onemin container_name: onemin restart: always volumes: - "$PWD:/app" ports: - 9230:9230 network_mode: host
3、访问
http://localhost:9230
配置
onemin也支持配置文件的设定,开发者可通过config.js|.json进行项目的配置
开发模式
//config.jsexports = "name": "项目名称" "port": 9230//项目端口
线上模式
//config.online.jsexports = "name": "项目名称" "port": 9230//项目端口
二、应用、路由、业务、事件
应用(app)
onemin采用灵活的文件组织结构来架构应用,每一个js文件都可以成为一个应用,项目启动时文件会被自动读取并挂载到app根下,多个js文件和目录会形成一个树形的调用结构。
*.js
onemin运行时js文件格式如下,提供app根变量
module { app;}
几个特点
- 自动路由:路由以目录结构进行分层,自动补全,无需额外引用和指定。
减少路由的引用维护,增强了模块化的灵活调配性。
目录树
|--index.js
|--user
|--|--index.js
|--|--login.js
|--product
|--|--index.js
|--|--detail.js
路由表
/
/user/
/user/login
/product/
/product/detail
- 调用链:项目下面所有的目录和文件都可被读取并挂载到app根节点树下,进行路径链调用。
减少跨模块引用,增加使用效率
目录树
|--index.js
|--service
|--|--guid.js
|--|--timer.js
|--|--tools
|--|--|--axios.js
|--data
|--|--cmt.json
|--|--api.js
调用链
module { app;}
路由
支持常用路由method:get、post、put、patch、delete,onemin路由通过return进行内容输出。
一些实例
1、get
module { app;}
2、post
module { app;}
3、form:get和post混合模式
ctx.form等于ctx.get+ctx.post的混合值,也可以单独取
module { appform'/' { let data = ctxform; return data; };}
CTX上下文
ctx是每个路由的上下文变量,可以获取和设置请求的相关属于和内容。
- get参数:
ctx.get
- post参数:
ctx.post
- form参数:
ctx.form
- headers:
ctx.headers
- 客户信息:
ctx.ua
- session:
ctx.session
- cookie:
ctx.cookie
- IP:
ctx.ip
- host:
ctx.host
- 域名:
ctx.domain
- url地址:
ctx.url
- referrer:
ctx.referrer
- 状态码:
ctx.status = 200
- 下载文件:
return ctx.file('文件路径')
三、cookie、session
cookie
module { //设置cookie app; //获取cookie app;}
session
module { //设置session app; //获取session app;}
四、数据库、缓存
数据库
1、mongo
module { //读取 app;}
module { appmongo;};
五、模板、前端
module { //模板渲染 app;}
六、静态资源
module { //读取文件 app; //设置资源目录 app;}
七、登录、验证
八、日志、监控、测试
日志
module { //记录日志 app;}
九、插件、工具
插件
onemin的插件和普通应用没有太大的区别,每一个可执行的js文件都可以成为插件,有路由代码即可成为路由插件,直接挂载在app的方法即可成为方法和工具插件,在各类事件点加入运行时处理逻辑即可成为运行时插件。通过发布独立npm,然后通过config进行引用即可使用插件。
工具
1、网络请求:axios
onemin内置axios做为httpClient,可直接通过app.curl或app.axios来调用。
module { app;};
2、定时任务:timer
module { //设置一个定时任务 app; //修改一个定时任务,value部分会进行覆盖和混合 app; //获取一个定时任务 let timer = app; //获取所有定时任务 let timerList = apptimer; //删除一个定时任务 app;};