Writing reusable jQuery modules: Make everything a plugin
I recently asserted that open-source plugins are sometimes more trouble than they’re worth. Nevertheless, I’ve found one unexpected benefit of jQuery’s plugin mechanism: its ability to keep me focused on reusable components rather than one-off, procedural routines.
Because jQuery doesn’t ship with any general-purpose way of simulating classical inheritance, it’s easy to fall into the trap of writing procedural code with no eye toward re-use. When your first pass at solving a given problem often takes only a few lines of code, it seems like too much overhead to wrap those lines in any sort of object.
But then you decide to layer on some effects … or there’s a new requirement to retain state across sessions by calling on a cookies plugin … or you end up with a new use case that would require a subclass of your existing code – if it had been written as a class in the first place. By this point it becomes obvious that your behavior layer is poorly organized, hard to maintain, and inexorably tied to a specific use case. That’s when you roll up your shirtsleeves and start refactoring.
Read more »







