博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Weex-进阶笔记一
阅读量:5919 次
发布时间:2019-06-19

本文共 3141 字,大约阅读时间需要 10 分钟。

JS Framework

JS Framework在初始化阶段被原生JavaScript引擎运行. 它提供被每个JS Bundle调用的 define() 和 bootstrap() 函数. 一旦JS Bundle从服务器下载后,这些函数就会执行. define() 函数以注册模块;bootstrap()会编译主要的模块为虚拟DOM,并发送渲染指令给Native .

JS 和 Native 的沟通主要通过两个关键方法进行:

  • callNative 是一个由native代码实现的函数, 它被JS代码调用并向native发送指令,例如 rendering, networking, authorizing和其他客户端侧的 toast 等API.
  • callJS 是一个由JS实现的函数, 它用于Native向JS发送指令. 目前这些指令由用户交互和Native的回调函数组成.

 

 

 

 

 

Weex 渲染流程

  1. 虚拟DOM.
  2. 构造树结构. 分析虚拟DOM JSON数据以构造渲染树(RT).
  3. 添加样式. 为渲染树的各个节点添加样式.
  4. 创建视图. 为渲染树各个节点创建Native视图.
  5. 绑定事件. 为Native视图绑定事件.
  6. CSS布局. 使用 来计算各个视图的布局.
  7. 更新视窗(Frame). 采用上一步的计算结果来更新视窗中各个视图的最终布局位置.
  8. 最终页面呈现.

在Weex HTML5环境下 CSS 布局 and 更新视窗 由浏览器引擎(例如webkit)实现.

 

 

 

  1. WXDevtool依赖

你的app必须链接下面的frameworks/dylibs

  • libicucore.dylib
  • CFNetwork.framework
  • CoreData.framework
  • Security.framework
  • Foundation.framework

 

 

 

 

Bootstrap

除了其默认的意义,<script>标签支持在页面的顶级组件中通过 type 属性定义两种配置。

  • type="data": 配置初始化数据,这里定义的数据会覆盖定义在<script>中的数据;
  • type="config": 定义配置项。

<script type="data">

  /* (可选) 定义初始化数据 */

</script>

 

<script type="config">

  /* (可选) 定义配置项 */

</script>

 

 

style

为元素定义行内样式。

<div style="width: 200px; height: 200px; color: #ff0000;"></div>

<div style="padding: {

{x}}; margin: 0"></div>

class

为元素定义一个或多个类名(引用样式表中的类)。

<div class="button"></div>

<div class="button {

{btnStatus}}"></div>

 

 

Appear 事件

如果一个位于某个可滚动区域内的组件被绑定了 appear 事件,那么当这个组件的状态变为在屏幕上可见时,该事件将被触发。

事件对象

  • type : appear
  • target : 触发 Appear 事件的组件对象
  • timestamp : 事件被触发时的时间戳
  • direction : 触发事件时屏幕的滚动方向,up 或 down

 

 

Disappear 事件

如果一个位于某个可滚动区域内的组件被绑定了 disappear 事件,那么当这个组件被滑出屏幕变为不可见状态时,该事件将被触发。

事件对象

  • type : disappear
  • target : 触发 Disappear 事件的组件对象
  • timestamp : 事件被触发时的时间戳
  • direction : 触发事件时屏幕的滚动方向,up 或 down

 

 

Page 事件

注意:仅支持 iOS AndroidH5 暂不支持。

Weex 通过 viewappear 和 viewdisappear 事件提供了简单的页面状态管理能力。

viewappear 事件会在页面就要显示或配置的任何页面动画被执行前触发,例如,当调用 navigator 模块的 push 方法时,该事件将会在打开新页面时被触发。viewdisappear 事件会在页面就要关闭时被触发。

与组件的 appear 和 disappear 事件不同的是,viewappear 和 viewdisappear 事件关注的是整个页面的状态,所以它们必须绑定到页面的根元素上

特殊情况下,这两个事件也能被绑定到非根元素的body组件上,例如wxc-navpage组件。

事件对象

  • type : viewappear 或 viewdisappear
  • target : 触发事件的组件对象
  • timestamp : 事件被触发时的时间戳

 

 

 

<content>

<content> 在编写组件模板时作为作为内容节点元素存在,使用时将被真正的元素替换。

替代写法: <slot>

 

 

<div> 组件是用于包装其它组件的最基本容器。支持所有的通用样式、特性、flexbox 布局。其类似于 HTML 的 <div> 容器,但不能直接在里面添加文本(字符串),如果要展示文本,应该使用 <text> 组件。历史版本中,<div> 别名是 <container>,目前已经弃用

 

事件

<div> 支持所有通用事件:

  • click
  • longpress
  • appear
  • disappear

查看

 

子组件

支持任意类型的 Weex 组件作为其子组件。 其中,还支持以下两个特殊组件作为子组件:

  • <refresh>
    用于给列表添加下拉刷新的功能。
    使用文档请查看
  • <loading>
    <loading> 用法与特性和 <refresh> 类似,用于给列表添加上拉加载更多的功能。
    使用文档请查看

扩展

scrollToElement(node, options)

滚动到列表某个指定项是常见需求,<list> 拓展了该功能支持滚动到指定 <cell>。通过 dom module 访问,更多信息可参考

 

 

ViewModel APIs

  • this.$vm(el)
  • this.$el(el)
  • this.$getConfig()
  • this.$emit(type, data)
  • this.$dispatch(type, data)
  • this.$broadcast(type, data)

ViewModel Options

  • data
  • methods
  • computed
  • init, created, ready
  • events

 

 

示例:

module.exports = {

 

  data: function () {

    return {

      x: 1,

      y: 2

    }

  }

 

  methods: {

    foo: function () {

      console.log('foo')

    }

  },

 

  computed: {

    z: function () {

      return this.x + this.y

    }

  },

 

  events: {

    custom: function (e) {

      console.log(e)

    }

  },

 

  init: function () {},

  created: function () {},

  ready: function () {}

}

 

 

在我们开发组件是,一个最佳实践是不要在根元素中添加数据绑定,因为当其他组件引用这个组件时,可能会定义相同命名的数据,造成串扰。这就是我们为什么我们会把 dialog 包裹在一个没有任何特性的 div 中。

转载地址:http://anfvx.baihongyu.com/

你可能感兴趣的文章
树莓派3如何利用SD卡引导系统从U盘启动
查看>>
连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(2)...
查看>>
php5.5 preg_replace_callback 函数
查看>>
java写文件之困惑
查看>>
我的友情链接
查看>>
PHP安全配置
查看>>
DOM基础
查看>>
ubuntu server中sysv-rc-conf可替代chkconfig
查看>>
redhat版本介紹
查看>>
我的友情链接
查看>>
HAproxy的简单安装配置介绍
查看>>
ICMP***与防范
查看>>
Ruby学习网站
查看>>
接口规范 4.直播流相关接口
查看>>
Mysql默认编码修改
查看>>
闲不住的妹子
查看>>
diskpart磁盘管理
查看>>
Ubuntu安装Gnome经典桌面(GNOME 2)
查看>>
简历中的交互设计--转自人人FED
查看>>
开源jumpserver 跳板机搭建
查看>>