当前位置: 首页 > news >正文

weex具体安装教程

首先,确保机器已经安装了node.js,并且把npm更新到最新版本

下载完毕后,我们可以看到全局目录下的node_modules下面多出一个weex-toolkit

同时,我们留意到global目录下也多出了weex的执行脚本程序。

输入命令weex –v 参看版本,我们也可以看出weex分为builder和previewer2个东西。

进入工程目录下,执行命令weex create weex01创建项目weex01

 

我们可以看到weex01目录已经创建成功了,Weex 和 Vue 的模板项目创建成功了。

后续将会使用3条命令

npm run dev     【webpack watch 模式,方便开发】

npm run serve    【开启HotReload服务器,代码改动的将会实时同步到网页中】

npm run build     【源码打包,生成 JS Bundle】

先进入项目目录weex01执行 npm install 安装项目依赖

 

 

 

 

 

解压android-studio和android-sdk到d:\java

 

 

配置环境变量

1、给PATH变量,增加(不是替换),增加%ANDROID_SDK_HOME%\platform-tools

 

 

执行studio的执行文件

咨询是否导入原来的配置信息,没有的就选择do not

配置代理服务器(可能随时都变,具体新服务器,从百度找)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

到此基本的android项目已经配置完成了。下面是接入WEEX

V7本来项目就有,所以只需要按照WEEX的文档的要求,添加红色部分的4个依赖,注意修改为对应SDK版本。

点击同步

 

以下是这3个java文件:

package com.example.a536.myapplication;

import android.widget.ImageView;

import com.taobao.weex.adapter.IWXImgLoaderAdapter;
import com.taobao.weex.common.WXImageStrategy;
import com.taobao.weex.dom.WXImageQuality;

/**
 * ImageAdapter.java
 * 实现图片下载,程序初始化时设计
 * 本代码直接复制粘贴即可
 */

public class ImageAdapter implements IWXImgLoaderAdapter {
    @Override
    public void setImage(String url, ImageView view, WXImageQuality quality, WXImageStrategy strategy) {

    }
}
package com.example.a536.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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;

/**
 *MainActivity.java
 * 开始启动我们的界面
 * Render-->渲染
 */

public class MainActivity extends AppCompatActivity implements IWXRenderListener {

    /**
     * onCreate是继承与本事安卓的AppCompatActivity父类的方法
     */

    private WXSDKInstance mWXSDKInstance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWXSDKInstance = new WXSDKInstance(this);
        mWXSDKInstance.registerRenderListener(this);
        mWXSDKInstance.render(
                "WXSample",
                WXFileUtils.loadFileContent("hello.js",this),
                null,
                null,
                -1,
                -1 ,
                WXRenderStrategy.APPEND_ASYNC
                );
    }

    /**
     * onViewCreated是实现IWXRenderListener(渲染器的)方法
     */
    @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) {

    }

    /**以下是安卓自己本身的事件,这4个事件与app停止运行有关**/
    @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();
        }
    }
}
package com.example.a536.myapplication;

import android.app.Application;

import com.taobao.weex.InitConfig;
import com.taobao.weex.WXSDKEngine;

/**
 * WXApplication.java 
 * 程序入口的一关,默认是没有的,
 * 如果有,那先执行它
 */

public class WXApplication extends Application {

    /* 程序启动时自动执行 */
    @Override
    public void onCreate() {
        super.onCreate();
        //这是建造师模式
        InitConfig config = new InitConfig.Builder()
                .setImgAdapter(new ImageAdapter())
                .build();
        WXSDKEngine.initialize(this,config);

    }

    /* 程序结束时,自动执行
     * 一般在这里写:断开数据库,断开wifi,
     * 断开蓝牙,断开GPS等等资源类的东西
      * */
    @Override
    public void onTerminate() {
        super.onTerminate();
    }
}

 

把项目的显示组织,切换到传统的Project模式

切换的目的,在main目录下面,建立一个assets目录(不是android自带)

 

 

 

 

 

编写自己的hello.js

 

 

 

 

 

 

 

 

 

生成出的hello.js 覆盖上文中android studio中的assets目录的文件,重新编译即可。

 

 

 

=============================================================================

如果遇到问题,卸载weex-toolkit再重新安装
卸载命令:npm uninstall weex-toolkit -g
重新安装命令npm install weex-toolkit –g

=============================================================================

命令参考

npm uninstall vue -g

npm uninstall vue-cli -g

npm uninstall vue-router -g

npm uninstall weex-toolkit -g

npm install weex-toolkit -g

e:\

cd weexproject

weex create weex08

cd weex08

npm install

#两种方式

#1.网页热加载

npm run serve

#2.编译成JSBundle文件

cd src

改文件名为index.we

weex index.we --output hello.js

弹出窗口另存js文件(ok)

或者到C:\Users\Administrator\.weex_tmp拷贝index.js

=============================================================================

总结编译中遇到的4大坑

1、npm run build 此版本编译后的dist\index.js用不了

2、weex-toolkit自带的vue跟本身自己下载的vue.js版本不一致,会冲突

3、运行weex index.we --output hello.js 过程中提示更新weex-previewer,

还给出具体命令weex update weex-previewer@1.3.13-beta.13,

千万别操作,会损坏weex-toolkit,变成用不了

4、src中index.vue文件编译后的js用不了,需要把文件名改为index.we编译才成功。

 

转载于:https://www.cnblogs.com/ldm666/p/8109476.html

相关文章:

  • 中科院2018研究生入学考试 数学分析+高等代数
  • canal数据同步目录
  • 原生JS操作DOM
  • knn algorithm--python( classifying)
  • javascript常见问题总结
  • linux中find 查询命令
  • linux svn 使用
  • 【使用Postman测试web接口】Postman的安装与入门
  • 阿里开源了14个核心技术,你了解哪些?
  • 流式大数据处理的三种框架:Storm,Spark和Samza
  • Akka2
  • neo4j入门开发,以及在sns关系中的应用
  • Redis 替代品SSDB Java客户端
  • 获取URL地址中的GET参数
  • hadoop yarn 配置
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES2017异步函数现已正式可用
  • Git学习与使用心得(1)—— 初始化
  • STAR法则
  • tweak 支持第三方库
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 测试如何在敏捷团队中工作?
  • 多线程 start 和 run 方法到底有什么区别?
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 入手阿里云新服务器的部署NODE
  • 算法-图和图算法
  • 微信开放平台全网发布【失败】的几点排查方法
  • 学习ES6 变量的解构赋值
  • 正则与JS中的正则
  • "无招胜有招"nbsp;史上最全的互…
  • #{} 和 ${}区别
  • $.each()与$(selector).each()
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2022 CVPR) Unbiased Teacher v2
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (6)添加vue-cookie
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (多级缓存)多级缓存
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (三)mysql_MYSQL(三)
  • (十一)手动添加用户和文件的特殊权限
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法二)滑动窗口
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 的程序集加载上下文
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET处理HTTP请求
  • @Autowired多个相同类型bean装配问题
  • @Data注解的作用
  • [ C++ ] STL---仿函数与priority_queue
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛