I am having trouble settling down to a proper practice for UI JavaScript coding. So I am looking for a smarter way to do things. I’ve been using jQuery with ASP.NET and I have been doing things like below which seems unprofessional and dumb. JavaScript UI programming has always been a mysterious to me. I know how to do it but I never knew how to do it properly.
$(function(){
$('submit').click(function() {
//behaviors, setup styles, validations, blah...
});
});
Problems:
- Code duplications are often therefore harder to maintain and reuse
- With ClientIds are generated by ASP.NET, it’s hard to pull code chunks into separate js files
- Common declarations are placed on master pages, however jQuery document ready function appears almost on every other pages as well
Goals:
- JavaScript library/framework independent, so that it will be easier to switch frameworks down the road
- Encapsulate/modulate logic for easy reuse, so that on each page, it will only be a few simple lines of initialization code
- Separation of concerns for easy maintenance and readability
Questions:
Being a C# developer mainly my thinking is very OO and jQuery is very procedural. I understand the concepts of Anonymous Function however in general my mind is still trying to make a domain model which abstracts the UI then declares properties or methods. But I am really not sure if this is the way in JavaScript. Or am I being too ideal or am I trying too hard to make something that's not supposed to be OO OO like? So the questions are:
- Should I start to encapsulate/modulate functions using JavaScript prototype and make it a bit more OO like? So that HTML controls or behaviours can be encapsulated for reuse?
- Or should I start encapsulate logics into jQuery plug-in? But this way the code will be 100% dependent on jQuery.
- Or any other approaches?
Thank you.
Updated: I just found this slide and it seems to be a good starting point. This is also a good example that I just found. And a good tutorial by the creator of jQuery.