Angular.js、React.js整合
来源:互联网 发布:php7 apache mysql环境 编辑:程序博客网 时间:2024/05/16 08:54
必备知识
Requirejs、Angularjs、Reactjs,可查看本博客写的相关内容进行必备知识了解。
整合Angular.js、React.js
本人在angular.js之爱恨情仇中已提到过Angular.js的性能问题,而React.js基于virtual dom的方式渲染页面,在性能上有不错的表现,所以在系统中整合了React.js。
Requirejs配置
requirejs.config({ baseUrl: '/', paths: { 'jquery': 'libs/jquery-2.1.3/jquery.min', 'angular': 'libs/angular-1.3.15/angular.min', 'React': 'libs/react-0.13.3/react.min', // 使用JSX方式编写React,其依赖以下三个文件 // React JSX 'JSXTransformer': 'libs/react-0.13.3/JSXTransformer', // require jsx 'jsx': 'libs/react-0.13.3/jsx', // require text 'text': 'libs/react-0.13.3/text' }, shim: { 'angular': { deps: ['jquery'], exports: 'angular' }, 'React': { exports: 'React' } }, waitSeconds: 0});
计时器组件Timer
使用Reactjs编写计时器组件Timer。
注意: JSX文件所在目录不要取名为jsx,否则会导致解析失败。
Timer.js
// 依赖名称必须为React(首字母),否则JSX解析后无法找到Reactdefine(['React'], function(React) { var TimeMessage = React.createClass({ render: function() { var elapsed = Math.round(this.props.elapsed / 100); var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' ); // 在此处JSX将解析为return React.createElement("p", null, "React has been successfully running for ", seconds, " seconds."); // 所以依赖名称要为React,否则React -> undefined return <p>React has been successfully running for {seconds} seconds.</p>; } }); var Timer = React.createClass({ getInitialState: function() { return {now: new Date()}; }, componentDidMount: function() { var that = this; setInterval(function() { that.setState({now: new Date()}); }, 50); }, render: function() { var elapsed = this.state.now.getTime() - this.props.start.getTime(); return <TimeMessage elapsed={elapsed} />; } }); return Timer;});
Angular.js使用React组件
define([ 'angularApp', 'React', 'jsx!jsxdir/Timer' // 使用jsx!XXXX形式引入], function ( angularApp, React, Timer) { // 在angular controller中使用React组件,同理在Directive的link中使用 angularApp.controller('welcomeCtrl', ['$scope', function($scope) { var start = new Date(); Timer = React.createFactory(Timer); React.render( Timer({start: start}), // 页面中div元素 document.getElementById('testJSX') ); }]);});
页面效果
1 0
- Angular.js、React.js整合
- Angular.js、React.js整合
- Require.js、Angular.js整合
- Angular.js 与 React.js对比
- angular.js,vue.js,react.js的比较
- JS 开发者:最喜欢 React,Vue.js 比 Angular 值得尝试
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
- 三大 JS 框架的较量:Angular.js 与 React.js 与 Ember.js
- Angular JS
- Angular js
- Angular Js
- angular js
- Angular JS
- angular js
- Angular JS
- Angular JS
- angular.js
- mysql无法远程连接
- 类名.class, class.forName(), getClass()区别
- NSNotificationCenter 的使用详解
- sql profile介绍
- linux-2.6.22.6中uImage生成完全解析
- Angular.js、React.js整合
- 第006讲 多媒体页面 标签汇总
- 欢迎使用CSDN-markdown编辑器
- 如何学习opencv比较有效率
- 黑马程序员---2015.6.14java基础笔记--静态方--静态代码块--单例模式
- iOS学习------监听中心的简单实用
- LayoutParams的使用
- [leetcode] Combination Sum
- Tieria iOS9 新增 UIStackView 官方文档翻译