Reative Native是著名設社交網絡公司Facebook旗下的一款旨在實現虛擬Virtual交互到Native交互層高效交互的View層框架,經過虛擬DOM UI來轉爲Native UI,經過JSX實現Javascript,IOS,Android原生開發語言的交互,充當一種橋樑(Bridge)的角色,相似一種交叉編譯。javascript
雖然不能跨平臺應用,但能在各平臺上實現各自的代碼,但統一的風格,高效的開發受到衆多跨平臺。css
學習網站:html
React Nativereact
React Native Github地址
jquery
ReactJs官網git
示例代碼github
先來看看最簡單的代碼react-native
<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <!------------start:開發中必須使用的3個js庫---------------> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> <!------------end:開發中必須使用的3個js庫---------------> </head> <body> <div id="example"></div> <!--使用特定的script type--> <script type="text/babel"> //首先定義一個UI組建類 var Hello = React.createClass({ render: function() { //css樣式使用駝峯寫法,如className return <div className="commentBox">Hello {this.props.name}{this.props.myAge}</div>; } }); <!--渲染虛擬節點,而且將虛擬節點添加到指定div,注意,這裏沒有標準屬性,一切屬性屬於自定義--> ReactDOM.render( <Hello name="World" myAge="20" />, document.getElementById('container') ); </script> </body> </html>
固然,咱們也可使得代碼和UI分離api
html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> <script src="../build/jquery.min.js"></script> <!--load appjsx到頁面,注意,默認狀況下不會load,除非改html放到服務器下--> <script type="text/babel" src=js/app.js> </script> </head> <body> <div id="example"> </div> </body> </html>
app.js---注意,舊版本是app.jsx
class RepoList extends React.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>; } else if (this.state.error !== null) { return <span>Error: {this.state.error.message}</span>; } else { var repos = this.state.data.items; var repoList = repos.map(function (repo) { return ( <li><a href={repo.html_url}>{repo.name}</a> ({repo.stargazers_count} stars) <br/> {repo.description}</li> ); }); return ( <main> <h1>Most Popular JavaScript Projects in Github</h1> <ol>{repoList}</ol> </main> ); } } } //獲取js輸入,並賦值給promise,注意數據結構是 promise={{....}} ReactDOM.render( <RepoList promise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')} />, document.body );