Weex爬坑之路

简单描述一下公司使用weex初衷和记录weex开发中遇到的问题,用作以后回顾;


微信图片_20190826092623.png

移动端最大的缺点就是更新版本,整包下载真的是不友好,考虑到公司部分业务,只能着手从随时可以改,所有东西控制在手上,了解到了weex,渲染效果比原生壳+H5效果好,但是没有纯原生好,介于2者之间,主要在使用上是Vue.js就能很容易上手,当然坑也是有很多,简单记录一下,顺便也提供暂时的解决思路.

一些常用的指令参考官网 weex开发

1.创建完成项目,生成android代码用Android Strudio 会有一些配置上的错误,不过都是一些版本号不对的问题,weex官方生成的Android项目包有好几个问题,不过对于安卓老手能很轻松的解决,不懂得哥们,就复制错误代码到百度搜一搜,很简单,都是一些gradle版本的问题,废话不多说,直接开搞weex,在Android里面更改 utils文件下面的AppConfig里面的有配置是走本地的js文件还是走线上的,我们要动态部署服务端,肯定是走线上的,修改app_config.xml里面launch_locally为false ,launch_url改为服务端部署的地址,就ok了,然后愉快的开发js代码,

微信图片_20190826093932.png

2.weex-ui组件库,当然官方也提供了组件库,git上大佬有总结 weex-ui组件库汇总

3.weex不支持路由组件动态加载 (坑!!!!!)

4.不建议用router-link 要用div+编程式导航

5.样式不支持缩写 border,background,margin,padding

6.不支持z-index,但是元素越往后层级越高

7.元素会自动绑定样式weex-ct 默认flex竖直排列

8.border-radius要用绝对像素值

9.只支持线性渐变

10.文本要用text包起来,渲染成p 标签

11.box-shadow只支持ios

12.image 定义圆角无效,// ios有效,Android无效

13.text标签的margin,padding会被覆盖,用!important

14.a组件不要添加click事件,指向weex打包后的一个js地址,无法跳转html(用web实现)

15.waterfall不支持web

16.<web> 用于在 WEEX 页面中显示由 src 属性指定的网页内容。

17.只有 <span>, <a> and <image> 可以包含在 <richtext> 标签里。<span> and <a> 会被显示为 display:inline,而 <image> 会被显示为 display:inline-block。<image>不可以在嵌入子元素

18.Weex 支持四种伪类:active, focus, disabled, enabled,所有组件都支持 active, 只有 input 组件和 textarea 组件支持 focus, enabled, disabled

19.refresh 只有在scroller和list,waterfall才有效果

20.class动态样式,用数组模式,对象模式不支持

21.多页面需要在webpack里面配置多入口


微信图片_20190826095327.png

在webpack里面代码段 注意我的目录是在src下面的pages目录下写页面
代码块

//循环生成多个页面
function walk(dir) {
  dir = dir || '.';
  const new_path = __dirname.slice(0,-8)
  const directory = path.join(new_path, 'src/pages', dir);
  const fileArr = ['entry.js','router.js'];
  fs.readdirSync(directory)
    .forEach((file) => {
      const fullpath = path.join(directory, file);
      // const stat = fs.statSync(fullpath);
      const extname = path.extname(fullpath); // 类型
      const basename = path.basename(fullpath); // 文件名
      if(extname==='.js'&& !fileArr.includes(basename)){
        const File = path.join(vueWebTemp, `pages/${basename}`);
        const routerFile = path.join(vueWebTemp, config.routerFilePath)
        fs.outputFileSync(File, getEntryFileContent(helper.root(`pages/${basename}`), routerFile));
        const name = basename.slice(0,-3);
        webEntry[name] = File;
        weexEntry[name] = helper.root(`pages/${basename}`);
      }
    });
}
walk();

22.Android的navigator跳转需要用local标签拦截 清单文件里面添加
代码块

<activity
            android:name="com.weex.app.WXPageSampleActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <action android:name="com.alibaba.weex.protocol.openurl"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="com.taobao.android.intent.category.WEEX"/>

                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:scheme="file"/>
                <data android:scheme="wxpage" />
            </intent-filter>
        </activity>

23.WXEnvironment 全局环境变量 platform安卓大小写问题,官方文档给的是Android,但是我在打印发现是小写的android,

24.不支持<img/> 需要用<image/>

25.对于iOS手机,刘海屏的适配,从iPhone X之后的水果手机全部都带有刘海屏,weex上适配就需要做了,
查看苹果deviceModel值 查看苹果deviceModel值,从Iphone X之后都是刘海屏,
代码块

<div :class="['wrapper', isipx?'w-ipx':'']">
    <div class="auto-flex">
      <router-view/>
    </div>
    </div>
  </div>

<script>
export default {
  name: 'App',
  data () {
    return {
    }
  },
  computed:{
        isipx:function () {
            return weex && (weex.config.env.deviceModel === 'iPhone10,3' ||weex.config.env.deviceModel === 'iPhone10,6' 
                  ||weex.config.env.deviceModel === 'iPhone11,8' ||weex.config.env.deviceModel === 'iPhone11,2'
                  ||weex.config.env.deviceModel === 'iPhone11,4'||weex.config.env.deviceModel === 'iPhone11,6');
                  //https://www.theiphonewiki.com/wiki/List_of_iPhones查看苹果deviceModel值,从Iphone X之后都是刘海屏
        }
      },


}
</script>

<style scoped>
  .wrapper{
    flex-direction: column;
  }
  .w-ipx{
    bottom:40px;
    margin-top: 20px;
    margin-bottom: 10px;//具体的样式自己来调
  }
</style>

26.weex前端js和移动端通讯,例如,填写手机号码的时候,需求是需要我跳转到手机通讯录然后选择手机号,带回联系人姓名和手机号,这个需求,从weex前端看是没发做到的,移动端以安卓为例6.0以后访问通讯录是需要动态权限,iOS更不用说也是需要权限的,所以js前端和移动端通讯就得通讯了,基本思路:weex官方扩展能力 在扩展安卓和iOS里面,有介绍使用module进行能力扩展,基本介绍看官方文档,言归正传,继续调用通讯录的介绍,先获取通讯录权限,然后再去做相对应的操作,具体代码如下:
先来看张Android结构图

61bd9a178cdef3aa96fae6bb1959b39.png

在extend文件夹下有一个WXEventModel文件,这是是系统官方生成的,我们只需要创建自己的module就好了
安卓=> 获取联系人的代码 这个哥们写的有点小问题,没有去拿权限,在open方法里面添加6.0动态权限获取就好了,完美解决
iOS=> iOS回调参照

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

推荐阅读更多精彩内容