weex官方demo weex-hackernews代码解读(下)
weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android。而weex-hacknews则是weex官方出品的,首个使用 Weex 和 Vue 开发的 Hacker News 原生应用,在项目中使用了 Vuex 和 vue-router等官方组件。本文会分析weex-hacknews的代码,学习如何使用weex进行开发,本文是第二部分,第一部分见(http://www.cnblogs.com/xiaoqi/p/weex-hackernews-code-part1.html)
二、代码分析
将项目里的src导入到IDE里,可以看到代码结构如下:
接上文
- 再来看入口程序
代码如下,注意标红:
6.1 App.vue
代码如下:
定义了一个div作为body容器,router-view作为component容器
@androidback="back"处理了Android返回按钮点击事件,点击返回按钮时,router执行back回退。
6.2 入口程序
通过Vue.util.extend,将router和store注入到所有子组件,这样就可以使用`this.$router`and`this.$store`来访问路由和vuex。
代码最后一行,router.push('/') , 跳转到'/', 根据上篇的内容,会跳转到/top
- 首页
我们来看StoriesView,主要UI代码如下:
几个关键点
7.1 组件通过props属性传递数据
Vues.js可以使用 props 把数据传给子组件,prop 是父组件用来传递数据的一个自定义属性,子组件需要显式地用 props 选项声明 "prop":
我们再来看router.js里的createStoriesView方法,是否恍然大悟?
7.2 子组件
在StoriesView中,包含app-header、story两个子组件,使用时需要import:
7.2.1 app-header 组件
代码如下:
几个关键点:
- @click 处理点击事件,jump是在入口程序里mixin的router跳转函数
- weex里,text用于显示文本元素,可以理解为html里的span
7.2.2 story 组件
<story :story="story"></story>
调用的时候,将story对象作为props传递过去了,我们猜测下,story组件有一个story的props属性,来看代码验证:
不出所料,包含story对象,并且是required,通过该属性将story传递过来。
值得一提的是,这里使用了timeAgo filter,还有extennal-link子组件,v-if条件判断等。
剩下的就是具体的数据绑定,不细说了。
7.2.3 数据加载
- 在入口程序通过Vue.util.extend将store注入,所以在子组件可以使用this.$store访问vuex
- 通过名为stories的computed计算属性访问数据
- 在created(vue.js生命周期,可理解为jq的ready)时,调用fetchListData,实则是调用FETCH_LIST_DATA action,调用前设置loading为true,显示loading;
- 处理成功的话,设置loading = false,loading隐藏。
- loadMoreStories 则是加载更多数据,list列表事件,下滑到底部时触发
其他页面类似,这里就不一 一介绍了
三、小结
weex-hacknews的代码分析就告一段落了,总体感觉:
- Weex 可以让前端开发人员开发native app程序,值得点赞,但缺点是目前坑还比较多,开源社区资源也较少
- Vuejs router应该是简化了开发,推荐使用
- vuex则较难理解,开发复杂度也较高,大家在实际项目中需要酌情考虑是单独维护组件的state,还是使用vuex维护全局的state,推荐中大型的单页应用项目使用vuex
weex官方demo weex-hackernews代码解读(下)的更多相关文章
- weex官方demo weex-hackernews代码解读(上)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
- weex官方demo weex-hackernews代码解读(1)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- c++(vs上)与g++(linux下)对于++操作的汇编代码解读
先来看一个代码,估计很多同学都碰到过其中的某一个. #include <stdio.h> #include <iostream> using namespace std; in ...
- 订餐系统之微信支付,踩了官方demo的坑
最近一个项目要增加微信支付的功能,想来这个东西出来这么久了,按微信提供的应该可以很快搞定的,结果提供的demo( JS API网页支付)中各种坑,咨询他们的客服,态度倒是非常好,就是解决不了问 ...
- Unity 官方 Demo: 2DPlatformer 的 SLua 版本。
9月份时,趁着国庆阅兵的假期,将 Unity 官方 Demo: 2DPlatformer 移植了一个 SLua 版本,并放在了我的 GitHub 账号下:https://github.com/yauk ...
- Jsoup代码解读之三-Document的输出
Jsoup代码解读之三-Document的输出 Jsoup官方说明里,一个重要的功能就是output tidy HTML.这里我们看看Jsoup是如何输出HTML的. HTML相关知识 分析代码前 ...
- Qt5官方demo分析集11——Qt Quick Particles Examples - Affectors
在这个系列中的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集10--Qt ...
- 【EasyUI学习-1】MyEclipse+easyui学习官方Demo
介绍 easyui的介绍,网上很多,这里就不进行介绍了. easyUI获取 官网: http://www.jeasyui.com/ 下载地址:http://www.jeasyui.com/downl ...
随机推荐
- java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig
问题描述: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with n ...
- CentOS6.5安装python redis模块
1.下载安装包https://pypi.python.org/packages/source/r/redis/redis-2.10.3.tar.gz 2.解压tar -zxf redis-2.10.3 ...
- js 设置导航固定
<div id="nav"> .... </div> function Add_Data() { var top = $("#header-nav ...
- Spring与Struts框架整合
Spring与Struts框架整合 Struts,用Action处理请求 Hibernate,操作数据库 Spring,负责对象创建 Spring与Struts框架整合的关键点在与:让Struts框架 ...
- 关于java sort的几种实现方式(单纯排序,按照bean的某一个字段,按照bean的多个字段)
最近的开发过程中遇到了,按照bean类中的多个字段进行排序的情况,借此机会把相关的排序做法,简单整理备份一下. 1.list的单纯排序 2.list元素为bean的情况,按照bean的某一个属性进行排 ...
- DataTable.DataRow的复制
经常遇到这种错误,“此行已属于另一个表”的错误,导致这个错误的语句如下: dtPriceTable.Rows.InsertAt(aDataRow,i); 或者 dtPriceTable.Rows.Ad ...
- HTML5学习笔记三:aside元素,time元素与微格式
一.aside元素 表示当前页面或文章的附属信息部分,相关的引用,侧边栏,广告等有别于主要内容的部分:主要有一下两种用法: 1. 被包含在article元素中作为主要内容的附属信息部分,可以是与当前文 ...
- ImageView及其子类(一)
ImageView继承自View组件,它的主要功能是用于显示图片——实际上这个书法不太严谨因为他能显示的不仅是图片,任何Drawable对象都可以使用ImageView来显示.除此之外,ImageVi ...
- #DP# ----- OpenJudge最大子矩阵
OpenJudge 1768:最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 ...
- 走进React
走进React React是一个构建用户界面的JavaScript库,是Facebook公司在2013年5月在github上开源的.其特点如下: 高效--React通过对DOM的模拟,最大程度地减少和 ...