leader 想让我转大前端,当时我心里仍是比较兴奋的,由于这跟我最开始对本身的定位是彻底一致的,但后续作了一些后端的东西后,发现本身对后端也有感受,不过实话实说都还在比较浅薄的层面上。html
上周末我想了两天,发现本身确实得在大前端这块上继续“抛头颅,洒热血”,不单是再精进一些以前已掌握的知识,更是拓展了本身在稍微擅长的一个领域站得更稳,恰好最近负责的产品有往“跨平台”的开发模式上转,须要提早作些调研工做,再跟上最近团队人员的变更,新来的同窗有意愿切入 Weex 跨平台框架。前端
固然,对于我我的而已,我彻底不喜欢任何非原生的东西,甚至目前到了用别人的库都以为“怪异”,今年年初的时候把当时最火的两个跨平台框架“小程序”和 “React-Native” 都撸了一遍,但就仅仅从 demo 这个级别出发,当时就已经很是的厌恶各类跨平台的开发框架了,总有些说不出的“怪异”之处,但也不能说它们毫无是处,在编写 demo 的过程当中,不少基础组件上手就用,比 Native 开发效率上都大大提高了不仅一两倍这么简单。vue
通过一周短暂的、磕磕碰碰的学习,也把今年学习的第三个目前也十分火爆的跨平台框架—— Weex 写出了 demo,其中大部分思路来源于 Weex 的官方文档和教学视频。若是你感兴趣的话,能够扫描下方二维码进行试玩:webpack
对于 Weex 的介绍在网上已有大量的讲解,在此用本身的话能够总结以下:ios
Javascript
为主体且依赖 Vue
,排除第一条后,上 Weex 几乎没有悬念,毕竟到如今 Weex 都被认为是 Vue-Native
。该 demo 中运用到的主要相关知识点以下:git
div
,text
navigator
,storage
,dom
CSS
基本内容Vue.js
基本内容Javascript
基本内容Weex 吸取了目前最流行的 MVVM 和面向组件开发的思想,上文中我所说的“爽”就来自于此!举一个例子,navbar
组件,编写一个组件相对 Native 来讲,真的是又快又爽!在 <tempalte>
中写好组件模版代码,在 <script>
中写好事件处理、属性定义、生命周期管理,在 <style>
中写好 CSS
样式布局,想要给别人用,直接拖走这个 .vue
文件便可完事(固然 native 也是同样)。我以为能有如此便利,多亏 CSS,在 native 实现一个功能可能使用 CSS 只须要两三行便可完事!github
navbar
组件<template>
<div class="navbar">
<!-- v-if 判断是否须要展现返回 icon -->
<text v-if="showBack" class="iconfont navbar-icon" @click="onBack"></text>
<text v-else class="navbar-title"></text>
<text class="navbar-title">{{ title }}</text>
<text class="navbar-title"></text>
</div>
</template>
<script>
const navigator = weex.requireModule('navigator')
export default {
name: 'navbar',
props: {
showBack: {
type: Boolean,
default: true
},
title: {
type: String,
required: true
}
},
beforeCreate () {
const domModule = weex.requireModule('dom')
domModule.addRule('fontFace', {
'fontFamily': 'iconfont',
'src': "url('http://at.alicdn.com/t/font_933576_ji32n9fdyki.ttf')"
})
},
methods: {
onBack () {
navigator.pop({
animated: 'true'
})
}
}
}
</script>
<style scoped>
.iconfont {
font-family: iconfont;
}
.navbar {
height: 88px;
background-color: #50e3a4;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding-left: 20px;
padding-right: 20px;
}
.navbar-title {
font-size: 32px;
color: #fff;
}
.navbar-icon {
color: #fff;
font-size: 36px;
}
</style>
复制代码
npm install weex-toolkit -g
web
weex create awesome-app
vue-router
在建立工程的过程当中,会提示一些关键信息,好比做者、是否使用 vue-router
,ESLint
等等,根据提示等待便可。npm
weex platform add ios
weex run build
在 dist 文件夹下拿到对应的 js bundle 文件。
在工厂目录下执行 npm start
后,会在浏览器打开一个“套壳”的页面,有不少不须要的元素,若是不须要的话,能够这么作:
nmp start
后,打开的地址为:http://172.20.10.4:8081/web/preview.html?page=index.js
http://172.20.10.4:8081/index.html
,这样就去除掉了多余不须要的元素了,页面变得十分干净新增页面后,此时若是经过浏览器直接输入地址访问会 404,由于这次 build 出来的资源文件中并未包含咱们新增的页面,须要从新执行 npm start
进行从新构建。
决定你的页面布局主要方向,是row(水平)仍是column(垂直布局)。
决定父容器中的元素在水平方向上的布局,想要居中则设置为 center
。
决定父容器中的元素在垂直方向上的布局,想要居中则设置为 center
。
决定父容器中的元素在主轴上如何排列,若是想要等分布局,则设置为 space-around
,左右边距将为中间间隔的一半。
决定元素在交叉轴上如何排列
经过 webpack 打包后生成的 JS Bundle
文件都在 dist
文件夹下。
在 Weex 中关于 bool 值,本质上为字符串,好比"true"
这样才是“真”,true
这样什么也不是,官方说会在将来版本中进行修复,还有不少相似这种容易引发“差评”的地方。
构建出来的 js bundle 直接直接能够拖入工程使用,在 iOS 下,看到的渲染后的页面层级以下:
查看 WeexSDK,能够看到基本上把原生组件都按照 Weex 支持的格式封装了一遍,因此加入跨平台框架后,app 体积不上升是不可能的,只不过得看用什么个优化方法了(删删删哈哈哈~)
原本想系统的介绍一下 Weex 的开发流程和部分细节,下次有机会再愉快的玩耍吧~本次 Weex demo 的练习,让本身对 Weex 和 Vue 都有了一个直观的感觉,到如今给我印象最深入的不是 Weex 而是 Vue,感触良多。对原生开发的喜好又多了很多,在今天这个时代背景下,求快不求稳,无论怎么说,我仍是一个坚决的原生开发者~
原文地址:PJ 的 iOS 开发平常