[ Launch Inlet ]
| // Ajax File upload with jQuery and XHR2 | |
| // Sean Clark http://square-bracket.com | |
| // xhr2 file upload | |
| $.fn.upload = function(remote, data, successFn, progressFn) { | |
| // if we dont have post data, move it along | |
| if (typeof data != "object") { | |
| progressFn = successFn; | |
| successFn = data; | |
| } |
| if (Meteor.isClient) { | |
| Test = new Meteor.Collection("test"); | |
| Meteor.subscribe("testsub"); | |
| } | |
| if (Meteor.isServer) { | |
| Test = new Meteor.Collection("test", { connection: null }); | |
| Meteor.publish("testsub", function () { | |
| return Test.find(); | |
| }); |
| // [B](f: (A) ⇒ [B]): [B] ; Although the types in the arrays aren't strict (: | |
| Array.prototype.flatMap = function(lambda) { | |
| return Array.prototype.concat.apply([], this.map(lambda)); | |
| }; |
| (function (root, factory) { | |
| "use strict"; | |
| if (typeof define === 'function' && define.amd) { | |
| define(['moment'], factory); | |
| } else if (typeof exports === 'object') { | |
| module.exports = factory(require('moment')); | |
| } else { | |
| factory(root.moment); | |
| } | |
| }(this, function (moment) { |
Hi Nicholas,
I saw you tweet about JSX yesterday. It seemed like the discussion devolved pretty quickly but I wanted to share our experience over the last year. I understand your concerns. I've made similar remarks about JSX. When we started using it Planning Center, I led the charge to write React without it. I don't imagine I'd have much to say that you haven't considered but, if it's helpful, here's a pattern that changed my opinion:
The idea that "React is the V in MVC" is disingenuous. It's a good pitch but, for many of us, it feels like in invitation to repeat our history of coupled views. In practice, React is the V and the C. Dan Abramov describes the division as Smart and Dumb Components. At our office, we call them stateless and container components (view-controllers if we're Flux). The idea is pretty simple: components can't
| 100+ different js counter apps... |
| // use Prompt like normal... magic happens in getUserConfirmation | |
| class App extends Component { | |
| render () { | |
| return ( | |
| <Router getUserConfirmation={getUserConfirmation}> | |
| {...} | |
| <Prompt | |
| when={formIsHalfFilledOut} | |
| message="Are you sure you want to leave?" | |
| /> |