Package Exports
- tobox
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tobox) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
#Start
npm i tobox --save#Netowrk for netowrk.ts
import * as tobox from "tobox";
class Network extends tobox.Network {
protected method:'POST'|'GET' = 'POST'//config http method
protected get headers() { //config http headers
const header: any = {}
if (session.isLogin) {
header.token = session.token
}
return header
}
protected url(path: string) {//config url
return "http://www.yourdom.com/xx/" + path
}
protected resolve(json: any) {//resolve response data
console.log(json);
if (!json.code) {
throw new Error('服务异常')
}
if (json.code === Code.ok) {
return json.data || null
}
if (json.code === Code.authFailed) {
service.logout()
}
throw new Error(json.message || '系统错误')
}
}
export const net = new Network()
for user.ts
import { net } from './network';
net.objtask(User, 'user/info', {id:'userid'})
.then(user => {
console.log(user)
})
.catch(e=>{
console.log(e)
})#Socket for socket.ts
import {Socket} from "tobox";
class Client extends Socket.Client {
private observers: Set<{ (msg: any): void }> = new Set()
protected pingInterval: number = 30//config heartbeat interval
get url(): string {
return "wss://" + env.host + "/socket/ws/customer?token=" + 'yourtoken'
}
get isDebug() {
return env.isDebug
}
onError(e){
}
onClose(e){
//TODO: your logic
}
onOpened(e){
//TODO: your logic
}
onFailed(e){
}
onMessage(e){
//TODO: your logic
this.observers.forEach(ele=>ele.onMessage(e))
}
}for example.ts
class App extends React.Component{
public componentDidMount(){
socket.start()
}
public onMessage(json: any, isOffline: boolean){
console.log(json)
}
}#storage the storage apis is an simple orm implements by localstorage. for model.ts
@orm.store('Asset', 'account')
export class Asset{
public readonly account: string
public readonly balance:number
constructor(json?: any) {
if (!json) {
return
}
this.balance = json.balance || 0
}
}
@orm.store('User', 'account')
export class User {
public readonly account: string
public readonly nickname: string
public readonly avatar: string
public readonly phone: string
public readonly area: string
@storage.field(Asset)
public readonly asset: Asset
constructor(json?: any) {
if (!json) {
return
}
Object.assign(this, json)
this.asset = new Asset(json.asset)
}
}for other.ts
net.objtask(User, 'user/info', {account:'account'})
.then(user => {
storage.save(user)
})
.catch(e=>{
console.log(e)
})
const user = storage.find(User,'32132')
console.log(user)
const count = storage.count(User)
console.log(count)
const users = storage.all(User)
console.log(users)