客户端店铺动态模板化方案——用ReactNative替代传统Velocity方
传统的动态模板技术传统动态模板技术一般分为三个模块,分别是设计师模块、服务端转换模块、渲染模块 设计师模块模板设计后台一般提供给前端工程师,或者外界的美化爱好者,通过拖曳各种控件的方式来实现,并提供一种简单的自定义xml配置方式来提供更深层次的定制化。 语法规范如下:<floor>
<container>
<style>
<attr name="width" value="-1"/>
<attr name="height" value="90"/>
<attr name="backgroundColor"value="#ffffff"/>
</style>
<text value="动态文案">
<style>
<attr name="fontSize"value="15"/>
<attr name="fontWeight" value="500"/>
</style>
</text>
</container>
</floor>
首先必须要有根节点,根节点只有一个,如文档中的,代表一个楼层。与HTML不同,所有标签必须要有闭合标签,可以没有标签之间的内容,但是如果标签没有闭合,则是非法的。 数据转换模块通过将设计师模块中的xml转换为json格式,通过SOA调用的方式提供给另外的App数据下发模块 渲染模块当设计师模块中的xml数据被转换为json后,渲染方式可以有三种
ReactNative来做动态模板ReactNative是由Facebook推出的开源Hybrid方案,相比较于传统的Cordova方案,ReactNative主要是采用了不同于Cordova JS桥接的模式,通过C语言实现高效的JsCore,来实现ECMAScript语法规范的React Js调用原生端,并完整地实现了Android/IOS平台的多种View例如ListView等,同时因为ReactNative便于升级,所以让热更新变得可能,至于ReactNative等插件化的升级方案,我们会在后续介绍。 技术方案实现设计师模块依旧沿用传统方案,因为虽然RN是基于React语法,但是小白设计师并不懂前端,所以还需要沿用xml或者所见即所得的方式让用户实现店铺模板,而转换的模块需要经过以下几个步骤: 1.遍历xml元素,生成React样式的动态JS render: function() {
return (
<View style={styles.container}> <Text style={styles.welcome}> React-Native入门学习 </Text> <Image style={styles.pic} source={{uri: 'https://avatars3.githubusercontent.com/u/6133685?v=3&s=460'}}> </Image> </View> ); }
是不是和我们的xml定义的格式有点类似呢!我们通过深度遍历树状的xml定义的样式和数据,将其转换为ReactNative的Render模块,将原来的布局,转换通过React的Flex布局来实现排版。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |