Skip to content

Latest commit

 

History

History
117 lines (94 loc) · 5.86 KB

README.md

File metadata and controls

117 lines (94 loc) · 5.86 KB

YASMF-Next v0.5 - Yet Another Simple Mobile Framework

YASMF-Next, or Yet Another Simple Mobile Framework (Next Generation), provides a simple, lightweight framework for mobile applications, especially those based on webkit browsers.

Why?

Many of the frameworks that support mobile development are large and bulky, and several tend to have poor performance on actual mobile devices. The goal of YASMF-Next is to be simple and limited in scope while also being performant on mobile devices.

YASMF-Next (v0.5) is based loosely on iSiteMobile and the previous version (0.2 and 0.3) of YASMF and also integrates some ideas from the native iOS SDK, especially with regards to view hierarchy and management. YASMF-Next provides a simple localization library, promise-wrapped file management, and simple view management, and base styles to simplify creating HTML-based widgets that look and feel reasonably native.

Note: YASMF is at version 0.5 and is under heavy development. This means that the underlying API is subject to change at any time.

YASMF v0.2 has been used in production-level applications, and so is useable in your own application development. v0.5 is more than a little fresh, so take care. There may just be dragons about.

Also note: v0.4 (available in the 0.4 branch) is STABLE and will not change.

Platform Support

  • Android: Android 4.x and higher. Works on phone and tablets.
  • iOS: iOS 6.x and higher. Works on iPhone, iPod, and iPad.
  • Webkit: Chrome, Safari, etc.

Note: Requires Cordova / PhoneGap 3.0 or higher or Chrome 31+ if the FileManager is used.

Documentation

Documentation can be found in several locations:

Features

  • AMD support
  • Relatively small code base (easy to grok)
  • Performant on mobile devices
  • Uses CSS transforms and animations where possible
  • Classical Object Inheritance
  • KVO-like Observable Properties
  • Notifications and Listeners
  • Useful utility modules:
    • Date/Time handling
    • File name handling
    • HTML5 File API wrapped with Promises (using Q)
    • Device sniffing / handling
    • Localization (formatting by jQuery/Globalize)
    • DOM convenience methods
  • User Interface:
    • Simple View Containers
    • Navigation Controllers (push/pop)
    • Split View Controllers (normal split, off-canvas view, split-overlay)
    • Navigation bars
    • Tool Bars
    • Tinted Glyphs
    • Bar Buttons
    • Scroll containers

Plans

  • 0.5
    • Routers
    • MVC base objects
    • Object categories
    • Automatic Notification Handler Hookup
    • Additional widgets
  • Future
    • Table view w/ infinite scrolling and cell re-use
    • Data binding
    • Enhanced templating

History

  • 0.5 (TBD)
    • Added on, off as synonyms for addListenerForNotification and removeListenerForNotification
    • on and off can be chained.
    • on and off can be supplied a list of handlers in an object.
    • Added emit, emitToLast as synonyms for notify and notifyMostRecent
    • Notification handlers are now bound to self, and additional arguments are now applied
    • Wildcard notification handlers are now supported: * receives all notifications, *Changed receivesvalueChanged but not changedThat, view* receives viewWillAppear, and ns:*Changed receivesns:valueChanged. The handler is called with self, notification, and any arguments sent.
    • Errors are now logged to the console if a notification generates an uncaught exception.
    • Notifications can now be listed for even if they aren't registered. By default these are synchronous transactions. (Pass true to the third parameter if you need async).
    • Added h, the simple templating engine under yasmf.h. h supports data binding objects based on BaseObject.
    • Added promote to BaseObject -- takes normal objects and returns a promoted BaseObject (useful for binding)
    • Formatting, missing semicolons, that jazz. Added eslint and jscs preference files.
    • Added serve.sh (assumes http-server is installed)
    • Added yasmf.Router for simple app-wide router handling (hashtag & history API based)
    • Added self.$super, self.$class, and self.$superclass for easy inheritance method calling. Can call self.$super(args...) in methods overridden using self.override.
    • Added data binding
  • 0.4 (May 2014)
    • First release of YASMF-Next
  • 0.3 (Nov 2013)
    • Refactor attempt of YASMF (aborted in order to start over from scratch)
  • 0.2 (Aug 2012)
    • Initial release of YASMF
  • 0.1 (May 2011)
    • iSiteMobile release

License

YASMF-Util is MIT licensed.

Copyright (c) 2013, 2014 Kerri Shotts, photoKandy Studios LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.