react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / src / browser / server / ReactServerRendering.js
81158 views/**1* Copyright 2013-2014, Facebook, Inc.2* All rights reserved.3*4* This source code is licensed under the BSD-style license found in the5* LICENSE file in the root directory of this source tree. An additional grant6* of patent rights can be found in the PATENTS file in the same directory.7*8* @typechecks static-only9* @providesModule ReactServerRendering10*/11"use strict";1213var ReactElement = require('ReactElement');14var ReactInstanceHandles = require('ReactInstanceHandles');15var ReactMarkupChecksum = require('ReactMarkupChecksum');16var ReactServerRenderingTransaction =17require('ReactServerRenderingTransaction');1819var instantiateReactComponent = require('instantiateReactComponent');20var invariant = require('invariant');2122/**23* @param {ReactElement} element24* @return {string} the HTML markup25*/26function renderToString(element) {27invariant(28ReactElement.isValidElement(element),29'renderToString(): You must pass a valid ReactElement.'30);3132var transaction;33try {34var id = ReactInstanceHandles.createReactRootID();35transaction = ReactServerRenderingTransaction.getPooled(false);3637return transaction.perform(function() {38var componentInstance = instantiateReactComponent(element, null);39var markup = componentInstance.mountComponent(id, transaction, 0);40return ReactMarkupChecksum.addChecksumToMarkup(markup);41}, null);42} finally {43ReactServerRenderingTransaction.release(transaction);44}45}4647/**48* @param {ReactElement} element49* @return {string} the HTML markup, without the extra React ID and checksum50* (for generating static pages)51*/52function renderToStaticMarkup(element) {53invariant(54ReactElement.isValidElement(element),55'renderToStaticMarkup(): You must pass a valid ReactElement.'56);5758var transaction;59try {60var id = ReactInstanceHandles.createReactRootID();61transaction = ReactServerRenderingTransaction.getPooled(true);6263return transaction.perform(function() {64var componentInstance = instantiateReactComponent(element, null);65return componentInstance.mountComponent(id, transaction, 0);66}, null);67} finally {68ReactServerRenderingTransaction.release(transaction);69}70}7172module.exports = {73renderToString: renderToString,74renderToStaticMarkup: renderToStaticMarkup75};767778