Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a novice web developer, mostly worked with ASP.NET. On the server side, everything is very well documented and whenever there is an error, you get an explanatory error message. But on the client side, I'm at a total loss. I never had to develop a very interactive user interface.

For example, tag suggestions on this site while you are asking a question. How such a thing is developed? Writing pure javascript and jquery, onkeypress events then ajax, then manipulating the dom and styling newly created html... This should take days even weeks for a novice developer and it's totally error prone. Something always goes wrong and your best chance is guessing what could have gone wrong. It's not like programming with Java or C# etc.

Shortly, what I'm asking is what technologies are used for rapid, robust client side web development, that both looks good and reliable.

EDIT: An attempt to remove vagueness about question, writing pure javascript to create a highly interactive and elegant client side app is like programming in Assembly. What major frameworks/libraries/technologies used to overcome this complexity?

share|improve this question
1  
This question is vague and not constructive. –  Phillip Burch Apr 18 '13 at 15:52
    
Why do people keep comparing the DOM API to assembly? It's the exact opposite. Assembly is very fine-grained and not at all explicit. The DOM API is big, clunky, abstracts a ton of stuff for you and is hyper-explicit. This is not a problem in JS, however as redesigning and layering over an API is pretty trivial work. But seriously, who started the JavaScript without jQuery is like assembly thing? I don't think they've ever looked at or considered assembly. –  Erik Reppen Jun 19 '13 at 1:26
    
@Erik Reppen hanselman.com/blog/… recently found this. –  Reek Jul 28 '13 at 23:26
add comment

2 Answers

Actually, the modern web browsers all have reasonable debugging capabilities. You typically hit the F12 key to bring up the dev tools in the browser. If you're using Firefox, check out the Firebug extension. Internet Explorer's debug tools got better in IE9. I think Chrome is improving. Also, look for Firebug Lite for Chrome.

Also, honestly, when it comes to JavaScript my personal take is just use jQuery. It irons out the differences between the browsers, normalizes attaching event handlers into the event bubbling mechanisms in the browsers, provides nice CSS-style selector syntax for all of the above, and more.

share|improve this answer
1  
-1 Not enough jQuery praise (I kid, I kid) –  Xion Apr 18 '13 at 9:18
1  
The Chrome debugger is now quite good. –  kevin cline Apr 18 '13 at 12:54
    
I did give jQuery its own paragraph... :-p –  Craig Apr 18 '13 at 16:07
add comment

I would suggest using any of the client-side JavaScript MVC frameworks. You can get a feel for the multitude of them at TodoMVC which gives a Todo app example using each. A client-side JavaScript framework is crucial if you plan to create a non-trivial web application.

I've developed apps with a few, namely Backbone, Knockout, and Angular. I use Angular in every single one of my new projects. It's one of the best experiences I've had with web development. Ever.

I would strongly suggest you don't use jQuery for major web application development. It's excellent when you merely want to make a website slightly more dynamic, but if you want to create a full fledged interactive web application it rapidly becomes tedious, complex, and spaghetti code is abound.

Hope that helps.

share|improve this answer
    
I was exactly asking about the "spaghetti" part. What technology is used to create a full fledged interactive web application? –  Reek Apr 18 '13 at 11:11
    
I've really been wanting to give Knockout a better look. I do think that any spaghetti result with jQuery is largely a matter of how it gets implemented. It's possible to write totally indecipherable spaghetti-ish code with Java and C#, for that matter, no? Certainly, you can easily end up with spaghetti code if you just try plain old JavaScript, and jQuery improves enormously on that. You can use namespaces (prototype is built-in to JS now), objects, etc. with JavaScript. Or you can just schlep code into an include file without even using functions, just like you can do with PHP. :-) –  Craig Apr 18 '13 at 16:04
    
@user1186523: Exactly what I listed. Client-side JavaScript MVC frameworks. I strongly suggest AngularJS. It's an elegant framework, reliable, created and maintained by Google, and is easy to test. And it's not that difficult to pick up. Whatever you choose, you'll need to get a strong handle on JavaScript, and, by extension, Ajax. I would suggest reading Eloquent JavaScript. –  Brent Morrow Apr 18 '13 at 20:09
1  
@Craig: Everything is a matter of implementation. You could use a client-side JavaScript MVC framework and still create mind-bogglingly bad code. The point here, as you said yourself (... and jQuery improves enormously on that) is to find a way to improve on more tedious solutions. He's asking for a rapid, robust client-side web development. jQuery is sufficient but a good client-side MVC framework improves enormously on plain jQuery. –  Brent Morrow Apr 18 '13 at 20:11
    
@Brent: no argument here. As I said, I've been interested in giving Knockout a serious once-over for a quite a while, and Angular is now on that list, too (thanks!). ;-) –  Craig Apr 18 '13 at 20:13
show 4 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.