Uni-跨端开发总结

**

Uni 基于vue 的语法,所以在跨端里最支持的H5页面

**
1.uni-app不支持动态组件,目前在用v-if判断,或者用scroll-view切换,没有想到什么其他的办法。

2.uni-app不支持具名插槽,会导致页面塌陷。

3.uni-app在做动态样式渲染的时候可能会对高度,偏移,定位不友好,但是用px单位就不会有问题,感觉原因是在打包的时候upx单位不会编译成px。

4.平常我们再写vue项目的时候会写一个扫描文件,为的就是不用每个组件都去引用那么多组件,但是我在做uni-app的时候浏览器运行是没问题的,但是在安卓手机上并不支持,我打印了一下,确实是扫出来了,但是并没有加载成功,不知道什么原因,可能是官方想让你老老实实的引组件吧,扫描文件如下,做vue项目的时候还是能用上的,很简单,如下:

const components = [];
// 扫描到前文件夹下的.vue文件
const pages_path = require.context('./',true,/\.vue$/);
// 遍历
pages_path.keys().forEach(item => {
    let path = pages_path(item)
    // 截取字符串
    path.default.name = item.split('/').pop().replace(/\.vue$/, '')
    components.push(path)
})
// 组件初始化
const install = function (Vue) {
    components.map(el => {
        let name = el.default.name
        Vue.component(name, el.default)
    })
}
// 导出组件
module.exports = {
    install
}

5 uni-app是支持npm私有仓库的,但是下载完依赖后浏览器不会出现问题,手机会出现找不到依赖的问题。

6 uni-app支持简单的样式绑定,绑定的值只能是字符串,不支持复杂的绑定比如 :class="{class-a,class-b: true}“和 :class=”[class-a,class-b]"这种是不支持的(手机端)。

7 页面之间的传值方式有很多种: a.放在全局比如vue的原型中或者globalData中 b.页面跳转通过路径拼接参数 c.放在本地存储中,但是,个人推荐放在地址中拼接,这样的好处是在做分享的时候可以直接将参数代入,如果放在全局比较占内存,放在本地存储分享后另一端并没有信息。

8 由于小程序的限制(4M),uni-app做完后体积可能很大,这样打包成小程序后可能编译失败,建议精简功能。

9 在使用webview时我们可能需要子页面向uni-app发送消息,官方给了@message,但是这个只是在特定的情境下适用,比如刷新,跳转,销毁,可以适用socket(虽然不太优雅,但是我也没有想到什么办法,因为用了好多方法都不行)。

10 在app发布的时候使用云打包后将apk上传到应用商店会提示app的等级太低,需要设置成大于26,我们可以适用Android Studio本地打包,ios适用xcode

11 uni-app打包成app后没有document和window对象

12 分享小程序ios版本需要在分享小程序的api中设置scene: “WXSceneSession”,

13 iphone手机有右滑返回功能,但是此功能和uni.navigateBack()并不一样,所以不能调取返回的api

14 一般我们在组件中使用v-if时会使用过度transition,但是打包成APP后并没有过渡效果,H5有

15 如果组件中绑定类似value这种,比如绑定值,如果绑定空字符串,会报错,类似 ‘$gwm…’这种

16 如果使用v-model这种绑定,后边的值不能是方法,比如 ,func是一个方法return一个字符串,并不支持。

17 使用绝对定位距离底部多少像素,app是相对于底部导航栏上方,而H5是相当于屏幕底部上方。

18 差值中不支持使用太复杂的语法。

19 在做iphone X适配的时候,可能需要用js检测一下刘海的高度或者手机型号是不是iPhone X,但是在手机上并不能检测到。

20 page默认为在H5页面默认为最外层容器的Class容器名,在APP端则没有。

21 uni 在APP端口 不支持 vue中的 transition 过度动画.但是Uni内置有创建动画的Api接口。

22 在 uni 无法获取元素,所以对DOM操作会变得困难。

23 在时间处理格式上,new Date(‘’参数“)参数需要严格准守严格的标准模式。

错误原因:参数格式不规范,不能兼容所有浏览器;(ios 和 安卓)
参数格式有以下5种:

new Date(“month dd,yyyy hh:mm:ss”);
new Date(“month dd,yyyy”);
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);
month:用英文表示月份名称;
mth:用整数表示月份;
dd:表示一个月中的第几天;
yyyy:四位数表示的年份;
hh:小时数;
mm:分钟数;
ss:秒数;
ms:毫秒数;

//解决方法:
var time = "2017-06-23 17:00:00";
time = time.replace(/-/g,':').replace(' ',':');
time = time.split(':');
var time1 = new Date(time[0],(time[1]-1),time[2],time[3],time[4],time[5]);
console.log("time1"+time1);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值