Reative Native是著名设社交网络公司Facebook旗下的一款旨在实现虚拟Virtual交互到Native交互层高效交互的View层框架,通过虚拟DOM UI来转为Native UI,通过JSX实现Javascript,IOS,Android原生开发语言的交互,充当一种桥梁(Bridge)的角色,类似一种交叉编译。
虽然不能跨平台应用,但能在各平台上实现各自的代码,但统一的风格,高效的开发受到众多跨平台。
学习网站:
示例代码
先来看看最简单的代码
- <!DOCTYPEhtml><html>
- <head>
- <Metacharset="UTF-8"/>
- <title>HelloReact!</title>
- <!------------start:开发中必须使用的3个js库--------------->
- <scriptsrc="../build/react.js"></script>
- <scriptsrc="../build/react-dom.js"></script>
- <scriptsrc="../build/browser.min.js"></script>
- <!------------end:开发中必须使用的3个js库--------------->
- </head>
- <body>
- <divid="example"></div>
- <!--使用特定的scripttype-->
- <scripttype="text/babel">
- //首先定义一个UI组建类
- varHello=React.createClass({
- render:function(){
- //css样式使用驼峰写法,如className
- return<divclassName="commentBox">Hello{this.props.name}{this.props.myAge}</div>;
- }
- });
- <!--渲染虚拟节点,并且将虚拟节点添加到指定div,注意,这里没有标准属性,一切属性属于自定义-->
- ReactDOM.render(
- <Helloname="World"myAge="20"/>,document.getElementById('container')
- );
- </script>
- </body>
- </html>
当然,我们也可以使得代码和UI分离
html
- <!DOCTYPEhtml>
- <html>
- <head>
- <Metacharset="UTF-8">
- <title>Document</title>
- <scriptsrc="../build/react.js"></script>
- <scriptsrc="../build/react-dom.js"></script>
- <scriptsrc="../build/browser.min.js"></script>
- <scriptsrc="../build/jquery.min.js"></script>
- <!--loadappjsx到页面,注意,默认情况下不会load,除非改html放到服务器下-->
- <scripttype="text/babel"src=js/app.js>
- </script>
- </head>
- <body>
- <divid="example">
- </div>
- </body>
- </html>
app.js---注意,旧版本是app.jsx
- classRepoListextendsReact.Component{
- //<!--启用构造函数,传入参数-->
- constructor(props){
- super(props);
- this.state={
- loading:true,error:null,data:null
- }
- }
- //<!--当jsx渲染完成后执行-->
- componentDidMount()
- {
- this.props.promise.then(
- value=>this.setState({loading:false,data:value}),error=>this.setState({loading:false,error:error}));
- }
- //<!--当jsx渲染完成后执行-->
- render(){
- if(this.state.loading){
- return<span>Loading...</span>;
- }
- elseif(this.state.error!==null){
- return<span>Error:{this.state.error.message}</span>;
- }
- else{
- varrepos=this.state.data.items;
- varrepoList=repos.map(function(repo){
- return(
- <li><ahref={repo.html_url}>{repo.name}</a>({repo.stargazers_count}stars)<br/>{repo.description}</li>
- );
- });
- return(
- <main>
- <h1>MostPopularJavaScriptProjectsinGithub</h1>
- <ol>{repoList}</ol>
- </main>
- );
- }
- }
- }
- //获取js输入,并赋值给promise,注意数据结构是promise={{....}}
- ReactDOM.render(
- <RepoListpromise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')}/>,document.body
- );