最近项目准备使用React作为前端,主要第一比较火,第二比较小。抽空先来学习一下。
首先下载资源文件:压缩后不到50KB,是挺小的哦。
其中:react.js
是 React 的核心库,react-dom.js
是提供与 DOM 相关的功能,react-dom-server.js是服务端渲染dom的功能,react-with-addons是一些插件功能。
好,姑且不管server 和addons,用react和react-dom开始一个尝试一下,使用官方实例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <script src="build/react.js"></script> <script src="build/react-dom.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('example') ); </script> </body> </html>
运行成功不错:
再看看源代码:<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>,React下载包里没有它, 这是啥?
browser.js是babel的浏览器版本,babel又是什么?
babel 是一个javascript编译工具,要编译工具干什么?
再看源代码<h1>Hello, world!</h1>,这是React的jxs语法,js不认识它,所以要借助babel把它翻译成为js识别的代码。
在看<script type="text/babel"> 这里指名使用babel,所以要引用browser.js,不然程序无法执行。
好,不想用它怎么办?
那就使用原生的js或者编译过的js:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>react demo</title> <script src="../src/react-0.14.3/build/react.js"></script> <script src="../src/react-0.14.3/build/react-dom.js"></script> </head> <body> <div id="example"></div> <script type="text/javascript"> ReactDOM.render( React.createElement('h1', null, 'Hello, world!'), document.getElementById('example') ); </script> </body> </html>
去掉browser.js, 修改 <script type="text/javascript">。
补充一点:React之前使用 JSXTransformer 来翻译jsx,其类型为<script type="text/jsx">,从v0.14开始使用babel。babel 不仅可以翻译jsx,也可以编译ES,可能babel使用会给react带来更好的发展,让我们拭目以待。