<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: What Makes jQuery a Good Choice?</title>
	<atom:link href="http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/</link>
	<description>Politics, Programming and Possibilities</description>
	<pubDate>Sat, 05 Jul 2008 01:50:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Some jQuery Notes on Querying</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-26737</link>
		<dc:creator>Some jQuery Notes on Querying</dc:creator>
		<pubDate>Mon, 16 Jun 2008 14:37:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-26737</guid>
		<description>[...] had some time to use jQuery now and I&#8217;ve really liked it. I especially appreciated Yehuda&#8217;s comment on my blog earlier that lead me to try out livequery. I&#8217;ll never see app development in [...]</description>
		<content:encoded><![CDATA[<p>[...] had some time to use jQuery now and I&#8217;ve really liked it. I especially appreciated Yehuda&#8217;s comment on my blog earlier that lead me to try out livequery. I&#8217;ll never see app development in [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt&#8217;s Blog &#187; Blog Archive &#187; What makes jQuery a Good choice?</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24369</link>
		<dc:creator>Matt&#8217;s Blog &#187; Blog Archive &#187; What makes jQuery a Good choice?</dc:creator>
		<pubDate>Thu, 01 May 2008 20:13:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24369</guid>
		<description>[...] this blog post on What Makes jQuery a Good Choice? Thought this provided a pretty good [...]</description>
		<content:encoded><![CDATA[<p>[...] this blog post on What Makes jQuery a Good Choice? Thought this provided a pretty good [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yehuda Katz</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24111</link>
		<dc:creator>Yehuda Katz</dc:creator>
		<pubDate>Wed, 30 Apr 2008 20:50:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24111</guid>
		<description>Just to be clear, liveQuery is a plugin, albeit a very popular and frequently used one that is maintained by a member of the jQuery core team :)

But yeah... jQuery's emphasis on a single "DOM" type really pulls together as you write more complex apps.</description>
		<content:encoded><![CDATA[<p>Just to be clear, liveQuery is a plugin, albeit a very popular and frequently used one that is maintained by a member of the jQuery core team <img src='http://blog.inquirylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>But yeah&#8230; jQuery&#8217;s emphasis on a single &#8220;DOM&#8221; type really pulls together as you write more complex apps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Higgins</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24086</link>
		<dc:creator>Peter Higgins</dc:creator>
		<pubDate>Wed, 30 Apr 2008 18:56:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24086</guid>
		<description>@duane - yes, the 448k is un-shrunk with inline comments, the 77k is the "default" release size. The 26k is obtained by server-side gziping. It is larger than an uncompressed jQuery or Prototype, though I've not done a comparison on what functionality each kit has vs the others (in the "single.js" sense) ... 

That would probably be an interesting blog, actually. All handle the issues we as web developers face with different conventions, though on a core level, provide near identical functionality. Events, CSS Selectors, Ajax/XHR, Animation, Package Systems, i18n, a11y, etc, etc ... 

Either way, thanks for the kind words. A lot of really great people from all walks of life work really really hard to keep things all running ... 

Regards,
Peter Higgins</description>
		<content:encoded><![CDATA[<p>@duane - yes, the 448k is un-shrunk with inline comments, the 77k is the &#8220;default&#8221; release size. The 26k is obtained by server-side gziping. It is larger than an uncompressed jQuery or Prototype, though I&#8217;ve not done a comparison on what functionality each kit has vs the others (in the &#8220;single.js&#8221; sense) &#8230; </p>
<p>That would probably be an interesting blog, actually. All handle the issues we as web developers face with different conventions, though on a core level, provide near identical functionality. Events, CSS Selectors, Ajax/XHR, Animation, Package Systems, i18n, a11y, etc, etc &#8230; </p>
<p>Either way, thanks for the kind words. A lot of really great people from all walks of life work really really hard to keep things all running &#8230; </p>
<p>Regards,<br />
Peter Higgins</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Duane Johnson</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24078</link>
		<dc:creator>Duane Johnson</dc:creator>
		<pubDate>Wed, 30 Apr 2008 18:33:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24078</guid>
		<description>@Rey: Good point.  The community around jQuery is fantastic, and something that definitely got my attention to begin with.  One framework I know of has a closed sort of "don't ask me anything until you've scoured the documentation" attitude which soured my first impression.  Not mentioning any names... (mad4milk *ahem*)

@Peter: Thanks for the measurements, I should have done it myself before waving my hands like that :)  If I understand the comparison correctly, you're saying that the ShrinkSafe version is 77k, which would be just slightly larger than jQuery's and Prototype's 51k each.  Nice work on Dojo, by the way.  It gets points in my book just for the level of respect it has in the corporate world.

@Yehuda: Wow!  Thanks for pointing out some of the hidden treasures that come from consistently applying the set/operations and publisher/subscriber model within the framework.  I think I will really dig LiveQuery and the effen library.</description>
		<content:encoded><![CDATA[<p>@Rey: Good point.  The community around jQuery is fantastic, and something that definitely got my attention to begin with.  One framework I know of has a closed sort of &#8220;don&#8217;t ask me anything until you&#8217;ve scoured the documentation&#8221; attitude which soured my first impression.  Not mentioning any names&#8230; (mad4milk *ahem*)</p>
<p>@Peter: Thanks for the measurements, I should have done it myself before waving my hands like that <img src='http://blog.inquirylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  If I understand the comparison correctly, you&#8217;re saying that the ShrinkSafe version is 77k, which would be just slightly larger than jQuery&#8217;s and Prototype&#8217;s 51k each.  Nice work on Dojo, by the way.  It gets points in my book just for the level of respect it has in the corporate world.</p>
<p>@Yehuda: Wow!  Thanks for pointing out some of the hidden treasures that come from consistently applying the set/operations and publisher/subscriber model within the framework.  I think I will really dig LiveQuery and the effen library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Higgins</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24075</link>
		<dc:creator>Peter Higgins</dc:creator>
		<pubDate>Wed, 30 Apr 2008 18:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24075</guid>
		<description>Just to clarify, Base dojo.js is much smaller than 80k. 

Before ShrinkSaf:e ~448k
Before gzip: 77k

Standard 27k:
http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.js
X-Domain 30k:
http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.xd.js

You can use the entire toolkit without providing any of your own additional bandwidth by including the x-domain .js link in a script tag in your page.

It may seem larger, and in many cases is. If you start adding in "plugins" you will be sending additional code either way. It all adds up quickly.  

The linked online ShrinkSafe program is built into the Dojo package system, which makes the optimizations to css and js automatically.  (for the record, the online version might not be working properly either, I should update the page to reflect that ... )

There was an interesting blog showing how dojo.query can be used to write code in a similar convention as jQuery, while retaining the full power of the build and package system:

http://www.sitepen.com/blog/2008/04/28/3-ways-to-upgrade-your-html-with-dojo/

Sorry to go on, the "80k, and Dojo is even bigger" caught my eye ;)

Regards -
Peter Higgins</description>
		<content:encoded><![CDATA[<p>Just to clarify, Base dojo.js is much smaller than 80k. </p>
<p>Before ShrinkSaf:e ~448k<br />
Before gzip: 77k</p>
<p>Standard 27k:<br />
<a href="http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.js" rel="nofollow">http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.js</a><br />
X-Domain 30k:<br />
<a href="http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.xd.js" rel="nofollow">http://o.aolcdn.com/dojo/1.1.0/dojo/dojo.xd.js</a></p>
<p>You can use the entire toolkit without providing any of your own additional bandwidth by including the x-domain .js link in a script tag in your page.</p>
<p>It may seem larger, and in many cases is. If you start adding in &#8220;plugins&#8221; you will be sending additional code either way. It all adds up quickly.  </p>
<p>The linked online ShrinkSafe program is built into the Dojo package system, which makes the optimizations to css and js automatically.  (for the record, the online version might not be working properly either, I should update the page to reflect that &#8230; )</p>
<p>There was an interesting blog showing how dojo.query can be used to write code in a similar convention as jQuery, while retaining the full power of the build and package system:</p>
<p><a href="http://www.sitepen.com/blog/2008/04/28/3-ways-to-upgrade-your-html-with-dojo/" rel="nofollow">http://www.sitepen.com/blog/2008/04/28/3-ways-to-upgrade-your-html-with-dojo/</a></p>
<p>Sorry to go on, the &#8220;80k, and Dojo is even bigger&#8221; caught my eye <img src='http://blog.inquirylabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Regards -<br />
Peter Higgins</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Von Fange</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24067</link>
		<dc:creator>Daniel Von Fange</dc:creator>
		<pubDate>Wed, 30 Apr 2008 17:52:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24067</guid>
		<description>@Yehuda Although both of the examples come out looking very similar in both frameworks, it's the result of two differing philosophies happening to be expressed in the same code. The reason the the original prototype examples were too verbose is because they were written from a JQuery mindset.

JQuery seems to be summed up in "perform OPERATIONS on a SET of selected things." Prototypes is "THINGS automatically have the METHODS you want on them"

$(‘#element‘).addClass(‘className‘); 

JQuery thinks of this as "get a Set and perform the add class Operation on it".

$(‘element‘).addClass(‘className‘);

Prototype looks at this as "get a Thing and call a method on it".

The syntax is only one character different, but that's mostly because in good frameworks, simple things should be simple.

Taking the philosophy from one framework to write code in the other is a sure way to be both verbose and to irritate the heck out of yourself.</description>
		<content:encoded><![CDATA[<p>@Yehuda Although both of the examples come out looking very similar in both frameworks, it&#8217;s the result of two differing philosophies happening to be expressed in the same code. The reason the the original prototype examples were too verbose is because they were written from a JQuery mindset.</p>
<p>JQuery seems to be summed up in &#8220;perform OPERATIONS on a SET of selected things.&#8221; Prototypes is &#8220;THINGS automatically have the METHODS you want on them&#8221;</p>
<p>$(‘#element‘).addClass(‘className‘); </p>
<p>JQuery thinks of this as &#8220;get a Set and perform the add class Operation on it&#8221;.</p>
<p>$(‘element‘).addClass(‘className‘);</p>
<p>Prototype looks at this as &#8220;get a Thing and call a method on it&#8221;.</p>
<p>The syntax is only one character different, but that&#8217;s mostly because in good frameworks, simple things should be simple.</p>
<p>Taking the philosophy from one framework to write code in the other is a sure way to be both verbose and to irritate the heck out of yourself.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yehuda Katz</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24053</link>
		<dc:creator>Yehuda Katz</dc:creator>
		<pubDate>Wed, 30 Apr 2008 16:32:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24053</guid>
		<description>@Duane: Without getting into the details, it is true that other libraries are able to emulate jQuery's behavior. However, without it being a central part of the library's philosophy, the power of the technique (operating on sets of elements) is quickly diluted and eventually lost altogether.

Because jQuery is all about sets, every plugin available on the web, and every extension you write will drop in seamlessly into your project. $("sel").addClass("foo") easily becomes $("sel").addClass("foo").tabs().

It also makes techniques like jQuery's liveQuery and new element data-store particularly powerful.

LiveQuery allows you to bind events to elements that gain a certain selector, even later on. For instance $("p.alive").liveQuery("click", function() { ... }) will bind the click handler to any p.alive when it gets created, and unbind it when the element no longer matches the selector. It has exactly the same semantics as a typical event handler ("this" is the element that was bound, return false stops propagation and prevents default, etc.)

LiveQuery can also replace each to activate and deactivate behavior for elements on the fly: $("p.alive").liveQuery(function() { /* do this when the element first matches the selector */ }, function() { /* do this when the element no longer matches the selector */ }).

The per-element data-store, now a feature of Mootools as well, is made especially powerful because of how it interacts with jQuery's core philosophy. You add elements to the data store via $("sel").data("key", val) and retrieve the elements via $("sel").data("key"). Of course, the setter function is just a typical jQuery function, and so it can be chained like any other. 

There's an awesome plugin called effen by Nick Kallen that makes use of the data-store to allow you to bind functions to specific elements: $("sel").fn("name", function() { ... }) to set and $("sel").fn("name") to activate.

Combined with liveQuery, you can do something like $("p.awesome").liveQuery(function() { $(this).fn({func: function() { ... }, func2: function() { ... }}). Later, you will be able to do $("p.awesome").fn("func"), and you don't need to track when elements get p.awesome.

Nick uses this for polymorphism (different elements can have functions with the same name, like "save", with different actions).

The point of all of that was that a central philosophy can really build on itself, so it's pointless to compare libraries feature-by-feature. Other libraries have provided mechanisms for copying jQuery on a feature-by-feature basis, but there can be only one ;)</description>
		<content:encoded><![CDATA[<p>@Duane: Without getting into the details, it is true that other libraries are able to emulate jQuery&#8217;s behavior. However, without it being a central part of the library&#8217;s philosophy, the power of the technique (operating on sets of elements) is quickly diluted and eventually lost altogether.</p>
<p>Because jQuery is all about sets, every plugin available on the web, and every extension you write will drop in seamlessly into your project. $(&#8221;sel&#8221;).addClass(&#8221;foo&#8221;) easily becomes $(&#8221;sel&#8221;).addClass(&#8221;foo&#8221;).tabs().</p>
<p>It also makes techniques like jQuery&#8217;s liveQuery and new element data-store particularly powerful.</p>
<p>LiveQuery allows you to bind events to elements that gain a certain selector, even later on. For instance $(&#8221;p.alive&#8221;).liveQuery(&#8221;click&#8221;, function() { &#8230; }) will bind the click handler to any p.alive when it gets created, and unbind it when the element no longer matches the selector. It has exactly the same semantics as a typical event handler (&#8221;this&#8221; is the element that was bound, return false stops propagation and prevents default, etc.)</p>
<p>LiveQuery can also replace each to activate and deactivate behavior for elements on the fly: $(&#8221;p.alive&#8221;).liveQuery(function() { /* do this when the element first matches the selector */ }, function() { /* do this when the element no longer matches the selector */ }).</p>
<p>The per-element data-store, now a feature of Mootools as well, is made especially powerful because of how it interacts with jQuery&#8217;s core philosophy. You add elements to the data store via $(&#8221;sel&#8221;).data(&#8221;key&#8221;, val) and retrieve the elements via $(&#8221;sel&#8221;).data(&#8221;key&#8221;). Of course, the setter function is just a typical jQuery function, and so it can be chained like any other. </p>
<p>There&#8217;s an awesome plugin called effen by Nick Kallen that makes use of the data-store to allow you to bind functions to specific elements: $(&#8221;sel&#8221;).fn(&#8221;name&#8221;, function() { &#8230; }) to set and $(&#8221;sel&#8221;).fn(&#8221;name&#8221;) to activate.</p>
<p>Combined with liveQuery, you can do something like $(&#8221;p.awesome&#8221;).liveQuery(function() { $(this).fn({func: function() { &#8230; }, func2: function() { &#8230; }}). Later, you will be able to do $(&#8221;p.awesome&#8221;).fn(&#8221;func&#8221;), and you don&#8217;t need to track when elements get p.awesome.</p>
<p>Nick uses this for polymorphism (different elements can have functions with the same name, like &#8220;save&#8221;, with different actions).</p>
<p>The point of all of that was that a central philosophy can really build on itself, so it&#8217;s pointless to compare libraries feature-by-feature. Other libraries have provided mechanisms for copying jQuery on a feature-by-feature basis, but there can be only one <img src='http://blog.inquirylabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rey Bango</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24050</link>
		<dc:creator>Rey Bango</dc:creator>
		<pubDate>Wed, 30 Apr 2008 16:16:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24050</guid>
		<description>@Duane: Thanks for the post. Apart from jQuery's ease-of-use, another important distinction is the community and support from the jQuery team. We're always looking for new ways to provide support and information to jQuery developers and I honestly believe we do an outstanding job at that. 

In addition, our extensions list is absolutely amazing with hundreds of community-contributed extensions providing tremendous functionality. And with jQuery UI v1.5 due out shortly, the jQuery project will have a fabulous UI &#38; effects lib that will greatly enhance the ability to build compelling applications.

We work very hard to to help jQuery developers and look forward to reading more of your posts about jQuery. Please be sure to follow us on Twitter at @jquery.

Thanks

Rey
jQuery project team</description>
		<content:encoded><![CDATA[<p>@Duane: Thanks for the post. Apart from jQuery&#8217;s ease-of-use, another important distinction is the community and support from the jQuery team. We&#8217;re always looking for new ways to provide support and information to jQuery developers and I honestly believe we do an outstanding job at that. </p>
<p>In addition, our extensions list is absolutely amazing with hundreds of community-contributed extensions providing tremendous functionality. And with jQuery UI v1.5 due out shortly, the jQuery project will have a fabulous UI &amp; effects lib that will greatly enhance the ability to build compelling applications.</p>
<p>We work very hard to to help jQuery developers and look forward to reading more of your posts about jQuery. Please be sure to follow us on Twitter at @jquery.</p>
<p>Thanks</p>
<p>Rey<br />
jQuery project team</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Aylott</title>
		<link>http://blog.inquirylabs.com/2008/04/29/what-makes-jquery-a-good-choice/#comment-24025</link>
		<dc:creator>Thomas Aylott</dc:creator>
		<pubDate>Wed, 30 Apr 2008 13:54:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=273#comment-24025</guid>
		<description>I hear great things about jQuery.

But I personally prefer MooTools 1.2

If you need it small, you can customize your file to include only the parts of mootools that you actually use.

I have a new MooTools bundle up on Macromates' Review branch http://macromates.com/svn/Bundles/trunk/Review/Bundles/JavaScript%20MooTools.tmbundle/

And there's also a jQuery textmate bundle up there too http://macromates.com/svn/Bundles/trunk/Bundles/JavaScript%20jQuery.tmbundle/</description>
		<content:encoded><![CDATA[<p>I hear great things about jQuery.</p>
<p>But I personally prefer MooTools 1.2</p>
<p>If you need it small, you can customize your file to include only the parts of mootools that you actually use.</p>
<p>I have a new MooTools bundle up on Macromates&#8217; Review branch <a href="http://macromates.com/svn/Bundles/trunk/Review/Bundles/JavaScript%20MooTools.tmbundle/" rel="nofollow">http://macromates.com/svn/Bundles/trunk/Review/Bundles/JavaScript%20MooTools.tmbundle/</a></p>
<p>And there&#8217;s also a jQuery textmate bundle up there too <a href="http://macromates.com/svn/Bundles/trunk/Bundles/JavaScript%20jQuery.tmbundle/" rel="nofollow">http://macromates.com/svn/Bundles/trunk/Bundles/JavaScript%20jQuery.tmbundle/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
