<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/" 
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
	xmlns:admin="http://webns.net/mvcb/" 
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/" 
	xmlns:atom="http://www.w3.org/2005/Atom">
	
	<channel>
	
		<title>Deft JS: Loosely Coupled MVC through Dependency Injection</title>
		<link>http://www.sencha.com/blog/deftjs-loosely-coupled-mvc-through-dependency-injection</link>
		<description>That application you just deployed? As experienced software developers, we all know it won’t be long before you’re going to need make to significant UI changes. Regardless of the amount of painstaking forethought, consensus gathering and planning backing it, no software design ever survives first contact with its users unscathed. To deliver truly effective software, we have to be prepared to adapt to an evolving understating of our users’ needs.</description>
		<dc:language>en-us</dc:language>
		<dc:creator>marketing@sencha.com</dc:creator>
		<dc:rights>Copyright 2012</dc:rights>
		<dc:date>2012-05-14T13:50:00+00:00</dc:date>
		<admin:generatorAgent rdf:resource="http://expressionengine.com/" />
		<atom:link href="http://www.sencha.com/blog/comments-rss/11539" rel="self" type="application/rss+xml" />
  
		
  
		<item>
      <title>Comment by Vidon</title>
      <description>Good Post, Good Job!</description>
      <content:encoded><![CDATA[<p>Good Post, Good Job!</p>]]></content:encoded>
      <pubDate>Thu, 21 Jun 2012 16:51 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31716#date:16:51</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>For those wondering, Neil&#8217;s question about injecting a reference to the application was answered here:

https://github.com/deftjs/DeftJS/issues/21</description>
      <content:encoded><![CDATA[<p>For those wondering, Neil&#8217;s question about injecting a reference to the application was answered here:</p>

<p><a href="https://github.com/deftjs/DeftJS/issues/21">https://github.com/deftjs/DeftJS/issues/21</a></p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 18:43 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31688#date:18:43</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>Andrei,

1) Looks like Neil already pitched in with a great answer here.&amp;nbsp; Thanks, Neil!

2) Unfortunately, Sencha Architect does not currently support Deft JS.&amp;nbsp; I&#8217;m not sure Deft JS even existed at the time they began development of that tool.&amp;nbsp; Feel free to let Sencha know you&#8217;d be interested in seeing support for Deft JS and other third&#45;party libraries in future releases of Sencha Architect.&amp;nbsp; We&#8217;d love to see this, too.

3) What kinds of exceptions are you interested in dealing with?&amp;nbsp; One of the other tentpole features of Deft JS (not discussed in this article) is Deferreds / Promises.&amp;nbsp; This feature allows developers to write methods that return a placeholder for a future value, and chain multiple asynchronous operations and transform their results into that resultant value using very natural syntax.&amp;nbsp; Included among those capabilities is the ability to handle and recover from an error that occurs within a chain of asynchronous operations. This portion of Deft JS is still in development, but you&#8217;ll be hearing a lot more about it soon.</description>
      <content:encoded><![CDATA[<p>Andrei,</p>

<p>1) Looks like Neil already pitched in with a great answer here.&nbsp; Thanks, Neil!</p>

<p>2) Unfortunately, Sencha Architect does not currently support Deft JS.&nbsp; I&#8217;m not sure Deft JS even existed at the time they began development of that tool.&nbsp; Feel free to let Sencha know you&#8217;d be interested in seeing support for Deft JS and other third-party libraries in future releases of Sencha Architect.&nbsp; We&#8217;d love to see this, too.</p>

<p>3) What kinds of exceptions are you interested in dealing with?&nbsp; One of the other tentpole features of Deft JS (not discussed in this article) is Deferreds / Promises.&nbsp; This feature allows developers to write methods that return a placeholder for a future value, and chain multiple asynchronous operations and transform their results into that resultant value using very natural syntax.&nbsp; Included among those capabilities is the ability to handle and recover from an error that occurs within a chain of asynchronous operations. This portion of Deft JS is still in development, but you&#8217;ll be hearing a lot more about it soon.</p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 18:39 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31687#date:18:39</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>Sebastien,

You might well not need it. We definitely do not advocate Deft JS as the one&#45;size&#45;fits&#45;all solution to all web interactivity &#45; in some cases it might be overkill. It is best suited for large scale single page applications where the UI is significantly dynamic. View Controllers allow a separation between the definition of the view, and the underlying logic for coordinating the state of subcomponents of that view and subsequent delegation of work to business logic components. They are not an invention of Deft JS, and similar implementations can be found in most modern application frameworks. For larger applications with dynamic user interfaces, this separation of responsibilities can be critical for developing a manageable and maintainable code base.</description>
      <content:encoded><![CDATA[<p>Sebastien,</p>

<p>You might well not need it. We definitely do not advocate Deft JS as the one-size-fits-all solution to all web interactivity - in some cases it might be overkill. It is best suited for large scale single page applications where the UI is significantly dynamic. View Controllers allow a separation between the definition of the view, and the underlying logic for coordinating the state of subcomponents of that view and subsequent delegation of work to business logic components. They are not an invention of Deft JS, and similar implementations can be found in most modern application frameworks. For larger applications with dynamic user interfaces, this separation of responsibilities can be critical for developing a manageable and maintainable code base.</p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 18:23 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31686#date:18:23</guid>
    </item>
  
		<item>
      <title>Comment by Neil</title>
      <description>@Andrei

Q: 1.How is this simpler than the ExtJS MVC? That one is already overly complicated and many users don’t use it since it brings more problems than it tries to solve.

A: Ext controllers are weird in that you have one controller but multiple views. This means you should never store a reference to the view, making the whole refs feature useless. The Deft controllers are one controller per view instance, meaning you can store state in the controller if you want. It&#8217;s much less work to create a getter for a view sub&#45;object and to handle its events.</description>
      <content:encoded><![CDATA[<p>@Andrei</p>

<p>Q: 1.How is this simpler than the ExtJS MVC? That one is already overly complicated and many users don’t use it since it brings more problems than it tries to solve.</p>

<p>A: Ext controllers are weird in that you have one controller but multiple views. This means you should never store a reference to the view, making the whole refs feature useless. The Deft controllers are one controller per view instance, meaning you can store state in the controller if you want. It&#8217;s much less work to create a getter for a view sub-object and to handle its events.</p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 18:04 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31685#date:18:04</guid>
    </item>
  
		<item>
      <title>Comment by Mauro</title>
      <description>Thanks John</description>
      <content:encoded><![CDATA[<p>Thanks John</p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 16:54 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31684#date:16:54</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>Mauro,

I haven&#8217;t tried integrating with Ext.ux.RoutedApp, but I can&#8217;t think of any reason why it shouldn&#8217;t work.&amp;nbsp; You could potentially omit the controllers configuration and use Deft&#8217;s ViewControllers (or use both if you&#8217;d also like to use view&#45;less application&#45;level controller).&amp;nbsp; As with integrating with Ext.app.Application, I would recommend configuring your IoC container in Ext.onReady() rather than in RoutedApplication::launch() because any controllers, stores specified via the &#8216;stores&#8217; or &#8216;controllers&#8217; configs will be instantiated in the constructor before your launch method is called.&amp;nbsp; Otherwise, any dependencies those controllers or stores might have will not be fulfilled because the IoC container will not have been configured yet.</description>
      <content:encoded><![CDATA[<p>Mauro,</p>

<p>I haven&#8217;t tried integrating with Ext.ux.RoutedApp, but I can&#8217;t think of any reason why it shouldn&#8217;t work.&nbsp; You could potentially omit the controllers configuration and use Deft&#8217;s ViewControllers (or use both if you&#8217;d also like to use view-less application-level controller).&nbsp; As with integrating with Ext.app.Application, I would recommend configuring your IoC container in Ext.onReady() rather than in RoutedApplication::launch() because any controllers, stores specified via the &#8216;stores&#8217; or &#8216;controllers&#8217; configs will be instantiated in the constructor before your launch method is called.&nbsp; Otherwise, any dependencies those controllers or stores might have will not be fulfilled because the IoC container will not have been configured yet.</p>]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 16:34 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31683#date:16:34</guid>
    </item>
  
		<item>
      <title>Comment by Andrei I.</title>
      <description>This all looks very nice and interesting, however from my point of view there are a few things I couldn&#8217;t figure out:
1.How is this simpler than the ExtJS MVC? That one is already overly complicated and many users don&#8217;t use it since it brings more problems than it tries to solve.
2.How to use it with Ext Designer or Sencha Architect? If the users generate(and update) allot of their code with those two Sencha products, how to integrate DeftJS in the scheme? The tools allow to edit code manually at some points, but those are restricted (to be able to update), so where does the DeftJS code fit in?
3. As other users already mentioned, what about exception handling? I found no really good example how to do it consistently in the entire application with or without DeftJS :(.</description>
      <content:encoded><![CDATA[<p>This all looks very nice and interesting, however from my point of view there are a few things I couldn&#8217;t figure out:<br />
1.How is this simpler than the ExtJS MVC? That one is already overly complicated and many users don&#8217;t use it since it brings more problems than it tries to solve.<br />
2.How to use it with Ext Designer or Sencha Architect? If the users generate(and update) allot of their code with those two Sencha products, how to integrate DeftJS in the scheme? The tools allow to edit code manually at some points, but those are restricted (to be able to update), so where does the DeftJS code fit in?<br />
3. As other users already mentioned, what about exception handling? I found no really good example how to do it consistently in the entire application with or without DeftJS :(.</p>

]]></content:encoded>
      <pubDate>Sun, 17 Jun 2012 12:24 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31682#date:12:24</guid>
    </item>
  
		<item>
      <title>Comment by Sebastien Tardif</title>
      <description>I don&#8217;t see how having a view hardcoding the controller concrete class is an improvement. I think we are trying to solve problem that doesn&#8217;t exist. YAGNI.</description>
      <content:encoded><![CDATA[<p>I don&#8217;t see how having a view hardcoding the controller concrete class is an improvement. I think we are trying to solve problem that doesn&#8217;t exist. YAGNI.</p>]]></content:encoded>
      <pubDate>Fri, 15 Jun 2012 07:12 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31681#date:07:12</guid>
    </item>
  
		<item>
      <title>Comment by Shay Katz</title>
      <description>Hi,

I have a container(my view) that contains a form that contains some items.
It it possible to inject(using the control annotation) some of the items(e.g : the submit button) that reside inside the form?

Thanks,
Shay</description>
      <content:encoded><![CDATA[<p>Hi,</p>

<p>I have a container(my view) that contains a form that contains some items.<br />
It it possible to inject(using the control annotation) some of the items(e.g : the submit button) that reside inside the form?</p>

<p>Thanks,<br />
Shay</p>]]></content:encoded>
      <pubDate>Thu, 14 Jun 2012 19:29 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31680#date:19:29</guid>
    </item>
  
		<item>
      <title>Comment by Mauro Silva</title>
      <description>Hi,
Sorry about my question, but I want to Know, if I can use (and make sense) Deftjs with RoutedApp (https://github.com/christocracy/RoutedApp)?
Thanks</description>
      <content:encoded><![CDATA[<p>Hi,<br />
Sorry about my question, but I want to Know, if I can use (and make sense) Deftjs with RoutedApp (<a href="https://github.com/christocracy/RoutedApp">https://github.com/christocracy/RoutedApp</a>)?<br />
Thanks</p>]]></content:encoded>
      <pubDate>Tue, 12 Jun 2012 10:58 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31659#date:10:58</guid>
    </item>
  
		<item>
      <title>Comment by sexy summer</title>
      <description>But the station is yet to be resolved, JS, or chaos, and why. .
http://sexylingerietalk.blog.com/</description>
      <content:encoded><![CDATA[<p>But the station is yet to be resolved, JS, or chaos, and why. .<br />
<a href="http://sexylingerietalk.blog.com/">http://sexylingerietalk.blog.com/</a></p>]]></content:encoded>
      <pubDate>Sun, 10 Jun 2012 10:12 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31649#date:10:12</guid>
    </item>
  
		<item>
      <title>Comment by Neil</title>
      <description>In Sencha&#8217;s controllers, I have a reference to application. I have been using this to fire and listen to app&#45;wide events.

How do I do this using Deft? Thanks!</description>
      <content:encoded><![CDATA[<p>In Sencha&#8217;s controllers, I have a reference to application. I have been using this to fire and listen to app-wide events.</p>

<p>How do I do this using Deft? Thanks!</p>]]></content:encoded>
      <pubDate>Fri, 08 Jun 2012 18:35 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31646#date:18:35</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>Moshe, It&#8217;s interesting that you ask that.&amp;nbsp; Someone on the Deft JS mailing list has been asking for some assistance in loosely coupling his view references (and his particular use case may well require a small enhancement to the framework to make it fully viable &#45; we&#8217;re working through it).

You could potentially loosely couple your view references by configuring the IoC container to resolve alternative concrete view implementations for BIDI vs non&#45;BIDI.&amp;nbsp; However, you&#8217;ll lose a lot of the elegant expressiveness of the alias&#45;based JSON&#45;esque component descriptors used throughout Ext JS (such as with the Container.add() method and `items` configuration).&amp;nbsp; That approach costs you quite a bit of convenience when it comes time to create the view instances.&amp;nbsp; Unless you need to create and show different localized versions of views and have them visible at the same time within an application, I&#8217;d take another route.

Instead, I&#8217;d consider creating alternative localized implementations of each of your views, packaging each set of localized views into locale&#45;specific auxilliary JavaScript files (loaded separately from Ext JS and the rest of your app), but using the same aliases across locales.&amp;nbsp; Once you determine the user&#8217;s desired locale, you would load the file with the appropriate localized view implementations.&amp;nbsp; If the fields and underlying logic themselves are the same, you could potentially even use the same Deft JS ViewController across various localized view implementations.

Additional capabilities explicitly designed to aid internationalization are on the Deft JS roadmap, but they are not currently scheduled to be part of the 1.0 release.</description>
      <content:encoded><![CDATA[<p>Moshe, It&#8217;s interesting that you ask that.&nbsp; Someone on the Deft JS mailing list has been asking for some assistance in loosely coupling his view references (and his particular use case may well require a small enhancement to the framework to make it fully viable - we&#8217;re working through it).</p>

<p>You could potentially loosely couple your view references by configuring the IoC container to resolve alternative concrete view implementations for BIDI vs non-BIDI.&nbsp; However, you&#8217;ll lose a lot of the elegant expressiveness of the alias-based JSON-esque component descriptors used throughout Ext JS (such as with the Container.add() method and `items` configuration).&nbsp; That approach costs you quite a bit of convenience when it comes time to create the view instances.&nbsp; Unless you need to create and show different localized versions of views and have them visible at the same time within an application, I&#8217;d take another route.</p>

<p>Instead, I&#8217;d consider creating alternative localized implementations of each of your views, packaging each set of localized views into locale-specific auxilliary JavaScript files (loaded separately from Ext JS and the rest of your app), but using the same aliases across locales.&nbsp; Once you determine the user&#8217;s desired locale, you would load the file with the appropriate localized view implementations.&nbsp; If the fields and underlying logic themselves are the same, you could potentially even use the same Deft JS ViewController across various localized view implementations.</p>

<p>Additional capabilities explicitly designed to aid internationalization are on the Deft JS roadmap, but they are not currently scheduled to be part of the 1.0 release.</p>]]></content:encoded>
      <pubDate>Tue, 05 Jun 2012 22:21 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31634#date:22:21</guid>
    </item>
  
		<item>
      <title>Comment by Moshe Flam</title>
      <description>For internationalization &#45; its usually not just the words being translated, but &#45; in the case of BIDI languages like Hebrew, Arabic and Chinese, the controls are different for accepting text from right to left, spacers and layouts are different and there may even be expected differences in app behavior&#8230;

Would you recommend using this for internationalization?</description>
      <content:encoded><![CDATA[<p>For internationalization - its usually not just the words being translated, but - in the case of BIDI languages like Hebrew, Arabic and Chinese, the controls are different for accepting text from right to left, spacers and layouts are different and there may even be expected differences in app behavior&#8230;</p>

<p>Would you recommend using this for internationalization?</p>

]]></content:encoded>
      <pubDate>Mon, 04 Jun 2012 08:46 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31625#date:08:46</guid>
    </item>
  
		<item>
      <title>Comment by Mikhail Tatsky</title>
      <description>Yes it is quite interesting.
DeftJS reminds me backbone.js

I also did my own js framework on Ext Core and some extentions from ExtJS.
It is here http://mtjs.org
It is ixtremely fast.

If I have sponsor that could supply my work during 8&#45;16 month I would finish it up and get the world leading framework.
I would like implement UI like these
http://dribbble.com/shots/512508&#45;Notifications
http://www.moreira.ch/
http://vectormill.com/</description>
      <content:encoded><![CDATA[<p> Yes it is quite interesting.<br />
DeftJS reminds me backbone.js</p>

<p>I also did my own js framework on Ext Core and some extentions from ExtJS.<br />
It is here <a href="http://mtjs.org">http://mtjs.org</a><br />
It is ixtremely fast.</p>

<p>If I have sponsor that could supply my work during 8-16 month I would finish it up and get the world leading framework.<br />
I would like implement UI like these<br />
<a href="http://dribbble.com/shots/512508-Notifications">http://dribbble.com/shots/512508-Notifications</a><br />
<a href="http://www.moreira.ch/">http://www.moreira.ch/</a><br />
<a href="http://vectormill.com/">http://vectormill.com/</a></p>]]></content:encoded>
      <pubDate>Thu, 31 May 2012 17:29 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31612#date:17:29</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>anon:

As a fellow Adobe Flex refugee, I&#8217;ve found both frameworks to be exciting alternatives in the HTML space.&amp;nbsp; I&#8217;ve used both Angular JS and Ext JS and my preference for a given project would vary based on the complexity of the UI and associated UI componentry required.&amp;nbsp; For single page applications with a desktop application style experience, with menus, trees, grids, etc. there is no question Ext JS is a clear winner.&amp;nbsp; I recently participated in the development of a proof&#45;of&#45;concept application of that type that took 6 weeks (each for two developers) to develop in Angular JS that I was able to rewrite in 3 days with Ext JS and Deft JS.&amp;nbsp; I love Angular&#8217;s MVVM implementation and transparent binding (its a beautiful implementation), however reinventing common UI component and adapting third&#45;party components as directives is only viable when you only need a couple rich UI components that are outside the standard HTML suite of controls.&amp;nbsp; Ext JS provides a rich suite of components with consistent APIs, implemented in an OOP fashion for easy extensibility. Deft JS brings an Ext JS&#45;style implementation of the few key Angular JS features that Sencha&#8217;s frameworks lacked, such as an IoC container for dependency injection, view&#45;scoped controllers and Promises/Deferreds.</description>
      <content:encoded><![CDATA[<p>anon:</p>

<p>As a fellow Adobe Flex refugee, I&#8217;ve found both frameworks to be exciting alternatives in the HTML space.&nbsp; I&#8217;ve used both Angular JS and Ext JS and my preference for a given project would vary based on the complexity of the UI and associated UI componentry required.&nbsp; For single page applications with a desktop application style experience, with menus, trees, grids, etc. there is no question Ext JS is a clear winner.&nbsp; I recently participated in the development of a proof-of-concept application of that type that took 6 weeks (each for two developers) to develop in Angular JS that I was able to rewrite in 3 days with Ext JS and Deft JS.&nbsp; I love Angular&#8217;s MVVM implementation and transparent binding (its a beautiful implementation), however reinventing common UI component and adapting third-party components as directives is only viable when you only need a couple rich UI components that are outside the standard HTML suite of controls.&nbsp; Ext JS provides a rich suite of components with consistent APIs, implemented in an OOP fashion for easy extensibility. Deft JS brings an Ext JS-style implementation of the few key Angular JS features that Sencha&#8217;s frameworks lacked, such as an IoC container for dependency injection, view-scoped controllers and Promises/Deferreds.</p>]]></content:encoded>
      <pubDate>Wed, 23 May 2012 19:44 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31576#date:19:44</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>I apologize that we have not been more responsive to questions posed in the comments on this blog.

A few of the questions here relate to Ext JS rather than Deft JS.

Rich02818:

Deft JS extends Ext JS with an IoC container for dependency injection, an ViewController&#45;based MVC implementation and Promises/Deferreds.&amp;nbsp; It is open&#45;source and licensed under the very permissive MIT license.&amp;nbsp; Feel free to contact me directly if you need alternative licensing terms.&amp;nbsp; 

While you can freely use Deft JS within a commercial product under those terms, Ext JS itself is separately licensed.&amp;nbsp; You can refer to this page: http://www.sencha.com/products/extjs/license/ to learn more about their licensing terms.&amp;nbsp; Sencha Touch is offered under a different licensing model: http://www.sencha.com/products/touch/license/.

magdy a aboud:

Your questions relate to Ext JS rather than Deft JS.&amp;nbsp; You might try their support forums: http://www.sencha.com/forum/</description>
      <content:encoded><![CDATA[<p>I apologize that we have not been more responsive to questions posed in the comments on this blog.</p>

<p>A few of the questions here relate to Ext JS rather than Deft JS.</p>

<p>Rich02818:</p>

<p>Deft JS extends Ext JS with an IoC container for dependency injection, an ViewController-based MVC implementation and Promises/Deferreds.&nbsp; It is open-source and licensed under the very permissive MIT license.&nbsp; Feel free to contact me directly if you need alternative licensing terms.&nbsp; </p>

<p>While you can freely use Deft JS within a commercial product under those terms, Ext JS itself is separately licensed.&nbsp; You can refer to this page: <a href="http://www.sencha.com/products/extjs/license/">http://www.sencha.com/products/extjs/license/</a> to learn more about their licensing terms.&nbsp; Sencha Touch is offered under a different licensing model: <a href="http://www.sencha.com/products/touch/license/">http://www.sencha.com/products/touch/license/</a>.</p>

<p>magdy a aboud:</p>

<p>Your questions relate to Ext JS rather than Deft JS.&nbsp; You might try their support forums: <a href="http://www.sencha.com/forum/">http://www.sencha.com/forum/</a></p>]]></content:encoded>
      <pubDate>Wed, 23 May 2012 19:38 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31575#date:19:38</guid>
    </item>
  
		<item>
      <title>Comment by John Yanarella</title>
      <description>Ozzy,

Deft JS is only a couple months old and currently in beta.&amp;nbsp; We&#8217;re actively using it ourselves to deliver work for clients, but I&#8217;m sure you can empathize with the fact that we have to keep a roof over our heads and those projects have deadlines.&amp;nbsp; Sadly, community support and evolution of the documentation for the framework itself is not our day job.&amp;nbsp; As an MIT licensed open&#45;source project, Deft JS is a gift to the Ext JS development community that originates from what spare hours are available in our nights and weekends.

We have a vision for what Deft JS will be and are actively pursuing it.&amp;nbsp; We are very excited that Deft JS has already attracted as much interest as it has so early on in its life.&amp;nbsp; In its current form, it already pushes the envelope for the kinds of applications you can build and deliver with Ext JS and Sencha Touch.&amp;nbsp; We have more surprises in store.&amp;nbsp; You ain&#8217;t seen nothin&#8217; yet.

But in the meantime&#8230; we are working to move the core framework out of beta into version 1.0.&amp;nbsp; This effort includes addressing key concerns that early users have reported, documenting and implementing tests for Deferreds and Promises (a feature of Deft JS not discussed here), improving documentation overall, developing meaningful examples, migrating to Sencha&#45;style documentation (using JSDuck), and creating a revised project website (to replace the dressed&#45;up README.md we have there currently).

No small order.&amp;nbsp; But we&#8217;re up to the task.&amp;nbsp; You just might have to wait a little while longer.

We are grateful that Sencha provided us this opportunity to announce the project to their community of developers via this blog.&amp;nbsp; The response has been extraordinary and overwhelmingly positive, and the feedback has been immensely useful.&amp;nbsp; We are excited that developers across the globe are already using this framework to build web and mobile applications.

We are even more excited that developers like Brian Kotek, Jacob Henry, Rowan Crawford, Josh Nesbit, Isaac Johnston and others have filed bug reports, offered suggestions and even contributed code to improve this project.&amp;nbsp; Deft JS is an open&#45;source effort, and as such thrives by community contribution.&amp;nbsp; We&#8217;re excited that an active, contributing community is already emerging around this project.

Since this guest blog was posted here we have released multiple updates to the framework addressing issues filed on GitHub or discussed on our Google Groups forum.

You might be interested in the Deft JS Google Group:

&amp;nbsp; http://groups.google.com/group/deftjs

We manage our project on GitHub:

&amp;nbsp; https://github.com/deftjs

There you can find our latest source code and development branches, as well as file bug reports and track their progress.&amp;nbsp; We&#8217;ve closed several issues and have multiple enhancements scheduled for upcoming releases.

https://github.com/deftjs/DeftJS/issues

Brian Kotek was kind enough to create and share a small example application on his blog:

&amp;nbsp; http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring&#45;ExtJS&#45;with&#45;DeftJS

While I wish we were able to provide you with a large&#45;scale example application today, we are currently unable to do so.&amp;nbsp; If I gave you the code for the intranet applications I&#8217;m developing currently for my employer&#8217;s clients, I suspect I&#8217;d end up with a lot more time to develop Deft JS but a much tougher time paying my bills.&amp;nbsp; That said, we are aware that meaningful examples will be critical to ensure Deft JS&#8217;s long&#45;term success and they are slated to be available as soon as we possibly can build them.

Best regards,

John</description>
      <content:encoded><![CDATA[<p>Ozzy,</p>

<p>Deft JS is only a couple months old and currently in beta.&nbsp; We&#8217;re actively using it ourselves to deliver work for clients, but I&#8217;m sure you can empathize with the fact that we have to keep a roof over our heads and those projects have deadlines.&nbsp; Sadly, community support and evolution of the documentation for the framework itself is not our day job.&nbsp; As an MIT licensed open-source project, Deft JS is a gift to the Ext JS development community that originates from what spare hours are available in our nights and weekends.</p>

<p>We have a vision for what Deft JS will be and are actively pursuing it.&nbsp; We are very excited that Deft JS has already attracted as much interest as it has so early on in its life.&nbsp; In its current form, it already pushes the envelope for the kinds of applications you can build and deliver with Ext JS and Sencha Touch.&nbsp; We have more surprises in store.&nbsp; You ain&#8217;t seen nothin&#8217; yet.</p>

<p>But in the meantime&#8230; we are working to move the core framework out of beta into version 1.0.&nbsp; This effort includes addressing key concerns that early users have reported, documenting and implementing tests for Deferreds and Promises (a feature of Deft JS not discussed here), improving documentation overall, developing meaningful examples, migrating to Sencha-style documentation (using JSDuck), and creating a revised project website (to replace the dressed-up README.md we have there currently).</p>

<p>No small order.&nbsp; But we&#8217;re up to the task.&nbsp; You just might have to wait a little while longer.</p>

<p>We are grateful that Sencha provided us this opportunity to announce the project to their community of developers via this blog.&nbsp; The response has been extraordinary and overwhelmingly positive, and the feedback has been immensely useful.&nbsp; We are excited that developers across the globe are already using this framework to build web and mobile applications.</p>

<p>We are even more excited that developers like Brian Kotek, Jacob Henry, Rowan Crawford, Josh Nesbit, Isaac Johnston and others have filed bug reports, offered suggestions and even contributed code to improve this project.&nbsp; Deft JS is an open-source effort, and as such thrives by community contribution.&nbsp; We&#8217;re excited that an active, contributing community is already emerging around this project.</p>

<p>Since this guest blog was posted here we have released multiple updates to the framework addressing issues filed on GitHub or discussed on our Google Groups forum.</p>

<p>You might be interested in the Deft JS Google Group:</p>

<p>&nbsp; <a href="http://groups.google.com/group/deftjs">http://groups.google.com/group/deftjs</a></p>

<p>We manage our project on GitHub:</p>

<p>&nbsp; <a href="https://github.com/deftjs">https://github.com/deftjs</a></p>

<p>There you can find our latest source code and development branches, as well as file bug reports and track their progress.&nbsp; We&#8217;ve closed several issues and have multiple enhancements scheduled for upcoming releases.</p>

<p><a href="https://github.com/deftjs/DeftJS/issues">https://github.com/deftjs/DeftJS/issues</a></p>

<p>Brian Kotek was kind enough to create and share a small example application on his blog:</p>

<p>&nbsp; <a href="http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring-ExtJS-with-DeftJS">http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring-ExtJS-with-DeftJS</a></p>

<p>While I wish we were able to provide you with a large-scale example application today, we are currently unable to do so.&nbsp; If I gave you the code for the intranet applications I&#8217;m developing currently for my employer&#8217;s clients, I suspect I&#8217;d end up with a lot more time to develop Deft JS but a much tougher time paying my bills.&nbsp; That said, we are aware that meaningful examples will be critical to ensure Deft JS&#8217;s long-term success and they are slated to be available as soon as we possibly can build them.</p>

<p>Best regards,</p>

<p>John</p>]]></content:encoded>
      <pubDate>Wed, 23 May 2012 19:19 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31574#date:19:19</guid>
    </item>
  
		<item>
      <title>Comment by Ozzy</title>
      <description>is this project dead??&amp;nbsp; No responses from the owner(s) in a month.&amp;nbsp; Without a viable community there isn&#8217;t much point in pursuing this framework.</description>
      <content:encoded><![CDATA[<p>
is this project dead??&nbsp; No responses from the owner(s) in a month.&nbsp; Without a viable community there isn&#8217;t much point in pursuing this framework.</p>]]></content:encoded>
      <pubDate>Wed, 23 May 2012 17:57 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31573#date:17:57</guid>
    </item>
  
		<item>
      <title>Comment by carlacurtis218</title>
      <description>This is a great information&#8230; Thanks for sharing!</description>
      <content:encoded><![CDATA[<p>This is a great information&#8230; Thanks for sharing!</p>]]></content:encoded>
      <pubDate>Wed, 23 May 2012 05:16 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31568#date:05:16</guid>
    </item>
  
		<item>
      <title>Comment by Troy Rose</title>
      <description>What sort of safe guards have been put around the security of the framework, eg, SQL Injection and so forth.

Other than my concerns about that, I think it looks very promising and will have to give it a go!

Troy
http://www.osisecurity.com.au</description>
      <content:encoded><![CDATA[<p>What sort of safe guards have been put around the security of the framework, eg, SQL Injection and so forth.</p>

<p>Other than my concerns about that, I think it looks very promising and will have to give it a go!</p>

<p>Troy<br />
<a href="http://www.osisecurity.com.au">http://www.osisecurity.com.au</a></p>]]></content:encoded>
      <pubDate>Mon, 21 May 2012 00:47 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31554#date:00:47</guid>
    </item>
  
		<item>
      <title>Comment by Fredric</title>
      <description>@Babar
Here is another approach:
https://github.com/Fredric/ExtJS&#45;Multiple&#45;MVC
Gives you the ability to specify a control array on any view. 

Just clone the stuff right into the sencha example folder.</description>
      <content:encoded><![CDATA[<p>@Babar<br />
Here is another approach:<br />
<a href="https://github.com/Fredric/ExtJS-Multiple-MVC">https://github.com/Fredric/ExtJS-Multiple-MVC</a><br />
Gives you the ability to specify a control array on any view. </p>

<p>Just clone the stuff right into the sencha example folder.</p>]]></content:encoded>
      <pubDate>Fri, 18 May 2012 05:26 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31541#date:05:26</guid>
    </item>
  
		<item>
      <title>Comment by Babar</title>
      <description>Looks good but its very hard to use it without any examples I am trying to load controllers dynamically but unable to do, I have no idea how can I use it.</description>
      <content:encoded><![CDATA[<p>Looks good but its very hard to use it without any examples I am trying to load controllers dynamically but unable to do, I have no idea how can I use it.</p>]]></content:encoded>
      <pubDate>Thu, 17 May 2012 12:31 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31539#date:12:31</guid>
    </item>
  
		<item>
      <title>Comment by Rich02818</title>
      <description>Is there a commercial license available so that this might be usable in a commercial product?</description>
      <content:encoded><![CDATA[<p>Is there a commercial license available so that this might be usable in a commercial product?</p>]]></content:encoded>
      <pubDate>Wed, 16 May 2012 16:16 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31534#date:16:16</guid>
    </item>
  
		<item>
      <title>Comment by Tony Steele</title>
      <description>Just spotted this:

http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring&#45;ExtJS&#45;with&#45;DeftJS

Includes a downloadable application, will give it a try.</description>
      <content:encoded><![CDATA[<p>Just spotted this:</p>

<p><a href="http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring-ExtJS-with-DeftJS">http://www.briankotek.com/blog/index.cfm/2012/5/8/Exploring-ExtJS-with-DeftJS</a></p>

<p>Includes a downloadable application, will give it a try.</p>]]></content:encoded>
      <pubDate>Tue, 15 May 2012 13:52 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31528#date:13:52</guid>
    </item>
  
		<item>
      <title>Comment by Tony Steele</title>
      <description>To anon &#45; is this appropriate , tons of mvc frameworks around, this unique as it enhances ExtJs.

Otherwise, try to quickly get it to work within my existing application , did not succeed, would help alot if you had a simple working example included in the code, a window with Hello World would help.</description>
      <content:encoded><![CDATA[<p>To anon - is this appropriate , tons of mvc frameworks around, this unique as it enhances ExtJs.</p>

<p>Otherwise, try to quickly get it to work within my existing application , did not succeed, would help alot if you had a simple working example included in the code, a window with Hello World would help.</p>]]></content:encoded>
      <pubDate>Tue, 15 May 2012 12:08 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31526#date:12:08</guid>
    </item>
  
		<item>
      <title>Comment by anon</title>
      <description>Have you looked at AngularJS, it looks a lot more elegant than DeftJS, does far more with less, and has an underlying philosopy very similar to Flex&#8230;it almost makes HTML work like MXML</description>
      <content:encoded><![CDATA[<p>Have you looked at AngularJS, it looks a lot more elegant than DeftJS, does far more with less, and has an underlying philosopy very similar to Flex&#8230;it almost makes HTML work like MXML</p>]]></content:encoded>
      <pubDate>Tue, 15 May 2012 11:33 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31525#date:11:33</guid>
    </item>
  
		<item>
      <title>Comment by magdy a aboud</title>
      <description>I want to buy the Ext JS 4.1 software to use it with  vb.net asp.net
I need an example about  how to use ext&#45;4.1 =&amp;gt; menu bare With vb.net2008 asp.net  And write code to open deferent forms &#45; from the vb.net default form after adding the java screpte file and the css file to the project

Best Regards</description>
      <content:encoded><![CDATA[<p>I want to buy the Ext JS 4.1 software to use it with  vb.net asp.net<br />
I need an example about  how to use ext-4.1 =&gt; menu bare With vb.net2008 asp.net  And write code to open deferent forms - from the vb.net default form after adding the java screpte file and the css file to the project</p>

<p>Best Regards</p>]]></content:encoded>
      <pubDate>Wed, 09 May 2012 06:10 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31473#date:06:10</guid>
    </item>
  
		<item>
      <title>Comment by H.W.</title>
      <description>How does &#8220;Error Handling&#8221; fit into the scheme with DeftJS? I couldn&#8217;t find any working example for one of the followings:
&#45; handling in the client of  the serverside errors &#45; e.g. SQL exceptions, other serverside exceptions that affect one of the ajax requests, or simply not acceptable delays.
&#45; handling in the client of the transport/communication errors (and maybe too big delays &#45; timeout just does not do it).
&#45; general exceptions (catch/try/rethrow &#45; but how and where).

Thanks in advance.</description>
      <content:encoded><![CDATA[<p>How does &#8220;Error Handling&#8221; fit into the scheme with DeftJS? I couldn&#8217;t find any working example for one of the followings:<br />
- handling in the client of  the serverside errors - e.g. SQL exceptions, other serverside exceptions that affect one of the ajax requests, or simply not acceptable delays.<br />
- handling in the client of the transport/communication errors (and maybe too big delays - timeout just does not do it).<br />
- general exceptions (catch/try/rethrow - but how and where).</p>

<p>Thanks in advance.</p>

]]></content:encoded>
      <pubDate>Fri, 04 May 2012 07:58 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31460#date:07:58</guid>
    </item>
  
		<item>
      <title>Comment by Andrei Ionescu</title>
      <description>I subscribe to Ozzy&#8217;s request. Are there any real world examples that can be used?
A blog post is barely enough to base the entire architecture of an application upon.

Thnx.</description>
      <content:encoded><![CDATA[<p>I subscribe to Ozzy&#8217;s request. Are there any real world examples that can be used?<br />
A blog post is barely enough to base the entire architecture of an application upon.</p>

<p>Thnx.</p>]]></content:encoded>
      <pubDate>Thu, 03 May 2012 19:23 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31455#date:19:23</guid>
    </item>
  
		<item>
      <title>Comment by Ozzy</title>
      <description>This looks like it might be a big help to build real applications with extjs.&amp;nbsp; Do you have a real world example that demonstrates this architecture in action?&amp;nbsp; It would be useful to see an example that puts it all together.</description>
      <content:encoded><![CDATA[<p>
This looks like it might be a big help to build real applications with extjs.&nbsp; Do you have a real world example that demonstrates this architecture in action?&nbsp; It would be useful to see an example that puts it all together.</p>

]]></content:encoded>
      <pubDate>Wed, 02 May 2012 16:20 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31445#date:16:20</guid>
    </item>
  
		<item>
      <title>Comment by Axel</title>
      <description>boom! nice!</description>
      <content:encoded><![CDATA[<p>boom! nice!</p>]]></content:encoded>
      <pubDate>Thu, 26 Apr 2012 01:39 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31369#date:01:39</guid>
    </item>
  
		<item>
      <title>Comment by Ben Hornedo</title>
      <description>Very good stuff. Great work John!</description>
      <content:encoded><![CDATA[<p>Very good stuff. Great work John!</p>]]></content:encoded>
      <pubDate>Wed, 25 Apr 2012 18:30 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31352#date:18:30</guid>
    </item>
  
		<item>
      <title>Comment by Flexodus</title>
      <description>For those who are just getting started in DI, it would be very helpful to show the equivalent code without DI so they can see the benefits.</description>
      <content:encoded><![CDATA[<p>For those who are just getting started in DI, it would be very helpful to show the equivalent code without DI so they can see the benefits.</p>]]></content:encoded>
      <pubDate>Wed, 25 Apr 2012 15:04 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31343#date:15:04</guid>
    </item>
  
		<item>
      <title>Comment by K.</title>
      <description>The view controller stuff was exactly was I was searching for. 
When I split my app into modules, it would be nice to just put an xtype of a module&#45;view into the main app and it gets loaded automagically with it&#8217;s needed controller.</description>
      <content:encoded><![CDATA[<p>The view controller stuff was exactly was I was searching for. <br />
When I split my app into modules, it would be nice to just put an xtype of a module-view into the main app and it gets loaded automagically with it&#8217;s needed controller.</p>]]></content:encoded>
      <pubDate>Wed, 25 Apr 2012 13:52 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31338#date:13:52</guid>
    </item>
  
		<item>
      <title>Comment by Grgur</title>
      <description>Sweet! Can&#8217;t wait to get my hands dirty with it</description>
      <content:encoded><![CDATA[<p>Sweet! Can&#8217;t wait to get my hands dirty with it</p>]]></content:encoded>
      <pubDate>Wed, 25 Apr 2012 13:22 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//deftjs-loosely-coupled-mvc-through-dependency-injection#id:31336#date:13:22</guid>
    </item>
  
		
	</channel>
</rss>