mo

A collection of OzJS core modules that form a library called "Mo"

  • mo

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
mo
1501.7.38 years ago10 years agoMinified + gzip package size for mo in KB

Readme

Mo
  • A collection of OzJS core modules that form a library called "Mo"

In NodeJS

npm install mo

In browser

bower install mo

Or download directly from Github

AMD and OzJS

Modules Overview

* ES5/6 shim and minimum utilities for language enhancement
* [mo/lang/es5](https://github.com/dexteryy/mo/blob/master/lang/es5.js)
    * Array + String + Object + Function + Date API shims
* [mo/lang/es6](https://github.com/dexteryy/mo/blob/master/lang/es6.js)
    * [mo/lang/es6-utils](https://github.com/dexteryy/mo/blob/master/lang/es6-utils.js)
        * Array + String + Number + Object API shims
    * [mo/lang/es6-collection](https://github.com/dexteryy/mo/blob/master/lang/es6-collection.js)
        * Map + Set + WeakMap + WeakSet shims
    * [mo/lang/es6-promise](https://github.com/dexteryy/mo/blob/master/lang/es6-promise.js)
        * Promise shim
* [mo/lang/type](https://github.com/dexteryy/mo/blob/master/lang/type.js)
* [mo/lang/mix](https://github.com/dexteryy/mo/blob/master/lang/mix.js)
* [mo/lang/oop](https://github.com/dexteryy/mo/blob/master/lang/oop.js)
* [mo/lang/struct](https://github.com/dexteryy/mo/blob/master/lang/struct.js)
* Non-plugin implementation of cross-browser DOM ready event
* Based on OzJS's built-in module -- 'finish'
* Standalone jQuery.browsers supports skin browsers popular in China 
* Simple wrapping for managing cookie 
* A lightweight and enhanced micro-template implementation, and minimum utilities
* [mo/template/string](https://github.com/dexteryy/mo/blob/master/template/string.js): 
* [mo/template/micro](https://github.com/dexteryy/mo/blob/master/template/micro.js): 
* Standalone jQuery.ajax API and enhanced getJSON, and so on
* An easing library supports jquery.js, standalone module and CSS timing functions
* Implement and manage single loop for WebApp life cycle
* Provide tweening API for both property animation and frame animation(canvas or css)
* Wrapping API for keyboard events
* Support key sequence, multiple key press, ...
* Forwarding output of console API

Examples

API and usage

mo/lang

```javascript var = require('mo/lang');
* same as below

#### mo/lang/es5

```javascript 
require('mo/lang/es5');

  • Array.prototype.forEach
  • Array.prototype.map
  • Array.prototype.filter
  • Array.prototype.reduce
  • Array.prototype.reduceRight
  • Array.prototype.some
  • Array.prototype.every
  • Array.prototype.indexOf
  • Array.prototype.lastIndexOf
  • Array.isArray
  • String.prototype.trim
  • Date.now
  • Object.keys
  • Object.create - partial support: Object.create(obj) / Object.create(obj, { method: { value: func } })
  • Object.getPrototypeOf
  • Function.prototype.bind

mo/lang/es6

```javascript require('mo/lang/es6');
* same as `mo/lang/es6-utils` + `mo/lang/es6-collection` + `mo/lang/es6-promise`

#### mo/lang/es6-utils

```javascript 
require('mo/lang/es6-utils');

  • Array.prototype.find
  • Array.prototype.findIndex
  • Array.prototype.fill
  • Array.prototype.copyWithin
  • Array.of
  • Array.from
  • String.prototype.startsWith
  • String.prototype.endsWith
  • String.prototype.contains
  • String.prototype.repeat
  • Number.MAX_SAFE_INTEGER
  • Number.MIN_SAFE_INTEGER
  • Number.EPSILON
  • Number.isFinite
  • Number.isInteger
  • Number.isSafeInteger
  • Number.isNaN
  • Object.is
  • Object.assign

mo/lang/es6-collection

```javascript require('mo/lang/es6-collection');
* `Map.prototype.get`
* `Map.prototype.set`
* `Map.prototype.delete`
* `Map.prototype.clear`
* `Map.prototype.size`
* `Map.prototype.forEach`
* `Map.prototype.has`
* `WeakMap.prototype.get`
* `WeakMap.prototype.set`
* `WeakMap.prototype.delete`
* `WeakMap.prototype.clear`
* `WeakMap.prototype.has`
* `Set.prototype.add`
* `Set.prototype.delete`
* `Set.prototype.clear`
* `Set.prototype.size`
* `Set.prototype.forEach`
* `Set.prototype.has`
* `WeakSet.prototype.add`
* `WeakSet.prototype.delete`
* `WeakSet.prototype.clear`
* `WeakSet.prototype.has`

#### mo/lang/es6-promise

```javascript 
require('mo/lang/es6-promise');

  • new Promise(function(resolve, reject){})
  • Promise.prototype.then(onFulfilled, onRejected)
  • Promise.prototype.catch(onRejected)
  • Promise.resolve(result|thenable)
  • Promise.reject(reason)
  • Promise.all(promises)
  • Promise.race(promises)

mo/lang/type

```javascript var
= require('mo/lang/type');
* `_.type(sth)` -- 
* `_.isFunction(sth)` -- 
* `_.isWindow(sth)` -- 
* `_.isEmptyObject(sth)` -- 
* `_.isArraylike(sth)` -- 
* `_.ns(string, value)` -- 

#### mo/lang/mix

```javascript 
var _ = require('mo/lang/mix');

  • _.mix(origin, obj1, obj2, ..., depth) --
  • _.merge(origin, obj1, obj2, ..., depth) --
  • _.interset(origin, obj1, obj2, ..., depth) --
  • _.copy(origin, depth) --
  • _.occupy(origin, obj, depth) --
  • _.defaults(origin, obj1, obj2, ..., depth) --
  • _.config(cfg, opt, DEFAULT_CFG) --
  • _.unique(list) --
  • _.each(obj, mapfn, context) --

mo/lang/oop

```javascript var = require('mo/lang/oop');
var List =
.construct(Array, /mixes, /function(){
this.superConstructor.apply(this, arguments);
this.a = 1;
});
List.prototype.forEach = function(){
return this.superMethod('forEach', arguments);
};
#### mo/lang/struct

```javascript 
var _ = require('mo/lang/struct');

  • _.index(array, key) --
  • _.fnQueue() --

mo/domready

```javascript require('mo/domready', function(none){
// won't execute until the page's entire DOM has loaded
});
### mo/browsers

```javascript 
var browsers = require('mo/browsers');

  • browsers.browser --
  • browsers.version --
  • browsers.engine --
  • browsers.engineversion --
  • browsers.os --
  • browsers.osversion --
  • browsers.isMobile --
  • browsers.skin --
  • browsers.rank --
  • browsers.ua --
  • browsers['msie'|'safari'|'mobilesafari'|'chrome'|'aosp'|'mozilla'|...] --

mo/cookie

```javascript var cookie = require('mo/cookie');
cookie(name, value, {
domain: 'ozjs.org', // '' as default
path: '/', // '' as default
expires: 365 // day,
secure: ''
});
### mo/template

```javascript 
var tpl = require('mo/template');

  • tpl.str2html(string) --
  • same as below

mo/template/string

```javascript var tpl = require('mo/template/string');
* `tpl.format(string, dict|list)` -- 
* `tpl.escapeHTML(string)` -- 
* `tpl.substr(string, limit, callback)` -- 
* `tpl.strsize(string)` -- 

#### mo/template/micro

```javascript 
var tpl = require('mo/template/micro');

  • tpl.convertTpl(tplName|tplString, dictData, namespace) --
  • tpl.reloadTpl(tplName) --

mo/network

```javascript var net = require('mo/network');
* `net.getScript(url, callback)` -- 
* `net.getStyle(url)` -- 
* `net.getJSON(url, params, callback, options)` -- 
* `net.getRequest(url, params)` -- 
* `net.parseJSON(data)` -- 
* same as below

#### mo/network/ajax

```javascript 
var net = require('mo/network/ajax');

  • net.ajax(options) --
  • net.params(data) --

mo/easing

```javascript var easingLib = require('mo/easing');
* `easingLib.def` -- 
* `easingLib.values` -- 
* `easingLib.functions` -- 

```javascript 
// use it as extension of other library

var $ = require('jquery');
$.easing['jswing'] = $.easing['swing'];
$.extend($.easing, easingLib.functions);

require('mo/mainloop').config({
    easing: easingLib.functions
});

require('choreo').config({
    easing: easingLib
});

mo/mainloop

```javascript var loop = require('mo/mainloop');
* `loop.config(options)` -- 
* `loop.run(optional_stageName)` -- 
* `loop.pause(stageName)` -- 
* `loop.complete(stageName)` -- 
* `loop.remove(stageName)` -- 
* `loop.info(stageName)` -- 
* `loop.isRunning(stageName)` -- 
* `loop.addStage(stageName, optional_canvas)` -- 
* `loop.addRender(stageName, render, optional_canvas)` -- 
* `loop.getRender(renderId)` -- 
* `loop.addTween(stageName, current, end, duration, options)` -- 

### mo/key

```javascript 
var Key = require('mo/key');

  • Key.KEYS_CODE --

```javascript var key = Key(config);
* `key.addHandler(event, keyName, handler)` -- 
* `key.down([keyName, ...], handler)` -- 
* `key.up([keyName, ...], handler)` -- 
* `key.press([keyName, ...], handler)` -- 
* `key.reset()` -- 
* `key.addRule(fn)` -- 
* `key.enable()` -- 
* `key.disable()` -- 
* `key.check()` -- 

### mo/console

```javascript 
var console = require('mo/console');

  • console.config({ output: elm }) --
  • console.enable() --
  • console.disable() --
  • console.run(func) --
  • console.log(sth, sth, ...) --
  • console.info(sth, sth, ...) --
  • console.warn(sth, sth, ...) --
  • console.error(sth, sth, ...) --

Under construction...

More References

See OzJS Project Homepage

Release History

See OzJS Release History

License

Copyright (c) 2010 - 2013 dexteryy
Licensed under the MIT license.