Choosing a JavaScript Framework: A comparison of pros, cons, and trade-offs