cli/lib/demo-js.js

108 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

2023-01-05 17:00:49 +08:00
/**
* {}
* @author yutent<yutent.io@gmail.com>
* @date 2022/10/10 17:00:29
*/
import fs from 'iofs'
export function writeMainJs(file) {
fs.echo(
`
import Five from '@gm5/core'
const app = new Five()
// app.set({
// // 可开启session支持
// session: { enabled: true, type: 'redis' }
//
// // 可开启模板引擎的支持
// views: { enabled: true, dir: './views' }
// })
// 预加载应用, 这一步是必须的, 且需要在listen方法前调用
app.preload('./apps/')
// 中间件示例
// 这里的回调, 如果不用箭头函数的话, this指向app
// app.use((req, res, next) => {
// if (req.method !== 'GET') {
// return res.error('', 401)
// }
// // 这一步很重要, 如果没有执行 next(), 则程序就会在这个回调里终止
// // 不会再往后执行其他的了
// next()
// })
// 安装拓展包, 可以应用中通过 this.context.$$mysql 调用到,
// 在中间件, 或后面的其他拓展包中, 可以直接 this.$$mysql 调用
// app.install({
// name: 'mysql',
// install: function() {
// return new Mysqli(conf)
// }
// })
app.listen(3000)
`,
file
)
}
export function writeModelJs(file) {
fs.echo(
`
// 数据模型|存储交互
export default class Index {
constructor(conn){
// this.db = conn.emit(false, 'test')
}
list(){
// return this.db.table('user').withFields(['id', 'name']).getAll()
}
}
`,
file
)
}
export function writeAppJs(file) {
fs.echo(
`
import Controller from '@gm5/controller'
// import Model from '../models/index.js'
// 所有的应用, 都要继承Controller
// 以获取跟框架交互的能力
export default class Index extends Controller {
// 这个main方法是可选的, 如果有定义, 会自动先调用
// 可以在这里做任何需要预处理的事, 支持async/await
// 若返回 false, 则可以终止程序往下执行
// 这个特性, 可用于权限验证等操作
__main__() {
// this.model = new Model(this.context.$$mysql)
}
async indexAction(){
this.response.end('It works!')
}
}
`,
file
)
}