What's New in Infusion 2.0

What's New in Infusion 2.0

 

Pirate Pad

 

Community Meeting: What's New in Infusion 2.0?

  • Removal of lots of old features

  • Manual lifecycle points finalInit, postInit, etc.

  • Obsolete syntax for arguments, options, etc.

  • Removal of "autoInit"

  • Removal of the old model component hierarchy and "old ChangeApplier" implementation

  • Context Awareness - and things it relies on:

  • Global instantiator

  • Every Infusion component, regardless of how it is instantiated, ends up in a single-rooted tree of components

  • This enables use of modern IoC features such as model relay and declarative event binding

  • Enables use of the root distributeOptions context "/"

  • This also enables the removal of "demands blocks"

  • Useful debugging tip: Watch "fluid.globalInstantiator" in your JS debugging tools to see the structure of your application and its tree.

  • Much faster invokers and boiled listeners (c. 60x faster)

  • Removal of the old "fast/dynamic" invoker distinction

  • View oriented IoC debugging tools

  • FluidViewDebugging.js - include this at the head of your HTML file to get access to the "IoC inspector"

Questions:

  • When to use context awareness vs some other framework features.

  • Hiearchy of adaptation - 

  • Simplest: Simply send extra constructor arguments to the component when it is made - either as function arguments or subcomponent arguments

  • Middling: Use a distributeOptions block to target the component from elsewhere

  • Most heavyweight: Make it "contextAware" and so respond to distributions from multiple sources in an organised and arbitrated way

  • In relatively straightforward cases, you can just write plain options distributions

  • Perhaps in conjunction with the so-called "file inclusion polymorphism"

  • That is, that the person who is aware of the contextual requirement can arrange to include different .js files into the system in order to represent that fact

  • Then there is no need for contextAwareness "adaptation" broadcasting components since you can simply write the distributeOptions directives in the files which are conditionally included

  • How to add context awareness to a component that didn't previously support it. E.g. for testing purposes. (maybe i want to swap the TTS component for the mock in the test).

  • Simply add the "fluid.contextAware" grade to its grade list

  • Is there a reason for "grades at the right-hand end of the gradeNames list now take priority over those at the left".

  • It is simple common sense :)

  • Do model listeners support namespaces? such as having a "namespace" option at defining a model listener?