- 只含有运行时的构建版本
 - 平台的差异
- 执行环境
 - DOM
 - 样式
 - 事件
 
 - Web 渲染器
 - 单文件组件
- 编译目标
 - 使用weex-loader
 
 - 支持的功能
- 全局配置
 - 全局 API
 - 选项
 - 生命周期钩子
 - 实例属性
 - 实例方法
 - 模板指令
 - 特殊属性
 - 内置组件
 
 
Weex 和 Web 的平台差异
Weex 是一个跨平台解决方案,Web 平台只是其一种运行环境,除此之外还可以在 Android 和 iOS 客户端中运行。原生开发平台和 Web 平台之间的差异,在功能和开发体验上都有一些差异。
Weex 环境中没有 DOM
DOM(Document Object Model),即文档对象模型,是 HTML 和 XML 文档的编程接口,是 Web 中的概念。Weex 的运行环境以原生应用为主,在 Android 和 iOS 环境中渲染出来的是原生的组件,不是 DOM Element。
不支持 DOM 操作
原生环境中不支持 Web API,没有 Element 、Event 、File 等对象,详细列表可以参考 Web APIs on MDN。不支持选中元素,如 document.getElementById 、 document.querySelector 等;当然也不支持基于 DOM API 的程序库(如 jQuery)。
Weex 集成到Android应用
在执行以下步骤之前,请先确认您的Android开发环境是ok的。
NDK r16、Cmake 3.9.0+ (可选项:如果需要编译WEEX源码,需要NDK环境支持)
1. 设置gradle依赖
1  | dependencies {  | 
Weex 创建一个app
以下步骤假设您已经了解了 Node.js 和 npm 的基本知识。如果对它们不熟悉,可以访问 https://docs.npmjs.com/ 来了解更多关于 npm 的用法。
Weex 提供了一个命令行工具 weex-toolkit 来帮助开发者使用 Weex。它可以用来快速创建一个空项目、初始化 iOS 和 Android 开发环境、调试、安装插件等操作。
目前 weex-toolkit 只支持创建 Vue.js 的项目。创建 Rax 的项目可以使用 rax-cli,参考 Rax 的官方网站 了解其用法。
初始化
请确保你已经安装了 Node.js,然后全局安装 weex-toolkit。
1  | npm install weex-toolkit -g  | 
这条命令会向你命令行环境中注册一个 weex 命令。你可以用 weex create 命令来创建一个空的模板项目:
1  | weex create awesome-app  | 
命令执行完以后,在当前目录的 awesome-app 文件夹里就有了一个空的 Weex + Vue.js 项目。
Weex 设置开发环境
使用 Weex Online Editor 对 Weex 尝鲜是一个不错的选择,但如果你想更专业的开发 Weex,下面教你如何搭建本地开发环境进行 Weex 开发。
安装依赖
Weex 官方提供了weex-toolkit 的脚手架工具来辅助开发和调试。
首先,你需要 Node.js 和 Weex CLi。
安装 Node.js 方式多种多样,最简单的方式是在 Node.js 官网 下载可执行程序直接安装即可。
更多安装方式可参考 Node.js 官方信息
::: Tip
通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit, 你也可以通过 yarn 来进行安装。
国内的开发者推荐将npm镜像切换至 Taobao NPM 镜像。
:::
运行下面的命令安装最新的beta版本工具:
1  | $ npm install -g weex-toolkit@beta  | 
安装结束后你可以直接使用 weex help 命令验证是否安装成功,它会显示 weex 支持的所有指令,同时,你也可以通过 weex doctor 命令检查你的本地开发环境。
什么是 Weex ?
Weex 是使用流行的 Web 开发体验来开发高性能原生应用的框架。
“Weex” 的发音是 /wiːks/, 和 “Weeks“ 同音。
Write Once, Run Everywhere
Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用。简单来说,在集成了 WeexSDK 之后,你可以使用 JavaScript 语言和前端开发经验来开发移动应用。
Weex 渲染引擎与 DSL 语法层是分开的,Weex 并不强依赖任何特定的前端框架。目前 Vue.js 和 Rax 这两个前端框架被广泛应用于 Weex 页面开发,同时 Weex 也对这两个前端框架提供了最完善的支持。Weex 的另一个主要目标是跟进流行的 Web 开发技术并将其和原生开发的技术结合,实现开发效率和运行性能的高度统一。在开发阶段,一个 Weex 页面就像开发普通网页一样;在运行时,Weex 页面又充分利用了各种操作系统的原生组件和能力。
通讯录获取/添加信息 AddressBook
源码:AddressBook
1  | package com.example.zm.addressbook;  | 
1  | {  | 
Android ANR问题总结
Android_SDK版本号与APILevel的对应关系
一、Android各版本对应的SDK版本
| 平台版本 | API | VERSION_CODE | 备注 | 
| Android 9.0 | 28 | Android P Preview(9.0) | 
平台亮点 | 
| Android 8.1 | 27 | Oreo(8.1) | 
平台亮点 | 
| Android 8.0 | 26 | Oreo(8.0) | 
平台亮点 | 
| Android 7.1 | 25 | Nougat(牛轧糖) | 
平台亮点 | 
| Android 7.0 | 24 | N(牛轧糖) | 
平台亮点 | 
| Android 6.0 | 23 | M(棉花糖) | 
平台亮点 | 
| Android 5.1 | 22 | LOLLIPOP_MR1(棒棒糖) | 
平台亮点 | 
| Android 5.0 | 21 | LOLLIPOP (棒棒糖) | 
|
| Android 4.4W | 20 | KITKAT_WATCH(奇巧巧克力) | 
仅限 KitKat for Wearables | 
| Android 4.4 | 19 | KITKAT (奇巧巧克力) | 
平台亮点 | 
| Android 4.3 | 18 | JELLY_BEAN_MR2(果冻豆) | 
平台亮点 | 
| Android 4.2、4.2.2 | 17 | JELLY_BEAN_MR1(果冻豆) | 
平台亮点 | 
| Android 4.1、4.1.1 | 16 | JELLY_BEAN (果冻豆) | 
平台亮点 | 
| Android 4.0.3、4.0.4 | 15 | ICE_CREAM_SANDWICH_MR1(冰激凌三明治) | 
平台亮点 | 
| Android 4.0、4.0.1、4.0.2 | 14 | ICE_CREAM_SANDWICH(冰激凌三明治) | 
|
| Android 3.2 | 13 | HONEYCOMB_MR2 (蜂巢) | 
|
| Android 3.1.x | 12 | HONEYCOMB_MR1(蜂巢) | 
平台亮点 | 
| Android 3.0.x | 11 | HONEYCOMB (蜂巢) | 
平台亮点 | 
| Android 2.3.4 Android 2.3.3 | 10 | GINGERBREAD_MR1(姜饼) | 
平台亮点 | 
| Android 2.3.2 Android 2.3.1 Android 2.3 | 9 | GINGERBREAD(姜饼) | 
|
| Android 2.2.x | 8 | FROYO(冻酸奶) | 
平台亮点 | 
| Android 2.1.x | 7 | ECLAIR_MR1 (埃克拉) | 
平台亮点 | 
| Android 2.0.1 | 6 | ECLAIR_0_1(埃克拉) | 
|
| Android 2.0 | 5 | ECLAIR(埃克拉) | 
|
| Android 1.6 | 4 | DONUT(甜甜圈) | 
平台亮点 | 
| Android 1.5 | 3 | CUPCAKE(纸杯蛋糕) | 
平台亮点 | 
| Android 1.1 | 2 | BASE_1_1 | 
|
| Android 1.0 | 1 | BASE | 
二、Android各版本的市场占有率和对应JDK版本
| Version | Codename | API | Distribution | 
|---|---|---|---|
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 0.3% | 
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 0.4% | 
| 4.1.x | Jelly Bean | 16 | 1.5% | 
| 4.2.x | Jelly Bean | 17 | 2.2% | 
| 4.3 | Jelly Bean | 18 | 0.6% | 
| 4.4 | KitKat | 19 | 10.3% | 
| 5.0 | Lollipop | 21 | 4.8% | 
| 5.1 | Lollipop | 22 | 17.6% | 
| 6.0 | Marshmallow | 23 | 25.5% | 
| 7.0 | Nougat | 24 | 22.9% | 
| 7.1 | Nougat | 25 | 8.2% | 
| 8.0 | Oreo | 26 | 4.9% | 
| 8.1 | Oreo | 27 | 0.8% |