前端视角的WEEX入门

最近在看关于跨端开发的技术,出现在视野里较多的关键字React Native、WEEX、Flutter,不论宣传的其他亮点再多,也掩盖不了WEEX一份代码三端运行的光芒,但真正想去入手的时候发现资料还真不多。这里总结下在学习WEEX过程中可能会发出的几个疑问:

如何快速创建一个Weex应用

官方提供了一个手脚架命令行工具weex-toolkit用于创建weex项目
全局安装weex-toolkit
$ npm install -g weex-toolkit
创建一个项目使用create命令,按提示输入创建项目
$ weex create my-project
具体也可参照官方提供的文档快速上手

在WEEX中如何做页面跳转(多页应用)

WEEX中提供了一个内置模块navigator来来实现页面切换。
页面跳转需要分端进行,在h5中url为页面链接,在移动APP中的url则为打包后生成的js bundle文件,已跳转一个详情页为例
h5:

var navigator = weex.requireModule('navigator')
navigator.push({
      url: '/detail.html?id=xxxx',
      animated: "true"
});

Android or IOS

var navigator = weex.requireModule('navigator')
navigator.push({
      url: '/detail.js?id=xxxx',
      animated: "true"
});

可以通过weex.config.env.platform变量来获取当前运行的平台,当然在实际项目中这样的跳转方式太麻烦,因为这样我们每个页面切换都需要识别平台。
正确做法可以跟客户端开发的同学商定跳转协议,如客户端拦截到/detail.html时自动去完成detail.js的下载并渲染。

如何使用或扩展一个模块

weex已经内置了部分模块详见weex内置模块
使用方法:

var module = weex.requireModule('模块名')

注册一个模块
如果你引入了 weex-vue-render 这个库,那么在全局能获取到 weex 这个变量,其中提供了 registerModule 方法可以注册模块。

API格式

registerModule
name: {String} 必选,模块名称。
define: {Object} 必选,模块的定义。
meta: {Object} 可选,如果你需要将非 iterable 的属性或方法注册到模块对象里,你才需要用到这个参数,将 { registerType: 'assignment' } 作为 meta 参数传入即可。
下边注册一个名为guide的模块

import Vue from 'vue';
import weex from 'weex-vue-render';
weex.init(Vue);
weex.registerModule('guide', {
  greeting () {
    console.log('Hello, nice to meet you. I am your guide.')
  },
  farewell () {
    console.log('Goodbye, I am always at your service.')
  }
})

使用 guide模块:

// 获取模块
const guide = weex.requireModule('guide')

// 可以直接调用模块中的方法
guide.greeting()
guide.farewell()

当然如果代码是跑在客户端中那么需要客户端同时实现并注册名称参数一样的模块以供调用。
需要说明的是,内置模块是可以重新注册的,也就是覆盖注册,比如内置模块modal中提供了toast方法,但样式不满足实际项目中的视觉需求,因此我们可以重新实现并覆盖。

import Vue from 'vue';
import weex from 'weex-vue-render';
const modal = weex.requireModule('modal')
import toast from '@/components/common/Toast/index'
weex.init(Vue);

weex.registerModule('modal', {
  ...modal,
  toast
})

如何扩展内置组件

以扩展 <sidebar> 为例,首先应该编写组件自身的逻辑:

<!-- sidebar.vue -->
<template>
  <div class="sidebar">
    <slot></slot>
  </div>
</template>

<style scoped>
  .sidebar {
    /* ... */
  }
</style>

<script>
  export default {
    props: [],
    data () {
      return {}
    }
  }
</script>

然后在使用之前,全局注册 <sidebar> 组件:

import Vue from 'vue'
import weex from 'weex-vue-render'
import Sidebar from './path/to/sidebar.vue'
weex.init(Vue)
// 全局注册 sidebar 组件
weex.registerComponent('sidebar', Sidebar)
// 或者使用 Vue.component
Vue.component('sidebar', Sidebar)

附上一个自己写的的包含首页、列表页、详情页|数据请求、页面跳转的简单demo
https://github.com/longyunxia/weex-demo

几个实用的参考链接:

incubator-weex
Weex在达人店的一年实践
weex传参

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

推荐阅读更多精彩内容