Weex从入门到放弃

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Weex开发文档

概述

概述

WEEX的出现让我们可以使用Vue来进行移动端原生应用开发,是前端小伙伴们必备技能。 Android也可以学习,增加我们的技术栈。

与 Web App、Html5 App 或 hybrid App 不同,您可以使用 Weex 构建一个真正的原生应用(我都不明白为什么一定强调“原生”)。更贴心的是你的代码只需使用 HTML、CSS、JavaScript 可以构建原生应用,上手非常简单。但实际上,应用的底层是 Objective-C 或 Java, 同时Weex 提供很多 native 组件或模块供开发人员使用。也就是说,你会前端知识,想作真正的app,那你学习Weex就对了。

哪些公司在用

阿里系的公司基本都在用,包括天猫、淘宝、钉钉等。现在尤大神担当的WEEX的顾问,所以说有必要系统的学习一下Weex。虽然Weex目前已经捐赠给了Apache,但是阿里的人员一直做着贡献。

需要的前置知识

  • Vue的基础知识,这也算一个最高的门槛了,但是幸运的是可以免费学到。
  • 会安装Node和使用npm(cnpm)进行包管理。
  • 会基本的CSS和JavaScript的知识。

搭建开发环境

系统要求:

首先是系统建议,如果你用windows系统,我建议你升级到win10,因为在win7下安装由于权限的原因,你有可能会安装失败。经过几次尝试,发现win10安装还是比较顺利的。

安装node:

在系统安装好后,你需要先安装Node。这个过程比较简单,所以没什么讲的。 下载地址:https://nodejs.org/en/download/ 推荐使用LTS版本,不建议使用CURRENT版本。 国内做好使用淘宝的npm镜像: 命令:

npm config set registry= https://registry.npm.taobao.org

也可以用cnpm,并使用淘宝的npm镜像: 命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装完成后查看版本:

node安装完成后我们最好在命令行工具中检测一下版本。 node检测:

node -v

npm检测:

npm -v

安装Java环境

这里不在细讲,略过。

git的安装

windows带的命令行工具不是很友好,而且我们在学习WEEX时会用到Git的命令,所以这里需要安装一下Git。需要把git路径加入环境变量path路径中。

Git的下载地址:https://git-scm.com

安装weex-toolkit

安装weex-toolkit需要使用npm进行安装。 命令:

npm install weex-toolkit -g

在安装weex时,可能出现权限问题,所以以管理员的身份来安装。(有人说安装weex-toolkit的时候,尽量不要用cnpm,有失败的经历)完成安装后,你可以使用命令:weex -v 检测是否安装成功。

安装全局webpack 使用npm 安装webpack,如果安装比较慢,可以使用cnpm来安装。 命令:

npm install webpack -g

安装好后,使用webpack -v进行版本查看。

安装android-studio以及配置: 这个不再讲解,记录一下sdk路径。

配置环境变量:

打开环境变量路径:控制面板->系统和安全->系统->高级系统设置->环境变量。 新建:ANDROID_HOME 并把我们刚才赋值的sdk路径作为值插入。

添加platform-tools和tools到path下

开发工具:

可以用Weex IDE工具,是官方为weex开发者提供更专业的一站式开发工具。从项目创建到编码、预览、调试,带给你沉浸式的开发体验。基于VSCode开发的,比较省心。 下载地址:https://weex.apache.org/zh/tools/ide.html 使用说明:https://weex.apache.org/emas-studio.html

也可以使用VSCode,通过安装拓展包来开发Weex:

  • weex-new-project - 用于在VSCode中创建Weex项目。
  • weex-lang - 用于在VSCode中对最新的Weex语法进行支持。
  • weex-doctor - 用于检查iOS和Android本地开发环境。
  • weex-debugger - 用于在VSCode中启动Weex调试工具。
  • weex-run - 用于在热更新模式下启动Android及iOS工程。

你可以通过安装 vscode-weex 拓展来安装上面的所有包。

建立weex项目目录:

创建项目请使用以下命令:

weex create awesome-project

(输入完这条命令时,如果你没有安装weexpack,他会提醒你进行安装,这个weexpack也可以自己单独安装npm install weexpack -g。 )

在命令行(cmd)情况下,步骤如下:

D:\Weex-space>weex create button_demo
? Project name (button_demo)

此步是项目的名称,输入为输入的名称,不输入则为括号内的名称;

? Project description (A weex project)

此步是为项目添加描述,输入为输入的描述,不输入则为括号内的内容;

? Author (deepSprings)

此步是为项目添加作者,输入为输入的内容,不输入则为括号内的内容;

? Select weex web render (Use arrow keys)
> 1.0.17 Current: latest features
  0.12.17 LTS: recommended for most users

此步为项目选择weex web的渲染器,推荐选择第二项;

? Babel compiler (https://babeljs.io/docs/plugins/#stage-x-experimental-presets) (Use arrow keys)
> stage-0: recommended for most users, support you to use all es6 syntax
  stage-1
  stage-2
  stage-3

此步为选择Babel compiler(js编译器)?选项有4个,按推荐选择第一个“stage-0”,支持所有es6语法;

? Use vue-router to manage your view router? (not recommended) (y/N)

此步为是否使用vue路由来管理界面路由,我这里没按推荐选择,vue-router是官方路由,个人推荐使用;

? Use ESLint to lint your code? (Y/n)

此步为是否使用ESLint管理代码,ESLint是个代码风格管理工具,是用来统一代码风格的,并不会影响整体的运行,这也是为了多人协作,新手就不用了,一般项目中都会使用;

? Pick an ESLint preset (Use arrow keys)
> Standard (https://github.com/standard/standard)
  Airbnb (https://github.com/airbnb/javascript)
  none (configure it yourself)

此步为选择一个ESLint预设,编写vue项目时的代码风格,因为选择了使用ESLint,所以有此选项:

  • Standard (https://github.com/feross/standard) 是js的标准风格
  • AirBNB (https://github.com/airbnb/javascript) 一种最合理的JavaScript方法
  • none (configure it yourself) 这个是自定义风格
? Set up unit tests (Y/n)

此步为是否安装单元测试;

? Should we run `npm install` for you after the project has been created? (recommended) (Use arrow keys)
> Yes, use NPM
  Yes, use Yarn
  No, I will handle that myself

此步为项目创建后是否要为你运行“npm install”? 这里选择包管理工具

  • yes,use npm(使用npm)
  • yes,use yarn(使用yarn)
  • no,I will handle that myself(自己操作);

推荐选择no,结束后用cpnpm install,否则用npm install是真的慢;

如果你没有安装weexpack这个过程会慢一点,请耐心等待。等出现Creating a new weex project.说明项目构建完成了,我们可以到项目目录中去看一下。

你会发现已经给我建立了项目所需要的基本结构和文件,这时候我们就可以cd到项目目录下,然后使用npm install安装依赖包了。

如果你感觉慢的话,你也可以使用cnpm install ,但是要说的是cnpm 有时候会安装错误,这也算一个小坑吧。如果你用npm进行安装时间会很长,并且在安装完成后会有一些WARN警告,你可以暂时忽略这些警告。

添加Android应用支持:

我们建立好了项目的基本目录,这时候我们还要添加平台的支持,这里我们添加Android的支持。

weex platform add android

这个安装过程并不算长,安装好后可以去项目根目录的platforms下看到android文件夹,说明应用支持添加成功。

发布Android应用:

想在写完一段代码时进行预览效果,这时候就要使用run命令了。

weex run android

这里是有一个坑,在命令执行完,它会报一个错误,错误是找不到安装设备。No android devices found。如果你自学这个坑会够你添一会的了,那这里我们安装的android-studio就排上用途了。

在Android Studio里运行weex:

选择你用weex创建的项目下的platforms/android目录,打开项目。这时候坑就来了,会报好多错误,但是你不要惊慌,双击安装就好。

这个过程时间长短会根据你网络状况和机器配置有关,如果网络不好,可能要安装1-2个小时,所以耐心等待。

Weex常用命令:

了解一下weex中常用的npm命令。这些npm xxx的命令,其实都是在package.json里设置的。你可以看到如下代码:

"scripts": {
    "start": "npm run serve",
    "build": "webpack --env.NODE_ENV=common",
    "build:prod": "webpack --env.NODE_ENV=production",
    "build:prod:web": "webpack --env.NODE_ENV=release",
    "build:plugin": "webpack --env.NODE_ENV=plugin",
    "clean:web": "rimraf ./release/web",
    "clean:ios": "rimraf ./release/ios",
    "clean:android": "rimraf ./release/android",
    "dev": "webpack --env.NODE_ENV=common --progress --watch",
    "unit": "karma start test/unit/karma.conf.js --single-run",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src  test/unit --fix",
    "serve": "webpack-dev-server --env.NODE_ENV=development --progress",
    "ios": "weex run ios",
    "web": "npm run serve",
    "android": "weex run android",
    "pack:ios": "npm run clean:ios && weex build ios",
    "pack:android": "npm run clean:android && weex build android",
    "pack:web": "npm run clean:web && npm run build:prod:web"
  }

在代码中你会看到build、build_plugin、dev、serve这些属性,这些就是我们常用的npm命令。

npm run dev

我们在开始项目编写时,第一个要在命令行输入的命令就是这个,这个命令输入后,会给我们进行实时的压缩混淆操作(也叫编译操作),生成dist目录下的index.js文件和index.web.js文件。

命令开启后,我们每次修改src下的文件会自动给我们编译。所以我们在开发时需要最先开启下面的命令。

npm run server

虽然可以用Android Studio进行看效果,但是我们还是需要一个web端来支持我们开发预览的,这时候我们可以启用npm run server来解决问题,他会给我们在浏览器中打开我们的vue页面。

修改的时候,没有热更新预览;刷新也是没有任何效果的,必须再次在命令行中输入webpack才能预览到我们想要的结果。

npm run build

在运行webpack时,发现npm run build里的命令执行的就是webpack命令,那我们改造一下,我们在代码中加上--watch

"scripts": {
    "start": "npm run serve",
    "build": "webpack --env.NODE_ENV=common --watch",
    "build:prod": "webpack --env.NODE_ENV=production",
    "build:prod:web": "webpack --env.NODE_ENV=release",
    "build:plugin": "webpack --env.NODE_ENV=plugin",
    "clean:web": "rimraf ./release/web",
    "clean:ios": "rimraf ./release/ios",
    "clean:android": "rimraf ./release/android",
    "dev": "webpack --env.NODE_ENV=common --progress --watch",
    "unit": "karma start test/unit/karma.conf.js --single-run",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src  test/unit --fix",
    "serve": "webpack-dev-server --env.NODE_ENV=development --progress",
    "ios": "weex run ios",
    "web": "npm run serve",
    "android": "weex run android",
    "pack:ios": "npm run clean:ios && weex build ios",
    "pack:android": "npm run clean:android && weex build android",
    "pack:web": "npm run clean:web && npm run build:prod:web"
  }

这时候你修改代码后,只要刷新浏览器就可以实现更新了,已经不用再次输入webpack命令了。

自动热更新

如果你了解webpack的话,一定知道webpack-dev-server模式,只要在地址栏上加上这个,就可以实现热更新了。如果你还不了解webpack可以先看看我以前的课程。

现在可以关掉npm run dev 这个窗口了,我们只通过npm run build和 npm run serve就可以实现开发热更新预览了。

Android端预览

我们先打开我们的Android Studio,启动AVD。把我们在工程项目里的dist/index.js文件内容,复制到Android Studio下的app/assets/dist/index.js中。

保存后,点击工具栏上的⚡(闪电)符号进行更新。就可以预览到原生的真实效果了。没有像浏览器那样自动热更新。

至此,weex的环境和Android开发的环境都已搭建完成,并且第一个项目也已经完成,也能够在Android设备上运行。

Weex和Vue的区别

weex组件:

weex组件是我们用Vue的语言和weex特定的语法编写,通过编译最后生产的是APP原生的组件。这和我们学习Vue的组件有些不同,Vue组件主要是要进行复用和封装的,而这里是为了编译生产原生组件。

布局的不同 flex布局:

在html或者Vue中我们可以使用浮动布局,但是weex并不支持,所以请不要使用。weex提倡使用Flex进行布局。

不支持百分数:

html中布局,经常使用百分比进行布局,这种布局可以适应不同屏幕,但是你用weex布局时百分比是不支持的。

border设置请分开写:

在html中我们写边框样式,经常使用border:1px solid #ccc;这样的形式,但是weex同样不支持,它要求你必须分开写,并且和html中不同。 有了这个经验,在开发中写CSS,尽量分开写,不要合并起来写。

长度单位只支持px:

是不是觉的这个有点奇葩,其实如果你了解原生应用的dpi单位,那这里的px是和dpi单位相对应的。所以你也不用纠结。使用就可以了,需要注意的是请不要再使用我们的rem,em,pt进行布局了。 如果你想了解一下dpi的知识,我推荐一篇文章:http://blog.csdn.net/yuzhouxiang/article/details/7283931

学习资料

在线开发使用使用: Weex Online Editor

官方文档:指南、文档、工具

weex视频:WEEX免费视频教程-从入门到放肆 (共17集)

Vue视频:

  • 【第一季】Vue2.0视频教程-内部指令(共8集)
  • 【第二季】Vue2.0视频教程-全局API(共9集)
  • 【第三季】Vue2.0视频教程-选项(共6集)
  • 【第四季】Vue2.0视频教程-实例和内置组件(共4集)
  • 技术胖的Vue-cli 视频教程
  • 技术胖的Vue-router视频教程

Weex Ui(一个基于 Weex 的富交互、轻量级、高性能的 UI 组件库): https://alibaba.github.io/weex-ui/#/cn/

BUI-weex (一套专门为 Weex 前端开发者打造的一套高质量UI框架): http://dev.bingocc.com/buiweex/

水滴-ui (一个轻量级weex UI组件库,包含表单元素,tabbar,picker城市三级联动选择,actionsheet,switch等一系列常用组件): https://github.com/hbteam/weex-droplet-ui

转载于:https://my.oschina.net/deepSprings/blog/3035992

你可能感兴趣的:(Weex从入门到放弃)