@Trey,
  You created a plugin to deal with the exact problems we have been
talking about :).

  Have you developed a JS centered application, something that could
be considered a 'Thin-Server-Architecture' app?

When you build the entire HTML structure client side, a lack of a JS
template (View) is brutal.

If you only have raw services to work from, something that can wrap
and provide context to the data is essential.

Although widget.js comes close to a 'controller' anyway, wouldn't it
be great if you can make plugins like:

$.plugin('todo',{
  init : function(element, options) {
     //initialization code on the element
     //uses something in 'data' as 'this' for state, instead of
this=element
     this.created = true;
  }
  "a.destroy click" : function(element, event){
     //uses event delegation to call without actually having to setup
delegation
     this.destroyed = true;
  },
  destroyed : function(){ return this.destroyed } // a normal function
on the plugin
})

Widget.js could just see which functions look for events and setup
delegation on the element for you.

Now, what if you can create your plugin like:

var instances = $('.someClass').todo(options)

and it would return the 'instances' of the plugin you were operating
on so you could do something like:

instances[0].destroyed();


MVC isn't over-engineering in a 'large' project because it fits
perfects with what you always have to do.

-respond to events
-connect to/manipulate services
-wrap data from those services
-Build/manipulate HTML/DOM

Logically separating these concerns is extremely helpful.  Doing it in
an organized and repeatable fashion is event more important.



@nicolas - I was never implying any of this should be part of the
core.  It should not be.  I was simply proposing that a new 'branch'
of jQuery is started with a focus on tools and structure needed for
large projects.





On Feb 25, 6:11 pm, tres <treshug...@gmail.com> wrote:
> I think 'MVC as it states - Model, View, Controller - in JavaScript
> terms, is over-engineering what doesn't need to be over-engineered.
> jQuery in it's simplicity can evolve with a very complex application
> quite nicely.
>
> That being said, I have authored myself a plugin called jFrame in
> order to help with code convention, organization as well as automated
> loading. Works nicely for me.
>
> -Trey
>
> On Feb 25, 8:26 am, John Resig <jere...@gmail.com> wrote:
>
> > Ok, so boiling down a list:
>
> > Needs code:
> >  - Widget utility (I'm working on this)
> >  - Debugging utility
> >  - Static plugin analyzer
>
> > Need a tutorial to cover the concepts of (I'm working on this):
> >  - Encapsulation
> >  - Extensibility
> >  - Modularity
>
> > Needs (defined/documented) conventions:
> >  - File names
> >  - Method names
> >  - Method structures
> >  - Testing
> >  - Documentation
> >  - Packaging
>
> > Once the above conventions are finalized, that static plugin analyzer
> > can be written.
>
> > Once the widget code is done, the tutorial needs to be updated.
>
> > ---
>
> > So, with that drawn in the sand, Justin, would you be interested in
> > working on the debugging plugin, the static analyzer, defining
> > conventions, all of the above?
>
> > Any/all of those would be a huge help and I'd imagine that if the work
> > is solid they should all become official jQuery projects/conventions.
>
> > Now I'm not discounting any additional code or patterns but we need to
> > start with what we have and make sure that we're working with the best
> > possible resources. If we define the above conventions and code we may
> > find that there is less of a need for a new project than we originally
> > thought - and we get the benefit of having excellently defined and
> > documented resources and conventions for people to use - so everyone
> > wins.
>
> > --John
>
> > On Tue, Feb 24, 2009 at 2:41 PM, Justin Meyer <justinbme...@gmail.com> 
> > wrote:
>
> > >> - package and minimize multiple files (YUI Compressor)
>
> > > - Could be solved much better as it is not integrated into the
> > > 'framework'.  You have to 'double' include everything (once in your
> > > page, another in your build script).  You have to set your html to
> > > switch from loading separate files to loading the combined in
> > > production.
>
> > >> - documentation (jQuery Documentation Wiki - already allows devs to
> > >> have inline demos and can be extracted to external sources)
>
> > > Unless I am misunderstanding something, does this allow me to document
> > > my application, or is this just for jQuery?  I am talking about
> > > something similar to JSDoc.
>
> > >> - testing (QUnit)
>
> > > Does it handles synthetic events?  Can it run server-side to ensure
> > > sanity before checkin?  Can you do point and click testing like
> > > selenium?
>
> > >> > Where do I put the files?
> > >> > What should I name the files?
>
> > >> I'm not completely convinced that this is a huge problem - but at
> > >> worst this could be solved through convention and documentation.
>
> > >> > How/where should I respond to events?
> > >> > How should I deal with state?
> > >> > How can I maximize the chances of re-usability?
>
> > >> All three of these are handled either through better documentation or
> > >> with the widget/jQuery.plugin code that I showed earlier (it
> > >> especially helps to deal with state and reusability, while responding
> > >> to events would be more of a documentation issue).
>
> > > Yes, these conventions are exactly what is needed.  Documentation can
> > > definitely do that, but so far I've not seen it for jQuery.
>
> > >> > Where should I be connecting to the service?
>
> > >> That's probably outside the scope of anything that we would do, since
> > >> it would probably define what needs to happen on the server-side.
>
> > > I mean, where should ajax calls happen in the client?  In JMVC they
> > > are in the Model, akin to ORM.
>
> > >> > How can I wrap the service data? (For example, maybe the todo has
> > >> > passed it's completion date and you want to ask it .isPastDue().
>
> > >> This seems like another case of encapsulation or dealing with state 
> > >> (imo).
>
> > >> > How can I create HTML in a readable manner?
>
> > >> At best, something that's done through convention.
>
> > > Yes, but where should that html go, etc.  Yes, convention is needed.
> > > I guess that is the central point we've arrived at.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to