shyjs

3.0.2 • Public • Published

shyjs 使用文档

  • 安装
npm install shyjs@2.0.1 --save
  • 目前是第二版本 与第一版相比控制器参数第一个由 请求响应操作对象 => 请求的url参数解析 第二参数为调用beforeNext 回调函数参数
  • 原先的 请求响应操作对象< vector > 绑定到了原型 this 上

配置项(Config)

const shy = require('shyjs')
shy.deploy({
  logDir: './', //日志保存目录
  static: './public', //静态资源目录
  cacheLog:8,//日志缓存数目
  mysql: {
    //mysql配置
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'user',
  },
  header:{} //自定义所有请求头
  redis: {}, //redis配置
  session: {
    //session配置
    cookieKey: 'sig_id', //保存session id的键名
    maxAge: 1000 * 60 * 60 * 24, //session 存活时间
    path: '/', //cookie生效路径
    secure: true,
    httpOnly: true,
    store: {
      //session的保存方法 默认保存在内存中
      set() {
        console.log('set')
      },
      get() {
        console.log('get')
      },
      expire() {
        console.log('expire')
      },
    },
  },
})

路由规则(Route)

shyjs 支持 get post delete put 方法 每条请求根据请求路径和方法唯一对应一个控制器入口函数,并且完成调用,将返回值为响应内容返回客户端。

  • 参数说明
    url contoller
    string function
    - 必须是 shy.Controller 对象内的方法
shy.Controller = {
  say() {
    return 'holle!'
  },
}
shy.Route.get('/say', shy.Controller.say) //浏览器输出 holle!

控制器(Controller)

  • 控制器必须是一个对象
  • 建议 Cotroller 使用标准写法:
 class C {
    constructor() {

    }
    say(query) {
        console.log(query)
        return 'holle!'
    }
} }
shy.Controller = new C()
shy.Route.get('/say', shy.Controller.say)

每一个控制器方法的第一个参数为请求的url解析 < object >

例:url=/login?name=zhangsan 为 {name:'zhangsan'}

在控制器原型上绑定 请求和响应对象的摘要

  • this 列表
    key
    res 原始res对象
    req 原始req对象
    query url参数解析
    data post数据对象 如果是文件则为buffer
    parseUrl url路径解析 包括主机名 扩展名等
    headers 请求头
    cookie 请求的cookie列表对象
    session 见session说明
    setCookie 见cookie说明
    saveAsFile 将buffer保存为文件(<string :path>,<buffer>)

cookie

开发者可以通过 vector.setCookie(<string :key>,<string :value>,[options])

  • options说明

    key
    maxAge cookie存活时间
    expires cookie过期时间
    path cookie 生效路径
    httpOnly -
    secure -

session

有关于session的配置 已经写在前面 有关vector.session 的解释

   session: {
      // 此处的set 和 get在config.session.store 
      //使用config.session.store中配置set get方法 否则为默认方法 
    set: [Function: set], 
    get: [Function: get], 
    del: [Function: del], 
    sig_id: //客户端存活的cookie 即session id ,
    value: // 通过sesion id拿到的key 即get(sig_id)返回的结果
  } 
//例 设置session
this.session.set('name','zhangsan')
//获取
this.session.value
// 删除session
this.session.del()

另外,在config 配置中 session.store 必须包含 set get expire 方法 如果使用redis 则可以

config.session.store=new shy.Plug('redis')
shy.deploy(config)

日志(Log)

默认情况下shyjs不保存错误日志,当存在config.logDir 则日志记录规则为当发生错误信息(在执行控制器时候)将请求的路径、日期、堆栈报错信息保存到缓存区,并且记录到日志目录下的文件中。

插件(Plug)

支持mysql、redis、art-template插件 例如mysql art-template redis 插件使用如下

class C extends shy.Plug {
    constructor() {
        super(['mysql', 'redis', 'art-template'])
    }
    async say(vector) {
        console.log(await this.mysql.select('info', { name: 'jack' }))
        console.log(await this.mysql.update('info', { name: 'jack' }, { password: 9 }))
        console.log(await this.mysql.insert('info', {name:'marry', goods:2, mail:'marry@qq.com'}))
        console.log(await this.mysql.delete('info', { name: 'marry' }))
        this.redis.set('am','dog')
        this.redis.get('am')
        this.redis.expire(1000*60) //保存六十秒 
        //art-template
       return  this.art.template('./public/say.html',{name:'marry'}).toString()   
    }
}
shy.Controller = new C()
shy.Route.get('/say', shy.Controller.say)
  • beforeNext钩子 在进入controller之前 如果存在shy.beforeNext 则先执行beforeNext :(<object :vector>,callback) callback参数作为控制器的第二个参数。 !!!如果使用beforeNext 必须调用callback

开发者模式

  • 模式 node index.js --dev:浏览器同步输出报错信息保存在message字段中 格式为html

Package Sidebar

Install

npm i shyjs

Weekly Downloads

0

Version

3.0.2

License

ISC

Unpacked Size

34.6 kB

Total Files

19

Last publish

Collaborators

  • willom