I have a general question about the design of JavaScript Libraries.
I am trying to consolidate common methods into one js file so they can be reused by different scripts.
I have taken a look at how the JSON library is structured and believe it was a good approach. JSON for Javascript.
So they start off creating an instance of the class:
if (!this.JSON) { this.JSON = {}; }
Then they do this:
(function () { if (typeof JSON.stringify !== 'function') { JSON.stringify = function (value, replacer, space) {
This is works perfect if you just want to do JSON.[function_name], but what if I want to have a more structured library such that I want: JSON.[subgroup].[function]. How would I structure my JS library in such a way?
Any links to resources are greatly appreciated, thanks.
js (also known as ReactJS or React) is an open-source, front-end JavaScript library. It was created in 2013 by Jordan Walke, who works at Facebook as a software engineer.
Generally speaking, JavaScript libraries are collections of prewritten code snippets that can be used and reused to perform common JavaScript functions. A particular JavaScript library code can be plugged into the rest of your project's code on an as-needed basis.
While other platforms, like Android or iOS, clearly state what a library is, what format it must have and how it should be integrated into a project, JavaScript doesn't provide any built-in mechanism.
I would recommend you to follow the Module Pattern in JavaScript instead of following JSON's pattern strictly. Your subgroup is actually referring to sub-modules. Take a look at the following excellent article:
Ben Cherry's JavaScript Module Pattern In-Depth
Other resources you should probably go through:
There are problems with the module pattern. See http://snook.ca/archives/javascript/no-love-for-module-pattern. I used to use it before but stopped. Now I just tend to keep it simple. If you really want sub-namespacing you can make a simple namespace function for the job.
See http://blogger.ziesemer.com/2008/05/javascript-namespace-function.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With