react服務端渲染(同構)

來源:互聯網
上載者:User

標籤:

學習react也有一段時間了,使用react後首頁渲染的速度與seo一直不理想。打算研究一下react神奇服務端渲染。

react服務端渲染只能使用nodejs做服務端語言實現前後端同構,在後台對react組件進行解析並產生html字串後返回視圖頁面。

後台為什麼可以解析react組件?因為Node.js是一個Javascript運行環境,nodejs與javascript文法基本是相同的,所以nodejs可以正常解析react組件。

一、準備動作

 1、安裝nodejs與安裝express

  安裝nodejs教程:http://www.cnblogs.com/pigtail/archive/2013/01/08/2850486.html

  安裝express教程:http://www.expressjs.com.cn/starter/installing.html

 2、安裝node-jsx(使nodejs支援jsx文法)

  $ npm install node-jsx

 3、安裝ejs模板引擎

  $ npm install ejs

 4、選用ejs模板引擎解析html視圖檔案(配置express架構應用的app.js),需修改配置如下:

1 var ejs = require(‘ejs‘);2 app.engine(‘.html‘,ejs.__express);   //使用ejs模板引擎解析html視圖檔案3 app.set(‘view engine‘, ‘html‘);   

二、具體實現如下:

express路由:

 1 "use strict"; 2 var express = require(‘express‘); 3 var router = express.Router(); 5 require("node-jsx").install();   //安裝"node-jsx",安裝該模組可以使nodejs相容jsx文法 6 var React=require("react"); 7 var Com=require(‘../component/test.js‘).Component //引入react組件 8 router.get(‘/‘, function(req, res, next) { 9   var html=React.renderToString(Com({name:"dudeyouth"}))   //向組件傳參,並使用renderToString方法解析成html字串10   res.render("index",{component:html});  //渲染到介面11 });12 module.exports = router;

react組件:

 1 "use strict"; 2 var React=require("react"); 3 var Component=React.Component; 4 class Test extends Component{ 5     render(){ 6         return <h1>{this.props.name}</h1>; 7     } 8 } 9 module.exports={"Component":function(props){10     return <Test {...props}/>11 }};

 

視圖(使用了ejs模板引擎):

 1 <html> 2     <head> 3         <title>DudeYouth部落格</title> 4         <meta charset="utf-8" /> 5         <link href="css/index.css" rel="stylesheet"/> 6         <link href="css/style.css" rel="stylesheet"/> 7     </head> 8     <body> 9     <div id="container"><%-component%></div> <!--使用ejs模板解析後的html字串-->10     </body>11 </html>

 

react服務端渲染(同構)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.