5 ms·
I understand the interest in new Javascript standards in the browser however I've been doing a lot of React+CoffeeScript (without JSX) work lately and it can do
by dugmartin 11y ago
I understand the interest in new Javascript standards in the browser however I've been doing a lot of React+CoffeeScript (without JSX) work lately and it can do all of what is mentioned in the article in a more expressive and (imho) more beautiful syntax.
I'm genuinely curious about all the ES6/ES7 articles. Is the interest driven from the eventual native support in future browsers and being able to drop transpiler dependencies?
- mytranspiler 11y agoWhats the state on coffeescript+jsx these days? I had a horrible time getting it transpile correctly (with gulp) about a year ago.
- epmatsw 11y agoWe've had pretty good success compiling cjsx with gulp-cjsx. The one annoyance I've noticed is that it's just a tad more finicky about whitespace and parentheses/brackets than normal coffeescript, but I suppose that's to be expected.
- mambodog 11y agoIf there is a particular case which you think should work but doesn't, please file an issue on the coffee-react-transform repo and I'll look into it.
- superplussed 11y agoThe code is just so clean. I never understand why it's not more widely used. The JSX blocks are just so clean without all of the braces and the like, and even get syntax highlighted as HTML in sublime.
- dugmartin 11y agoI stopped using JSX with React+CoffeeScript. I think the following looks a lot cleaner and removes the jsx dependency: {div, a} = React.DOM ... render: -> (div {}, (a {href: 'foo'}, 'bar') ) The only downside is having to extract the tags from React.DOM.
- mikewhy 11y agoWouldn't you have to use `React.createFactory` in this case as well? (when not dealing with React.DOM components)
- dugmartin 11y agoYes you do need to use it. I put each component in its own file and use Browserify to require them in like this: MyComponent = React.createFactory require './my-component' then you can do render: -> (div {}, (MyComponent {}) )
- seivan 11y agoYou could omit the parenthesis and it starts to look a lot like HAML :-)
- dugmartin 11y agoThe parens help to make sure CoffeeScript parses it correctly. Plus it looks kind of Lispy which is good right?
- seivan 11y ago"looks kind of Lispy which is good right?" :D, you sound not sure :) I haven't had any issues without the parens, but then again I've only just fooled around. You probably know better.
- Keats 11y agoWorks very well in typescript as well !
- rawrmaan 11y agoWe use CJSX at OneRent with Grunt and Browserify and it's been nothing but fantastic. The syntax is terse and beautiful and IT saves us a lot of typing. To me, ES6 just seems like a lot of catch-up to CoffeeScript, while still maintaining much of the unnecessarily verbose syntax of JS.
- emergentcypher 11y agoIMHO the CoffeeScript syntax is ugly and confusing. ES6 improves the language without borking the syntax so much. To add something more constructive, CoffeeScript is still just a transpiler. I think the long-term goal is for browsers to "natively" interpret/run ES6 code rather than forever transpiling to ES5. Either that, or we actually move on to something like web assembly.
- honest_joe 11y agoThat's your personal opinion as it's his about ES6
- RussianCow 11y ago> I think the long-term goal is for browsers to "natively" interpret/run ES6 code rather than forever transpiling to ES5. That's not an opinion; this will actually happen. See this: https://kangax.github.io/compat-table/es6/ https://kangax.github.io/compat-table/es6/
- emergentcypher 11y agoDid you miss the part where I started my entire comment with "IMHO"?
- deleted 11y ago[deleted]
- k__ 11y agoI tried to use it with LiveScript (without JSX) but it was a horrible mess. All those commas and nulls. If there were something like CoffeeScript+JSX for LiveScript I would be sold.
- deleted 11y ago[deleted]
- jbhatab 11y agoHere's a random template I made with react in middleman that uses coffeescript with no jsx if anyones curious, https://github.com/jbhatab/middleman-backbone-react-template https://github.com/jbhatab/middleman-backbone-react-template. I love the syntax and think it's really clean. The view code reminds me of slime.
- andyl 11y agoBoth CS and ES6 use transpilers. ES6 syntax is ugly and adds no features. ES6 makes me think: the emperor has no clothes.
- city41 11y agoNo features? Destructuring, arrow functions, module system, default values, spread operator, decorators, template strings, on and on. It provides almost all of CoffeeScript's features. What advantage do you see CoffeeScript having?
- andyl 11y agoNone of those features are new - I can get everything on your list with CoffeeScript. For me the advantage of CoffeeScript is that it is less verbose. Main advantage that I see in ES6 is that Transpiling is now widely accepted.
- rictic 11y agoFor me the nice thing is that we're converging. I like the features added by all of the languages that transpile to js, but I want to be able to use them consistently across every project I'm involved in and being an official part of the language makes that much more likely. Convergence is also a boon for tooling and interop.
- Offler 11y agoBasically JavaScript is a tool that I can leverage in more places then CS and CS offers me very little advantage over ES6.
- endemic 11y ago> I can leverage in more places then CS Doesn't ES6 still require transpiling for maximum compatibility at this point? I would reverse your statement; aside from polyfills, ES6 offers me very little advantage over CS.
- baby 11y agoCan you give some examples like the ones he gave in the article but in react+coffeescript without jsx? edit: Someone else posted that https://github.com/jbhatab/middleman-backbone-react-template/blob/master/source%2Fjavascripts%2Fcomponents%2Fpost_form.js.coffee https://github.com/jbhatab/middleman-backbone-react-template... Everytime I see people saying bad things about coffeescript I really wonder why. This looks way nicer/clearer to me.