• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Buried in cloud files? We can help with Spring cleaning!

    Whether you use Dropbox, Drive, G-Suite, OneDrive, Gmail, Slack, Notion, or all of the above, Dokkio will organize your files for you. Try Dokkio (from the makers of PBworks) for free today.

  • Dokkio (from the makers of PBworks) was #2 on Product Hunt! Check out what people are saying by clicking here.

View
 

Runtime-Introduction

This version was saved 12 years, 7 months ago View current version     Page history
Saved by Charles Jolley
on October 20, 2009 at 5:14:36 pm
 

The SproutCore Runtime framework provides the basic tools you need to write large-scale applications in JavaScript.  This framework will form the fabric of your application.  You will use it to define your classes, connect them together, to benchmark and test your results as well. 

 

In addition, Runtime is can be used as a free-standing library.  You can down a built version of it and use it to create dynamic web pages when you don't want to use the full blow SproutCore application stack.

 

This programming guide will tell you everything you need to know about using the Runtime framework in your application including how to create objects, setup bindings, add observers, defer execution of code, work with sets, index sets and more.

 

Who Should Read This Guide

 

You should read this guide first if you are planning to work with any of the other frameworks in the SproutCore application stack.  This includes building desktop apps, mobile apps, or using SproutCore mini on regular web pages.

 

Outline

 

  1. Framework Overview
    1. What the framework covers
      1. Enumerables, Arrays, and Sets
      2. Property Observing
      3. RunLoops
      4. Bindings
      5. SC.Object
  2. SC.Object
    1. How to be semi-classy 
    2. Creating Objects
    3. Creating Subclasses
    4. Checking the kind of a class or instance
  3. Copying, Freezing, and Comparing
    1. SC.Copyable
    2. SC.Freezable
    3. SC.Comparable
  4. Key Value Coding (KVC)
    1. Automatic Accessors - get()/set(), getPath()/setPath()
    2.  
    3. Computed properties
      1. With dependencies
      2. Cacheable
    4. Unknown properties
    5. Property Helpers - incrementProperty, decrementProperty, etc
  5. Key Value Observing (KVO)
    1. What is property observing?
    2. Adding an observer
      1. Using the observer() helper
    3. Removing an observer
    4. notifying property changes
      1. notifyPropertyChange()
      2. allPropertiesDidChange()
    5. Performance Enhancements
      1. Deferring notifications
      2. Using hasObserverFor()
    6. Debugging Observing
      1. addProbe()
      2. observersFor()
      3. logProperty()
  6. Bindings
    1. What is a binding?
    2. How to configure a binding
    3. Binding Options
      1. oneWay()
      2. bool()
      3. single()
      4. multiple()
      5. notEmpty()
      6. noError()
    4. Writing custom transforms
  7. Enumerables, Arrays, and Sets
    1. Using SC.Enumerable
      1. What are enumerables?
    2. Using SC.Array
      1. Why another array interface?
      2. using Sc.Array with regular arrays
      3. Creating your own SC.Array
    3. Sets
      1. SC.Set
      2. SC.IndexSet
      3. SC.SelectionSet
    4. SparseArrays
      1. What is a sparse array?
      2. When to use sparse arrays
      3. Implementing a sparse array delegate
    5. Reducers
      1. what is a reducer
      2. Using a built-in reducer
      3. Writing your own reducer
  8. Run Loops
    1. The joy of deferred execution
    2. invokeLater()
    3. invokeOnce()
    4. Timers (A Preview)
  9. Errors
    1. About SC.Error
    2. Creating SC.Error objects
    3. Building your own SC.Error object
  10. Odds and Ends
    1. mixin(), copy(), merge() and beget()
    2. Guids and Hashes
    3. Evaluating Property Paths
    4. Checking Types
    5. Comparing Objects
    6. Checking Equality
    7. Testing for empty() or none()

Comments (0)

You don't have permission to comment on this page.