React (software): Difference between revisions

Content deleted Content added
No edit summary
Line 199:
 
==Criticism==
'''W3C standards compliance.''' React uses non-standard HTML tags and attributes (expandos), as well javascriptJavaScript language extensions (jsx), which require learning a vendor specific idiom and also is thwarting security.<ref>{{Cite web|title = Security-Goals-&-Threat-Model|url = https://github.com/cure53/DOMPurify/wiki/Security-Goals-&-Threat-Model|website = github|accessdate = 2017-11-15}}</ref>
 
'''Documentation and support.''' Poor documentation and lack of dedicated support from the creators, leading to tens of thousands of questions on stackoverflow (one third of them unanswered!).<ref>{{Cite web|title = Reactjs Unanswered Questions|url = https://stackoverflow.com/unanswered/tagged/reactjs|website = stackoverflow|accessdate = 2017-11-15}}</ref>
 
'''[[Separation of concerns]].''' React code mixes htmlHTML with javascriptJavaScript, which is considered a bad practice, as it makes more difficult to read and maintain the code, also hard to implement static code analysis.
 
'''Code verbosity.''' In order to perform model-view changes with component states and immutable objects, React require additional lines of code for a task achievable with a single statement in plain javascript. <ref>{{Cite web|title = React-Redux Verbosity|url = https://games.greggman.com/game/react-and-redux-are-a-joke-right/|website = games.greggman|accessdate = 2017-11-15}}</ref><ref>{{Cite web|title = Why is Verbosity Bad|url = https://softwareengineering.stackexchange.com/questions/141175/why-is-verbosity-bad-for-a-programming-language|website = softwareengineering.stackexchange|accessdate = 2017-11-16}}</ref>
 
'''[[Single source of truth]].''' Due to a mythical slowness of the browser's DOM engine compared with processing a similar (but lighter) tree on javascriptJavaScript, React creates, updates and diffs own virtual DOMs (second sourcessource of truth for the User Interface), wasting CPU cycles (even when processing separately from the UI thread), arguably the most fundamental flaw.
 
==References==