React.js服务器渲染实例(React server side rendering example)

前端之家收集整理的这篇文章主要介绍了React.js服务器渲染实例(React server side rendering example)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

零基础学了快两个月的React了(React-native + React.js),所谓的000基础是指完全不懂JS,CSS,HTML5还有任何相关概念Dom,Server rendering等等。
PS:这里说服务器渲染,是误打误撞了,我刚只是想把Jade Template换掉而已。

本来我一个移动端的,和React.js是不沾边的,但是我学的时候React-native(0.25)教程里有句“我们认为你有Reactjs的相关经验,如果没有,可以学一下”,原文如下:

"We assume you have experience writing applications with React. If not,you can learn about it on theReact website."

技多不加深嘛,既然大神都说了,正好有阿里云可以练手,开搞!!!

改版前:

Express框架,使用的默认模版引擎Jade(新版改名为Pug)。由express-jsx负责将.jsx翻译成对应的.js文件,以便能在jade引用

问题一:名字我已经起不出来了,每一个页面即有.jade和.jsx,自己写的都容易看晕

./views/<layout.jade>

  1. doctype html
  2. html
  3. head
  4. title=title
  5. link(rel='stylesheet',href='/css/style.css')
  6. link(rel='stylesheet',href='/css/bootstrap.min.css')
  7. block head
  8. body
  9. script(src='/js/react.min.js')
  10. script(src='/js/react-dom.min.js')
  11. block content
  12. script(src='/js/jquery.min.js')
  13. script(src='/js/bootstrap.min.js')

./views/<index.jade>

  1. extends layout
  2.  
  3. block content
  4. <div id='content'></div>
  5. script(src='index.js')
  6. script.
  7. 'use strict';
  8. var result = !{param};
  9. ReactDOM.render(React.createElement(Index,{ name: result }),content);

./views/<index.jsx>

  1. var Index = React.createClass({
  2. getInitialState: function () {
  3. return { count: 0 };
  4. },handleClick: function () {
  5. this.setState({
  6. count: this.state.count + 1,});
  7. },render: function () {
  8. return (
  9. <button onClick={this.handleClick}>
  10. Click {this.props.name.name}! Number of clicks: {this.state.count}
  11. </button>
  12. );
  13. }
  14. });
问题二:需要把变量转为json,然后传给jade,再由jade传给react.js

./routes/index.js

  1. var express = require('express');
  2. var router = express.Router();
  3.  
  4. /* GET home page. */
  5. router.get('/',function(req,res,next) {
  6. var jsonStr = JSON.stringify({'name': 'here'},{indent: true});
  7. res.render('index',{ param: jsonStr });
  8. });
  9.  
  10. module.exports = router;
问题三: react-native支持es6,但express默认es5,更何况浏览器支持相当差,同一个项目用量终于发现写特别闹腾,能不能讲react.js项目语法升级下呢?
问题四:加载速度,这也恰恰是服务器渲染能解决的,不过另一个好处SEO,这个我目前到不在意。

改版后:

Express框架,使用模版引擎express-react-views。由webpack负责将.jsx翻译成对应的.js文件(webpack顺带解决了es6语法问题)。

写不动了,感兴趣直接看代码吧:

猜你在找的React相关文章