From 826a62c4ad2a2fda1c39a2c3c95ad63e6a29ffe4 Mon Sep 17 00:00:00 2001 From: Vjeux Date: Wed, 12 Jun 2013 21:43:37 +0200 Subject: [PATCH] Community round-up blog post --- _css/react.scss | 20 +++++++++++ _layouts/post.html | 2 +- _posts/2013-06-12-community-roundup.md | 48 +++++++++++++++++++++++++ blog/index.html | 2 +- img/blog/khan-academy-editor.png | Bin 0 -> 11108 bytes 5 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 _posts/2013-06-12-community-roundup.md create mode 100644 img/blog/khan-academy-editor.png diff --git a/_css/react.scss b/_css/react.scss index f3548130..ec2c9717 100644 --- a/_css/react.scss +++ b/_css/react.scss @@ -356,6 +356,22 @@ section.black content { padding-bottom: 18px; } +/** + * Blog + */ + +.blogContent { + padding-top: 20px; + + blockquote { + padding: 5px 15px; + margin: 20px 0; + background-color: #f8f5ec; + border-left: 5px solid #f7ebc6; + } + +} + /** * Docs */ @@ -495,6 +511,10 @@ p { margin-bottom: 20px; } +figure { + text-align: center; +} + .inner-content { float: right; width: $skinnyContentWidth; diff --git a/_layouts/post.html b/_layouts/post.html index 808e0bf9..c2da78a6 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -3,7 +3,7 @@ layout: default sectionid: blog --- -
+
{% include nav_blog.html %}

{{ page.title }}

diff --git a/_posts/2013-06-12-community-roundup.md b/_posts/2013-06-12-community-roundup.md new file mode 100644 index 00000000..f5e63a09 --- /dev/null +++ b/_posts/2013-06-12-community-roundup.md @@ -0,0 +1,48 @@ +--- +title: "Community Round-up #1" +layout: post +author: Vjeux +--- + +React was open sourced two weeks ago and it's time for a little round-up of what has been going on. + +## Khan Academy Question Editor + +It looks like [Ben Alpert](http://benalpert.com/) is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for his contributions in form of pull requests, bug reports and presence on IRC ([#reactjs on Freenode](irc://chat.freenode.net/reactjs)). Ben wrote about his experience using React on Quora: + +> I just rewrote a 2000-line project in React and have now made a handful of pull requests to React. Everything about React I've seen so far seems really well thought-out and I'm proud to be the first non-FB/IG production user of React. +> +> The project that I rewrote in React (and am continuing to improve) is the Khan Academy question editor which content creators can use to enter questions and hints that will be presented to students: +>
[![](/react/img/blog/khan-academy-editor.png)](http://www.quora.com/React-JS-Library/How-is-Facebooks-React-JavaScript-library/answer/Ben-Alpert)
+> +> [Read the full post...](http://www.quora.com/React-JS-Library/How-is-Facebooks-React-JavaScript-library/answer/Ben-Alpert) + +## Pimp my Backbone.View (by replacing it with React) + +[Paul Seiffert](https://blog.mayflower.de/) wrote a blog post that explains how to integrate React into Backbone applications. + +> React has some interesting concepts for JavaScript view objects that can be used to eliminate this one big problem I have with Backbone.js. +> +> As in most MVC implementations (although React is probably just a VC implementation), a view is one portion of the screen that is managed by a controlling object. This object is responsible for deciding when to re-render the view and how to react to user input. With React, these view-controllers objects are called components. A component knows how to render its view and how to handle to the user's interaction with it. +> +> The interesting thing is that React is figuring out by itself when to re-render a view and how to do this in the most efficient way. +> +> [Read the full post...](https://blog.mayflower.de/3937-Backbone-React.html) + +## Using facebook's React with require.js + +[Mario Mueller](http://blog.xenji.com/) wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower. + +> I recently stumbled upon facebook's React library, which is a Javascript library for building reusable frontend components. Even if this lib is only at version 0.3.x it behaves very stable, it is fast and is fun to code. I'm a big fan of require.js, so I tried to use React within the require.js eco system. It was not as hard as expected and here are some examples and some thoughts about it. +> +> [Read the full post...](http://blog.xenji.com/2013/06/facebooks-react-require-js.html) + +## Origins of React + +[Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](http://facebook.github.io/react/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora: + +> React isn't quite like any other popular Javascript libraries, and it solves a very specific problem: complex UI rendering. It's also intended to be used along side many other popular libraries. For example, React works well with Backbone.js, amongst many others. +> +> React was born out of frustrations with the common pattern of writing two-way data bindings in complex MVC apps. React is an implementation of one-way data bindings. +> +> [Read the full post...](http://www.quora.com/React-JS-Library/How-is-Facebooks-React-JavaScript-library/answer/Lee-Byron?srid=3DcX) diff --git a/blog/index.html b/blog/index.html index ee73ad03..09925c3b 100644 --- a/blog/index.html +++ b/blog/index.html @@ -4,7 +4,7 @@ layout: default sectionid: blog --- -
+
{% include nav_blog.html %}
{% for page in site.posts %} diff --git a/img/blog/khan-academy-editor.png b/img/blog/khan-academy-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..f0413939d7958451f74535b0a0291a909a38bfa5 GIT binary patch literal 11108 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 literal 0 HcmV?d00001