It's not the exact same thing at all though. Declarative versus imperative. I'm sure someone's going to hem and haw about how they're the "effectively" the same, but they're really not. JSX is a breath of fresh air for front end development.
if (isLoggedIn) {
return <UserGreeting />;
}
How is that different?This is fine:
<?php
if (condition) {
?>
<div>whatever</div>
<?php
{
?>
this not: if (isLoggedIn) {
return <UserGreeting />;
{ function
ThemedButton(props) {
return (
<ThemeContext.Consumer>
{theme => (
<button
{...props}
style=.
{{backgroundColor:
theme.background}}
/>
)}
</ThemeContext.Consumer>
);
}
I've been writing JavaScript for 15 years and this looks like gibberish to me. There's at least 3 context switches between JavaScript, JSX and CSS. We're abandoning separation of concerns and creating a monstrosity of programming by punctuation.