- 只含有运行时的构建版本
- 平台的差异
- 执行环境
- 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% |