Now if you want to physically separate the view logic and the corresponding markup generation, that's more debatable: they're extremely strongly coupled (and in fairly small chunks ideally) so you often can't trivially change one without the other, and thus keeping them together makes logical sense. See Pete Hunt's presentation which lumpypua linked, it tries to make that point fairly nicely.
[0] https://github.com/swannodette/om
[1] https://github.com/edn-format/edn
But consider that usually JS to control a view is inextricably linked to the underlying HTML and you need to modify both whenever making any change regardless -- since that's the case, you might as well combine all of the code and markup for the view in one place. Work to separate concerns, not programming languages.
http://2013.jsconf.eu/speakers/pete-hunt-react-rethinking-be...
<div className='foo'>bar</div> -->
React.DOM.div({ className: 'foo', children: 'bar' })
You don't have to use it - it's a convenience provided for designers (and arguably developers who have realised that templating provides a false separation of concerns). Om notably (https://github.com/swannodette/om) ignores it.
> JSX transforms from an XML-like syntax into native JavaScript.