1.2.2 • Published 6 years ago

jm-sdk-core v1.2.2

Weekly downloads
1
License
MIT
Repository
github
Last release
6 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

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.12

7 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago