Git Product home page Git Product logo

deftjs's Introduction

Deft JS

Build Status Stories in Ready

Essential extensions for large-scale web and mobile application development with Ext JS and Sencha Touch.

About

Deft JS enhances Ext JS and Sencha Touch's APIs with additional building blocks that enable large development teams to rapidly build enterprise scale applications, leveraging best practices and proven patterns discovered by top RIA developers at some of the best consulting firms in the industry.

Goals

  • Flexibility
    • Coordinates dynamic assembly of object dependencies based on a configurable IoC container.
  • Approachability
    • Builds on familiar Ext JS API syntax conventions for 'pay-as-you-go' complexity.
  • Simplicity
    • Eliminates boilerplate code in favor of the simplest expression of developer intent.
  • Testability
    • Promotes loose coupling through class annotation driven dependency injection.
  • Extensibility
    • Leverages the advanced class system provided by Ext JS and Sencha Touch.
  • Reusability
    • Enables business layer code reuse between Ext JS and Sencha Touch applications.

Features

IoC Container

  • Provides class annotation-driven dependency injection.
  • Maps dependencies by user-defined identifiers.
  • Resolves dependencies by class instance, factory function or value.
  • Supports singleton and prototype resolution of class instance and factory function dependencies.
  • Offers eager and lazy instantiation of dependencies.
  • Injects dependencies into Ext JS class configs and properties before the class constructor is executed.

MVC with ViewControllers

  • Provides class annotation-driven association between a given view and its ViewController.
  • Clarifies the role of the controller - i.e. controlling a view and delegating work to injected business services (service classes, Stores, etc.). (Martin Fowler's description of a Passive View using a controller.)
  • Supports multiple independent instances of a given view, each with their own ViewController instance.
  • Reduces memory usage by automatically creating and destroying view controllers in tandem with their associated views.
  • Supports concise configuration for referencing view components and registering event listeners with view controller methods.
  • Integrates with the view destruction lifecycle to allow the view controller to potentially cancel removal and destruction.
  • Simplifies clean-up by automatically removing view and view component references and event listeners.

Promises and Deferreds

  • Provides an elegant way to represent a ëfuture valueí resulting from an asynchronous operation.
  • Offers a consistent, readable API for registering success, failure, cancellation or progress callbacks.
  • Allows chaining of transformation and processing of future values.
  • Simplifies processing of a set of future values via utility functions including all(), any(), map() and reduce().
  • Implements the Promises/A+ specification and passes the Promises/A+ Compliance Test Suite.

Documentation Wiki

Full documentation on the features and usage of Deft JS is available in the Wiki.

API Docs

The latest API documentation for Deft JS is available at http://docs.deftjs.org/deft-js/latest/. If you're interested in API docs for a specific version, you can substitue the version in the URL (e.g. http://docs.deftjs.org/deft-js/0-8-0/)

Help

The best place to ask for help is on the Deft JS Google Group.

Version History

  • 0.9.0 - Promises and Deferreds rewritten to be Promises/A+ compliant, migrated from Jasmine to Mocha.
  • 0.8.0 - Moved from mixins to class preprocessors. Added: Promises API, ViewController Observer feature, Deft.Application class, hundreds of Jasmine tests, improved logging, JSDuck documentation, and numerous other improvements.
  • 0.6.7 - Controllable now automatically adds a getController() accessor to view. Fixes reported issue with Deferreds completed with 'undefined' values.
  • 0.6.6 - Fixes to improve error handling and reporting; especially those associated with nonexistent classes and classes that were not Ext.require()-ed.
  • 0.6.5 - Enhanced IoC container to support classes defined as singletons using the Sencha class system.
  • 0.6.4 - Hotfix for Sencha Touch Logger issue.
  • 0.6.3 - Added memoization feature. Fixed reported Sencha Touch issues.
  • 0.6.2 - Added support for View Controller event listener options. Ext JS 4.1rc3 compatibility fixes.
  • 0.6.1 - Sencha Touch compatibility fixes.
  • 0.6.0 - Introducing View Controller and Controllable. Preview release of Deferred and Promise.
  • 0.1.1 - Preview release, added Jasmine test suite.
  • 0.1.0 - Preview release, introducing an IoC container for dependency injection.

Roadmap

  • Promise and Deferred documentation (in progress)
  • Forums (in progress)
  • JSDuck-compliant comments and Sencha-style documentation browser.
  • Website
  • FAQ
  • Example Ext JS and Sencha Touch applications
  • Navigation - support for hierarchical views, route-aware
  • AOP with an Ext JS-style API (i.e. JSON style configuration)
  • Occasionally-Connected Store (simplifing online / offline capabilities)

Development Team

Acknowledgements

deftjs's People

Contributors

bmoeskau avatar brian428 avatar dmurat avatar homeyer avatar joshnesbitt avatar superstructor avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.