3.9 与传统WEB开发的区别
优质
小牛编辑
133浏览
2023-12-01
HTML标签的区别
RX只支持有限的几种固定标签。
- View: 这个可以看做一个DIV,就是一个普通的容器。
- Text: 文本标签,暂时还不支持富文本,所以Text标签里是不能嵌套任何标签。
- Image: 图片标签
- TouchableHightlight: 具有点击事件标签,如果一个元素需要响应点击事件,那么就需要这么一个标签包起来。
- ScrollView: 所有需要能滚动页面需要用一个scrollView来包裹起来
- ListView: 这是个特殊的列表标签,具有多个重复元素的列表显示就应该用这个标签啦。
除了固有的几个标签,为了方便开发,QAP还提供了一套组合的UI组件,具体的使用请查看nuke的文档。
RX的标签还可以无限扩展,除了rx的几个固定标签,还可以自定义无限的标签,每个标签就是自己写的一个组件。 (怎么写相关组件,请查看组件的教程)
JS方面的区别
rx使用了react的语法,所以在开发之前,需要先理解react的语法,同时只支持了es6的写法。
- 不能使用
React.createClass
, 只能使用class MyClass extends Component
的写法
固有属性的赋值方法不同
比如下边3个属性得赋值
getInitialState: function() {
return {
esVersion: `${this.props.name} v1.0`,
clickCounts: 0,
};
},
getDefaultProps: function() {
return {
name: 'ES5Syntax',
year: 2014,
label: 'ClickMe',
};
},
propTypes: {
name: React.PropTypes.string.isRequired,
year: React.PropTypes.number.isRequired, // isRequired:本属性必须被包含,否则会产生 warning
label: React.PropTypes.string
},
需要使用如下的方法定义
state = {
sVersion: `${this.props.name} v1.0`,
clickCounts: 0,
};
static defaultProps = {
name: 'ES6Syntax',
year: 2015,
label: 'ClickMe',
}; // 注意这里有分号,用 `class` 定义的类内部的属性需要用分号 `;` 间隔开,方法不需要。
static propTypes = {
name: React.PropTypes.string.isRequired,
year: React.PropTypes.number.isRequired,
label: React.PropTypes.string.isRequired,
}; // 注意这里有分号
函数指针绑定的不同
es5中,react会把所有类里的函数都绑定一次this, 在es6中,这一切都要自己进行绑定。
class MyClass extends Component {
//利用箭头函数绑定
method = ()=> {
}
method2() {
}
render() {
//利用bind进行绑定
var bind = this.method2.bind(this);
}
}
模板字符串不同
es5中 esVersion: this.props.name + " v1.0",
es6中支持这样 esVersion: ${this.props.name} v1.0
,
CSS方面的不同
CSS与传统的CSS区别比较大,rx中CSS只是一个CSS对象,
比如 传统的css中 定义css
.class {
width: 2323
}
在rx中需要定义为 class = { width: 2323 }
同时,为了方便,定义的时候可以定义为
const styles = {
class: {
width: 2323
}
}
使用上的区别 单个class
<Text style={styles.class} >
多个class
<Text style={[styles.class, style.class2]} >
行内css
<Text style={{width: '2323rem'}} >
行内与class的混用
<Text style={[{width: '2323rem'}, styles.class]} >
CSS的支持属性一览
完整的css属性一览 请查看 支持CSS属性一览