Hello Everyone,<p>I'm a web developer and I've been working in rails for the past year or so. I've been following the development of the javascript ecosystem out of the corner of my eye, but I don't feel like I've truly grasped how all the pieces work together yet.<p>My question to you all is this: What are the tools and packages that are used in this new workflow? How does the data flow? What packages and code are the most important pieces of this ecosystem and how are they plugged together in different ways?<p>I realize that lots of people are using javascript in different ways, and I'm interested in hearing about both backend systems (build on node.js?) to frontend UI (jquery?). So maybe another way to phrase the question is: If you were building an end-to-end javascript web application, what tools and packages would you use, and where are the modular boundaries that could be replaced by other technologies?<p>Thanks in advance!
This are a few of the things that I am to following :<p>Server side:<p>Testing:<p>- Expresso [1]: TDD framework for node -- high speed parallel testing!<p>- Zombie.js [2]: fast, headless full-stack testing using Node.js<p>Tools:<p>- load.js [3]: Lazy load your JS<p>- npm [4] a package manager for node<p>- JSDoc [5] Documentation tool<p>- Docco [6] Literate documentation.<p>- underscore [7] provides a lot of the functional programming<p>- node-openid [8] openid.<p>Frameworks:<p>- Express [8] Sinatra inspired web development framework for node<p>[1] <a href="http://visionmedia.github.com/expresso/" rel="nofollow">http://visionmedia.github.com/expresso/</a><p>[2] <a href="http://zombie.labnotes.org/" rel="nofollow">http://zombie.labnotes.org/</a><p>[3] <a href="https://github.com/chriso/load.js" rel="nofollow">https://github.com/chriso/load.js</a><p>[4] <a href="https://github.com/isaacs/npm" rel="nofollow">https://github.com/isaacs/npm</a><p>[5] <a href="https://github.com/micmath/JSDoc" rel="nofollow">https://github.com/micmath/JSDoc</a><p>[6] <a href="https://github.com/jashkenas/docco" rel="nofollow">https://github.com/jashkenas/docco</a><p>[7] <a href="http://documentcloud.github.com/underscore/" rel="nofollow">http://documentcloud.github.com/underscore/</a><p>[8] <a href="https://github.com/havard/node-openid" rel="nofollow">https://github.com/havard/node-openid</a><p>[9] <a href="https://github.com/visionmedia/express" rel="nofollow">https://github.com/visionmedia/express</a>
One big area that can't be ignored is JSON serialization. There was a thread on here the other day about how someone had sped up messaging in Python by 500% over a common library for messaging provided by Google. I took a look at the messages, and they looked surprisingly like JSON. This was a C library. So, my take away, was that JSON is a great choice for end-to-end messaging. JSON is very popular in Javascript development, plus every major web framework supports in natively including ASP.NET/WCF who have their own serializers for .NET classes complete with type-hints for deserialization.<p>I'm really excited about technologies like ZeroMQ for IPC which has libraries for all major programming languages. Zed Shaw integrated it into Mongrel2, which is where I first heard about it.<p>Patio11 stated the other day, that in all his enterprise development work, there was not a single case where XML (which they always used for some reason) was superior to JSON.<p>I'll let other people pipe up about jQuery, but if you're new to jQuery, now is a great time to learn, because version 1.5 just introduced all kinds of new event goodies which will require me to unlearn the way I currently program using jQuery, because they're that good.