@Justin Meyer @John Resig Put it this way...
This is how I think jQuery (the core library) is like a global/ singleton object that can be used anywhere or in MVC/Classical Inheritance/OOP all the classes are inherit from jQuery undisclosed, because it is the ultimate parent. The JavaScriptMVC is great and I think it compliment jQuery well, as long it lets you use the jQuery object anywhere. I don't want jQuery to reinvent the wheel to be another MVC or MooTools Class (file Class.js) framework. If we want MVC/Classical Inheritance/OOP, then jQuery should recognize and extend from JavaScriptMVC to be part of jQuery documentation (on best practices and coding conventions) for: - File names - Method names - Method structures - Testing - Documentation - Packaging The third parties libraries like jQuery UI or plugins, yes, need overload/override/extensibility/modularity in them by default and jQuery (the core) should be static. Sincerely, William Chang http://www.williamchang.org On Apr 28, 12:49 pm, Justin Meyer <justinbme...@gmail.com> wrote: > Tres, > Besides plugining your own framework is there a reason why you don't > think JMVC is for jQuery? You yourself even express the needed for > tighter control of jQuery and have gone as far as building your own > tool. > > At it's center I a proposing a standard way of organizing the only > things a JavaScript application actually does: > > Respond to events > Request data / manipulate services/ Ajax > Wrap the service data > Update the DOM. > > Why do you think JavaScriptMVC is over doing it? Because it is more > than one file? That is actually a huge advantage ... it allows > developers to add only the functionality they need without having to > worry about compression. > > If you are going to share a 'harsh opinion' please provide reasons for > why the above Controller and View wouldn't be useful. If you can, I > think you'd be the first person who doesn't like them - especially > controller ... I mean, just look at that syntax ... your function > names are what they respond to ... and who doesn't like event > delegation? In fact, I'll take the pepsi challenge and promise that > with JMVC's tools that I can create easier to understand and modify > code, faster, than with jQuery alone. > > John has posted some valid points about how some of JMVC's features, > namely class, could invade the core. However, I'm not sure if even > John has worked on projects as large and complex as those that have > prompted JMVC. In these projects, a wiki of suggestions is not going > to be enough to refine a large group of limited skill developers code > so that it is maintainable. > > However, for the (lucky?) few that find themselves losing the reins of > apps that make Gmail look small, there will be an jQuery based > solution for them. I'm hoping to find a few who are willing to help > me perfect the tools and techniques. > > If you do want to explore these techniques I'm super pumped to work > with you. Just let me know what you think jQuery needs. However, > more than one file is a good thing :). > > @DBJ 2-4 is all done in JMVC. Please let me know if you have any > comments on the above syntax. > > On Apr 28, 8:07 am, tres <treshug...@gmail.com> wrote: > > > Justin, > > > I think you have some good points about what you are trying to > > achieve, but personally, I don't think jMVC is for jQuery. I would be > > interested in collaborating on some projects such as this in the > > jQuery realm, though. I have done a bit of development on something > > similar (although, it's one JS file ;) ) and have recently implemented > > the execution of javascript files withing the context of part of the > > DOM as well as (previously) lazy loading, caching and namespacing > > while taking bits from ruby on rails, zend as well as my personal php > > mvc framework. > > > Sorry. Harsh opinion, but I wouldn't be me without it. If your > > interested on working on some projects (as well as other people), I'd > > love to hear back from you. > > > -- > > Trey > > > On Apr 28, 4:40 pm, Justin Meyer <justinbme...@gmail.com> wrote: > > > > If anyone out there is still interested ... I just put up the first > > > alpha. It's pretty slick. You can find it here: > > > >http://javascriptmvc.com/wiki/index.php?title=Downloads > > > > I re-mapped JMVC's Controller, View, and Class to work nicer with > > > jQuery. And, compression works with the latest env.js. > > > > Here's how class basically works: > > > > $.Class.extend("Name.Of.MyClass",{ > > > static : function(){return 'static' }},{ > > > > init : function( val){ > > > this.val = val; > > > } > > > proto : function(){ return this.val } > > > > }) > > > > Name.Of.MyClass.static() // -> static > > > new Name.Of.MyClass(''proto').proto() // -> proto > > > Name.Of.MyClass.extend("NewClassName",{},{}) //-> NewClassName > > > > Here's how a very simple 'show content' controller could work: > > > > $.Controller.extend("ShowController",{},{ > > > 'a click' : function(el, ev){ > > > var id = el.attr('href'); //get id we want to show > > > this.element.find(id ).toggle(); //find it inside the 'wrapped' > > > element > > > ev.preventDefault() //prevent browser from auto-scrolling there > > > } > > > > }) > > > > You could add this to any collection of a's like the following: > > > > <div id='mycollection'> > > > <a href='#place_to_open'>Open</a> > > > <p id='place_to_open'>Blah Blah</p> > > > </div> > > > > $('#mycollection').show_controller(); > > > > Honestly ... what could be better than that!!!! I mean really. That > > > has got to be the nicest way of defining and grouping functionality > > > just about ever. > > > > A few more things about this..... > > > > When you 'add' show controller to mycollection it does the following: > > > > adds the class name 'show_controller' to mycollection making it easy > > > to figure out what controllers are responding to mycollection just by > > > inspecting the dom. > > > > puts the controller in the element's data so you can get it like: > > > > $('#mycollection').data('show_controller') > > > > And remove all functionality like: > > > > $('#mycollection').data('show_controller').destroy(); > > > > You can also have 'setup' functionality. Lets say we wanted to hide > > > everything in our element that matched some selector, we could add an > > > init function: > > > > $.Controller.extend("ShowController",{},{ > > > init : function(element, hideSelector){ > > > this._super(element); //sets the element to delegate from and > > > this.element > > > this.element.find(hideSelector).hide() > > > }, > > > 'a click' : function(el, ev){ > > > var id = el.attr('href'); //get id we want to show > > > this.element.find(id ).toggle(); //find it inside the 'wrapped' > > > element > > > ev.preventDefault() //prevent browser from auto-scrolling there > > > } > > > > }) > > > > now we could call it like: > > > > $('#mycollection').show_controller('p'); > > > > How fantastic is that. This can be better for jQuery that the jersey > > > we gave John. > > > > And if you wanted to extend the functionality and make it your own: > > > > ShowController.extend("MyShowController",{},{ > > > 'a click' : function(el, ev){ > > > this._super(el, ev) > > > el.text( el[0].style.display == "" ? "hide" : "show" ) //says > > > hide or show > > > } > > > > }) > > > > Oh, I almost forgot views: > > > > $(".some_thing").append({view '/url/to/view', data: {message: > > > "hello_world"}}) > > > > in /url/to/view.ejs > > > <h1><%= message %></h1> > > > > prepend, after, before,replace,text,html all work too. > > > > Now that I got a rough draft ... I'm really looking for people who > > > want to take this project to the next level with me. Give me a shout > > > if you are interested and what you think -> justinbme...@gmail.com > > > > John, let me know if there is a better place for this. It's very > > > jQuery related, but don't want to be spamming anyone. > > > > My next step is hardening the API and getting rhino and selenium > > > testing working. > > > > On Mar 1, 7:33 am, tres <treshug...@gmail.com> wrote: > > > > > I realized after I made my last post (#57) I realized that you > > > > described almost exactly what I had just built :). Sort of like > > > > finding money behind the couch! > > > > Try:http://code.google.com/p/jquery-plugin-dev/source/browse/trunk/jquery.... > > > > > Anyways, I am not trying to say MVC is over-engineering in practice as > > > > I do understand the need for organization, code-reuse and convention > > > > (I've authored my own PHP5 MVC framework), but currently I think that > > > > with JavaScript, there needs to be a happy medium between performance, > > > > organization and convention. Separating these out into at least 3 > > > > server calls per page, plus extra processing time that comes from > > > > dispatching and routing, has the potential for a bit of overhead, > > > > especially in a large application. > > > > > UI, being as dynamic as it is, calls for many different situations > > > > where you might respond to an event by posting a form via ajax, and > > > > when that is done manipulating the DOM accordingly. As simple as that > > > > seems, more often than not something will vary with the way JavaScript > > > > will have to handle the user's last interaction. Sometimes, simple > > > > conventions and organization is less work and easier to maintain. The > > > > simplest answer is usually the best answer (within reason, though). > > > > But that is just my opinion. > > > > > Cheers, > > > > Trey > > > > > On Feb 27, 6:03 am, Justin Meyer <justinbme...@gmail.com> wrote: > > > > > > @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 > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---