热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Weex学习之旅——hotreload

简介阿里新出的weex,我一个做android的也过来凑个热闹,自己做了一个简单的demo,是一个知乎新闻+日记的APP,功能比较简单,代码也是最基本的写法和用法,初学weex的童鞋们可以

简介

阿里新出的weex,我一个做android的也过来凑个热闹,自己做了一个简单的demo,是一个知乎新闻+日记的APP,功能比较简单,代码也是最基本的写法和用法,初学weex的童鞋们可以参考使用学习一下。

一些童鞋在学习、调试weex的时候非常头疼,每次修改完代码之后,要么扫一下二维码,要么手动刷新一下,很耽误时间。这个demo实现了hot reload,即修改代码,保存后,app端可以直接看到效果。
大概原理,需要启动hot reload端口,即weex xxx.we命令,这个服务启动以后,java添加websocket监听命令,就可以监听到we文件的改变。文件改变的时候,重新render你已经开启的12580端口服务,就是你js打包上传到的服务,这样,就可以实现实时刷新的功能。

使用方法

1、项目地址

2、配置环境

这个大家可以从weex官网去看。weex官网

3、运行项目
首先需要:

npm install

装好node_modules之后,第一次命令如下:

npm run build

然后用studio打开playground代码,把MainActivity.java中的代码

    @Override
    protected String getHost() {
        return "10.12.65.114";
    }

中的return的string修改成你pc的ip就可以了。

把MainActivity.java中的代码

@Override
    protected String setHotRefreshUrl() {
        return "main";
    }

中return的string修改成你要调试的we文件的名字就可以了。

启动watch服务以及debug服务命令如下:

npm run dev

最新增加hot reload功能,修改完代码后,可以在android上直接看到效果。
打开命令行,进入目录src下,执行(weex后面增加的是你要调试的文件名,如果你修改了文件名,只要把下面对应的文件名修改一下就可以了)

weex main.js
  • 使用android studio打开playground,运行app,修改代码,就可以直接看到效果了。
  • 如果更改代码没有效果,点一下app右上角的刷新按钮,也可以立即看到效果。

遇到的坑

下面这些问题就是我在做weextwo的时候遇到的问题。

1、运行调试

我这里使用的方法其实就是讲生成的js文件放到android中运行的,当然weex是支持类似RN那样,pc作为服务器将生成的bundle分发到真机上,只要修改代码,真机就可以立即看到结果。
不过weex文档有点乱,所以相关东西还没开始写,大家可以去探究探究。

2、网络请求

网络请求返回的数据格式问题,这个主要是要会weex debug,对js加断点,调试,还要主要method和created、ready是两个范围的函数(切忌不要把created方法写到method中),method是你自己要定义的方法,created和ready是weex自带的声明周期方法。
因为weex还没有很好的开发工具,所以我暂时用的webstorm,但是webstorm无法自动化we的格式,所以我当时在写第一个界面的时候就卡住了,一直没有进行我created中的方法,后面才发现,原来自己把created写到method中去了,大家一定要注意了。

3、list的坑

list的每个item点击传入一个id的时候,通过var itemid = e.target.attr.newsid来获取组件中newsid参数值,这种方式遇到一个非常非常奇葩的坑。就是如果这个组件是你自己定义的话,没法获取到,必须是要原生的组件才能获取的到,具体原因还未查明。

4、文档错误

1)webview和imageview的时候,src前面还有一个:,怪不得我开始一直检查不到问题,还有目前webview好像还不支持显示html的功能。

2)textarea和input中需要监控change和input的时候,input的写法是
Oninput=“onTextAreaChange”,并不是文档中那种写法,试过,不行。

5、this的作用范围

this的范围不包括回调函数,所以如果要在回调函数中改变data中的数据,我们需要在函数中声明一个局部变量,使self=this,这个self的作用范围就在回调函数中。

6、storage问题
因为你存储或者获取的时候都是在回调函数中获取的,这是一个异步的过程,所以你不能在执行完一个函数之后,直接在下面的过程中,使用回调得到的结果,这个时候回调的结果可能还没拿到,所以下面的过程都要放到回调函数中去。这个地方坑了我老半天。

需要解决的问题

  • 日记保存后并没有立马生效,需要点击退出之后重新进app才能生效,因为weex的生命周期没有像android onresume生命周期,所以我暂时还没修改。
  • 长按删除,也是没有立马生效,同上原因。
  • 界面没有适配(weex没有dp单位),不同分辨率 界面看起来也不同。

效果

好了,最后我们看一下,我们app的运行效果吧!

新闻列表

新闻详情

日记列表

写日记

还有上拉和下拉刷新,我没有截图下来,大家可以去试试。

项目源码


推荐阅读
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 深入解析ES6至ES8的新特性与应用
    本文详细介绍了自2015年发布的ECMAScript 6.0(简称ES6)以来,JavaScript语言的多项重要更新,旨在帮助开发者更好地理解和利用这些新特性进行复杂应用的开发。 ... [详细]
  • 本文探讨了如何在Android应用中实现图片的保存至外部存储,并通过原生方式分享这些图片。主要介绍了保存图片的不同策略以及通过Intent进行文件分享的具体步骤。 ... [详细]
  • 本文通过探讨React中Context的使用,解决了在多层级组件间传递状态的难题。我们将详细介绍Context的工作原理,并通过实际案例演示其在项目中的具体应用。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
author-avatar
MrSydi2u_604
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有