weex快速入门

我发现好多人竟然在不停地问weex的官方网址 https://weex.apache.org/cn/

什么是weex

引用官方的话

Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能、可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API,这样一来,你甚至可以使用其他框架驱动 Weex,打造三端一致的 native 应用。

什么意思
叫他框架有失不妥,如他官方所说这是一个解决方案,他统一了不同终端写一段代码然后在不同终端上运行,有一点点Java的味道,write once run anywhere ,我们知道Java能够在各个平台上运行的原因是java有一个非常牛逼java虚拟机运行,他保证了java程序能够迅速,,鲁棒、安全的运行再各个平台,而,weex,也是如此,我们可以向编写web界面一样先编写we文件, 然后通过转换命令将这个we文件转换成js文件,而每个weex事先在Android,iOS,yunos 的 app中嵌入了js引擎,app启动时,js引擎动态根据js文件生成native控件,来和用户互交

废话少说,下面就进行环境搭建

  1. 安装nodejs 具体如何安装nodejs请移步官网 https://nodejs.org/en/
    安装完成后检测是否安装成功
> $ node -v

v6.3.1
$ npm -v
3.10.3

注意 : npm 是一个 JavaScript 包管理工具,在安装完nodejs, npm 也会被同时安装上 它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

2 安装 weex 命令

$ npm install -g weex-toolkit
$ weex -v
v1.0.3
weex-builder : v0.2.4
weex-previewer : v1.3.4

检测weex 是否安装成功

$ weex -v
v1.0.4

  • weex-builder : v0.2.6
  • weex-previewer : v1.3.7

至此weex环境搭建完成

将weex集成到现有的项目中

集成有两种方式
  1. 源码依赖:能够快速使用WEEX最新功能,可以根据自己项目的特性进行相关改进。
  2. SDK依赖:WEEX 会在jcenter 定期发布稳定版本。jcenter注:国内可能需要翻墙

tips :我这里配置第一种,为啥,因为对于新手简单啊.

前期准备

已经安装了JDK version>=1.7 并配置了环境变量
已经安装Android SDK 并配置环境变量。
Android SDK version 23 (compileSdkVersion in build.gradle
)
SDK build tools version 23.0.1 (buildToolsVersion in build.gradle
)
Android Support Repository >= 17 (for Android Support Library)

不啰嗦,as新建Android项目 将下面依赖放入app.build中

compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.alibaba:fastjson:1.1.46.android'
compile 'com.taobao.android:weex_sdk:0.11.0@aar'

注意不要乱改版本,目前weex还处于不稳定中,各个版本可能还不兼容,避免出现没必要的bug

代码实现

照葫芦画瓢不要问我为撒,

图片接口实现
<pre>
package com.weex.sample;
import android.widget.ImageView;
import com.taobao.weex.adapter.IWXImgLoaderAdapter;
import com.taobao.weex.common.WXImageStrategy;
import com.taobao.weex.dom.WXImageQuality;
/**

  • Created by lixinke on 16/6/1.
    */
    public class ImageAdapter implements IWXImgLoaderAdapter {
    @Override
    public void setImage(String url, ImageView view, WXImageQuality quality, WXImageStrategy strategy) {
    //实现你自己的图片下载,否则图片无法显示。
    }
    }

</pre>

初始化Application
<pre> package com.weex.sample;
import android.app.Application;
import com.taobao.weex.InitConfig;
import com.taobao.weex.WXSDKEngine;
/**

  • 注意要在Manifest中设置android:name=".WXApplication"
  • 要实现ImageAdapter 否则图片不能下载
  • gradle 中一定要添加一些依赖,否则初始化会失败。
  • compile 'com.android.support:recyclerview-v7:23.1.1'
  • compile 'com.android.support:support-v4:23.1.1'
  • compile 'com.android.support:appcompat-v7:23.1.1'
  • compile 'com.alibaba:fastjson:1.1.45'
    */
    public class WXApplication extends Application {
    @Override
    public void onCreate() {
    super.onCreate();
    InitConfig config=new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build();
    WXSDKEngine.initialize(this,config);
    }
    }
    </pre>
    注意不要忘了配置manifast文件Application节点的name属性

开干第一个weex界面
<pre> package com.weex.sample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.taobao.weex.IWXRenderListener;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.common.WXRenderStrategy;
import com.taobao.weex.utils.WXFileUtils;
public class MainActivity extends AppCompatActivity implements IWXRenderListener {
WXSDKInstance mWXSDKInstance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWXSDKInstance = new WXSDKInstance(this);
mWXSDKInstance.registerRenderListener(this);
/**
* WXSample 可以替换成自定义的字符串,针对埋点有效。
* template 是.we transform 后的 js文件。
* option 可以为空,或者通过option传入 js需要的参数。例如bundle js的地址等。
* jsonInitData 可以为空。
* width 为-1 默认全屏,可以自己定制。
* height =-1 默认全屏,可以自己定制。
*/
mWXSDKInstance.render("WXSample", WXFileUtils.loadFileContent("hello.js", this), null, null, -1, -1, WXRenderStrategy.APPEND_ASYNC);
}
@Override
public void onViewCreated(WXSDKInstance instance, View view) {
setContentView(view);
}
@Override
public void onRenderSuccess(WXSDKInstance instance, int width, int height) {
}
@Override
public void onRefreshSuccess(WXSDKInstance instance, int width, int height) {
}
@Override
public void onException(WXSDKInstance instance, String errCode, String msg) {
}
@Override
protected void onResume() {
super.onResume();
if(mWXSDKInstance!=null){
mWXSDKInstance.onActivityResume();
}
}
@Override
protected void onPause() {
super.onPause();
if(mWXSDKInstance!=null){
mWXSDKInstance.onActivityPause();
}
}
@Override
protected void onStop() {
super.onStop();
if(mWXSDKInstance!=null){
mWXSDKInstance.onActivityStop();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(mWXSDKInstance!=null){
mWXSDKInstance.onActivityDestroy();
}
}
}
</pre>

附上我集成好的一个app demo
https://github.com/meijingkang/WeexTest.git
为了更加快速的入门(其实你已经入门了) 算了,为了你更快速的开干,我继续吐槽点东西

安装plugin

进入Androidstudio->setting->plugin 搜索weex 安装重启as

建立自己的界面

点项目的asset目录(如果没有就先新建asset目录)new新建we文件,文件名字随便起我这里起名hello.we
拷贝控件,
<pre>
<template>
<div>
<div>
<text>cover</text>
<image resize="cover" class="cover" src="https://img.alicdn.com/tps/TB1z.55OFXXXXcLXXXXXXXXXXXX-560-560.jpg"></image>
</div>
<div>
<text>contain</text>
<image resize="contain" class="contain" src="https://img.alicdn.com/tps/TB1z.55OFXXXXcLXXXXXXXXXXXX-560-560.jpg"></image>
</div>
</div>
</template>
<style>
.cover {
width:750px;
height:500px;
border-width: 2px;
border-style: solid;
border-color: #ff0000;
}
.contain {
width:750px;
height:500px;
border-width: 2px;
border-style: solid;
border-color: #ff0000;
}
</style>
<script>
</script>
</pre>
进入as的terminal面板

cd app/src/main/assets 目录
weex compile hello.we hello.js
ls

解释下compile命令,这个命令的意思是将hello.we文件转为hello.js文件(app内置的js引擎只能解析js文件)
你会看到路径下多了个js文件,这个文件就是weex生成的供js引擎解析的文件,我们将这个文件配置到这,将c.js替换为你刚才生成的那个js文件

QQ截图20170410110249.png

ok此时全部工作昨晚,你可以预览你自己搭建的界面

关于文件的内容解释我们下一篇博客介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,378评论 25 707
  • WEEX 是阿里推送的一款基于Node.js,轻量级的移动端跨平台动态性技术解决方案,用于构建原生的速度的跨平台...
    满山李子阅读 10,246评论 12 22
  • weex ios 集成WEEX 是阿里推送的一款基于Node.js,轻量级的移动端跨平台动态性技术解决方案,用于构...
    John_LS阅读 1,669评论 0 3
  • 2016年4月21日,阿里巴巴在Qcon大会上宣布开源跨平台移动开发工具Weex,Weex能够完美兼顾性能与动态性...
    晴天咚咚阅读 2,883评论 1 15
  • 以前啊,我总会觉得自己生错了年代,我觉得自己应该过着身骑白马走三关的潇洒生活,可惜了生在现代。不过幸运的是,即使生...
    菜菜小仙女阅读 177评论 0 0