frontend:mobile
这是本文档旧的修订版!
Mobile Web Develop
该页面记录移动web开发过程中遇到的各种坑
Flexbox
因Android4.4-只支持旧版Flexbox标准,因此在移动端中使用Flexbox
需要配置autoprefixer
browsers: ['Android >= 4.0', 'iOS >= 7']
兼容性
浏览器:Android4.0-Android4.3
Android4.4-不支持flex-wrap
特性,没有workaround,需要用到wrap特性的地方都需要换成inline-block
实现
display:flex元素下的子元素须为块级元素
浏览器:Android4.0-Android4.3
display:flex元素下的子元素都要为块级元素,否则display: flex
不会生效,将会表现为行内元素的特性
例子如下:
<template> <div class="flex"> <!-- broken on android4.4- --> <span class="name">name</span> <img class="avatar" /> </div> </template> <style> .flex { display: flex; align-items: center; justify-content: center; } </style>
Babel
目前移动端代码都用ECMAScript 2015
编写,再使用Babel编译为es5
,然而常用的es2015 preset在创建模块时默认添加了__esModule
属性
Object.defineProperty(exports, '__esModule', {value: true});
所以会导致报错:
Cannot assign to read only property ‘__esModule’
解决方法:
使用loose
模式,安装es2015-loose
包
npm i babel-preset-es2015 babel-preset-es2015-loose sed -i 's|es2015|es2015-loose|g' ./.babelrc
Loose模式的意思即为对es2015
语法实现不严格,例如仅仅将块级作用域的let
, const
转换为var
frontend/mobile.1476672846.txt.gz · 最后更改: 2023/12/03 10:24 (外部编辑)