1.2.2 • Published 7 years ago

jm-sdk-core v1.2.2

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

theme : "white"

sdk


用法

const Sdk = require('jm-sdk')

let sdk = new Sdk({
  api: 'http://api.test.jamma.cn',
  modules: {
    sso: {},
    passport: {},
    login: {}
  }
})

模块化

let mdl = function (opts) {
  let app = this
  this.bind('test')
  let $ = app.test

  return {
    name: 'test',
    unuse: () => {
      delete app.test
    }
  }
}

sdk.use(mdl, {})

store

  • 用于全局变量存储

  • 非持久存储,刷新页面时,所有数据清空

let store = sdk.store

store.state = {name: 'jeff'}
store.state // {name: 'jeff'}

store.sso = {token: 'test'}
store.state // {name: 'jeff', sso: {token: 'test'}}

--

store 事件

  • 先调用listen监听指定key的事件

  • listen('key')

  • listen('key1', 'key2' ...)

  • 支持 set, get 2 种事件

let store = sdk.store

// 监听
store.listen('name')

// 支持事件
store
    .on('get', (key, value) => {
      console.log('get', key, value)
    })
    .on('set', (key, value) => {
      console.log('set', key, value)
    })

storage

  • 浏览器持久化存储 localStorage
let storage = sdk.storage

// 例子
storage.setJson('sso', {token: '12345676'})
storage.getJson('sso') // 返回json对象
storage.setItem('nick', 'jeff')
storage.getItem('nick') //返回 nick
storage.removeItem('nick') // 删除

--

storage 事件

  • 支持 setItem, getItem, setJson, getJson, removeItem 5 种事件
let storage = sdk.storage // 浏览器持久化存储 localStorage

storage
    .on('getItem', (key, value) => {
      console.log('getItem', key, value)
    })
    .on('setItem', (key, value) => {
      console.log('setItem', key, value)
    })
    .on('removeItem', (key) => {
      console.log('removeItem', key)
    })

request 请求

  • 所有请求返回Promise对象
  • 如果store.sso存在, 所有请求headers中附加Authorization, 用于自动验证。
  • 例如:sso 值为 {token: '123'}, 则请求的 headers:{ Authorization: '123', ...}

--

request 例子

// 实际请求地址为 ${config.api}/sso/verify?token=123
sdk.request({
    uri: '/sso/verify?token=123',
    type: 'get'
})

// 实际请求地址为 ${config.api}/passport/login?token=123
sdk.request({
    uri: '/passport/login',
    type: 'post',
    data:{
        username: 'root',
        password: '123'
    }
})

--

request 简单写法

  • 支持 get, post, put, delete

  • 上述request可以简写为

sdk.get('/sso/verify?token=123')

sdk.post('/passport/login',
    {
        username: 'root',
        password: '123'
    }
)

request 错误拦截

  • sdk.on('error')
sdk.on('error', (e, opts)=>{
  console.log(e) // 纸打印错误,不拦截结果
})

sdk.on('error', (e, opts)=>{
  console.log(e)
  return e.data || null // 拦截错误,并给出新的返回值
})

uri 绑定

sdk.bind('sso')
    .bind('passport')

sdk.sso.get('/verify?token=123')

sdk.passport.post('/login',
    {
        username: 'root',
        password: '123'
    }
)

事件支持

sdk.on('test', function(event){console.log(event)}) // 监听事件
sdk.once('test', function(event){console.log(event)}) // 只监听一次
sdk.emit('test', 1234) // 产生事件
sdk.off('test') // 停止监听

// uri 绑定后也支持事件
sdk.sso.on('test')
sdk.sso.emit('test')

log

config.logLevel: error, warn, info, debug

sdk.logger.level = config.logLevel

sdk.logger.debug('日志')

login

sdk.login = async function () {
  let doc = await this.passport.login('root', '123')
  return doc
}

--

checkLogin

await sdk.checkLogin()

--

logout

sdk.logout()
1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago