what is a javascript framework