给初学者的weex教程(一)

前言

随着阿里开源的构建高性能、可扩展的原生应用跨平台开发方案--weex的发布,相信很多人都涌向了这股浪潮中,我也是从RN中抽了一腿出来踏进了这个“坑”中。随着阿里勤奋的开发人员和我们不断踏坑的开发者的填坑,现在weex已经来到V.13.0版本了,相对于刚开始的时候来说是比较完善的了,但是还需要这个不断填坑的过程去完善。weex已经发布了一年多了,但目前的资料还比较少,我也是自己不断摸索着过来的,所以写下这个教程, 帮助那些没有用过weex的朋友入门,一起探讨下weex是否值得接入到项目中去。

注:如果你觉得写得不好或者错误的地方,请直接批评指出。

首先,我先回答weex和RN有什么区别吗?有必要两个都去学吗?

这里我也不详细去谈这个问题了,就贴一个说得比较好的出来供大家参考:weex&ReactNative对比

刚刚说到学习weex的途径相对来说还是比较少的,第一个就是官网,直接度娘weex就可以找到,第二个就是github上weex的源码。

正文

这里贴一个官网的一个原理图

引用官网的话:Weex 表面上是一个客户端技术,但实际上它串联起了从本地开发环境到云端部署和分发的整个链路。开发者首先可以在本地像撰写 web 页面一样撰写一个 app 的页面,然后编译成一段 JavaScript 代码,形成 Weex 的一个 JS bundle;在云端,开发者可以把生成的 JS bundle 部署上去,然后通过网络请求或预下发的方式传递到用户的移动应用客户端;在移动应用客户端里,WeexSDK 会准备好一个 JavaScript 引擎,并且在用户打开一个 Weex 页面时执行相应的 JS bundle,并在执行过程中产生各种命令发送到 native 端进行的界面渲染或数据存储、网络通信、调用设备功能、用户交互响应等移动应用的场景实践;同时,如果用户没有安装移动应用,他仍然可以在浏览器里打开一个相同的 web 页面,这个页面是使用相同的页面源代码,通过浏览器里的 JavaScript 引擎运行起来的。

按我的理解是这样的,你写好的weex代码,编译成JS文件,然后放在本地或者远程服务器上,客户端去访问,成功后客户端进行渲染,这个渲染是怎么个渲染呢?比如说吧,weex上的一个控件<text>,其实就是渲染成原生控件TextView了,其他的也是类似的,所以效果是跟原生一样的。

如果你对weex产生了兴趣,那接下来就要开始搭建开发环境了。

开发weex需要node.js、weex-toolkit,所以各位就自行去下载吧,官网也有非常详细的介绍了。这里我推荐一个weex的开发工具WebStorm(WS),个人感觉这个IDE非常友好,而且跟AS是出自一家公司,所以对于Android的开发者来说再适合不过了。

第二步,开始你的weex之路,初始化一个weex项目,使用命令进行创建项目

weex init demo-project

结束之后你就可以看到目录下有对应的demo-project了,那么,我们就进行愉快的开发吧。

weex,使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API。

Vue,Vue.js 是 Evan You 开发的渐进式 JavaScript 框架。开发者能够通过撰写 *.vue 文件,基于 <template>, <style>, <script> 快速构建组件化的 web 应用。

熟悉的Hello World

<template>
  <div>
    <text class="text">{{text}}</text>
  </div>
</template>
<style>
  .text {
    font-size: 25px;
  }
</style>
<script>
 module.exports={
    data:{
        text: 'Hello World.'
      }
  }
</script>

编译后,在浏览器访问,你就可以看到我们熟悉的hello world了。

是不是看起来有点像HTML的格式,但是又不像呢?其实这个就是Vue的基于 <template>, <style>, <script>构建的一个Web页面。

weex支持一些内置组件,比如上面的text、a、div、web、image、list、input等等,当你要用到时候不会用可以到官网上一查究竟,如果weex提供的组件还不能满足你开发的需求的话,我们也是可以自定义组件在weex上使用,这个到后面我们再详细讲解。

还有比较重要的一点就是,不是所有的html5和css3的样式在weex中都可以使用的,比如

border: 1 solid #ff0000;

这样的组合写法在weex上就不支持了,很多这样的组合写法也将不支持的。

然后weex默认的样式是flex,不用主动去声明display:flex,因为weex默认就是flex样式进行开发的。

那么我们就详细讲解下flex这个布局模型。

flex-direction:定义了 flex 容器中 flex 成员项的排列方向。可选值为 row(从上到下排列) | column(从左到右排列),默认值为 column。

justify-content:定义了 flex 容器中 flex 成员项在主轴方向上如何排列以处理空白部分。可选值为 flex-start | flex-end | center | space-between,默认值为 flex-start。

flex-start:是默认值,所有的 flex 成员项都排列在容器的前部;
flex-end:则意味着成员项排列在容器的后部;
center:即中间对齐,成员项排列在容器中间、两边留白;
space-between:表示两端对齐,空白均匀地填充到 flex 成员项之间。

align-items:定义了 flex 容器中 flex 成员项在纵轴方向上如何排列以处理空白部分。可选值为 stretch | flex-start | center | flex-end,默认值为 stretch。

stretch 是默认值,即拉伸高度至 flex 容器的大小;
flex-start 则是上对齐,所有的成员项排列在容器顶部;
flex-end 是下对齐,所有的成员项排列在容器底部;
center 是中间对齐,所有成员项都垂直地居中显示。

Flex 成员项:flex 属性定义了 flex 成员项可以占用容器中剩余空间的大小。如果所有的成员项设置相同的值 flex: 1,它们将平均分配剩余空间. 如果一个成员项设置的值为 flex: 2,其它的成员项设置的值为 flex: 1,那么这个成员项所占用的剩余空间是其它成员项的2倍。

flex {number}:值为 number 类型。

下来可以试一下各个属性,看下布局会如何变化的。

好了本次的教程到此结束,我会继续抽时间将剩下的教程在最短的时间内写完的。

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

推荐阅读更多精彩内容