APICloud框架——总结一下最近开发APP遇到的一些问题

距离上一次发文都过去十天了, 下班回来懒的就想睡觉, 今天520一个重要的节日, 恩爱已经秀完, 该干点事情了!!

总结一下最近开发遇到的一些问题, 以及解决方案

纯css三角形

/* 没有哪个方向的边框, 三角形就朝向那边 */
width: 0;
height: 0;
border-top: .5rem solid transparent;
border-left: 1rem solid red;
border-bottom: .5rem solid transparent;

:after和:before伪元素

在设置宽高之前,必须先设置display属性

:before {
    content: "";
    display: inline-block;
    width: .18rem;
    height: .18rem;
    background-color: #f00;
}

禁止换行, 使文字在一行内显示

white-space:nowrap;
overflow: hidden;
text-overflow: ellipsis;

朋友圈上传图片, 根据图片数量自适应大小

// 根据上传图片的多少自适应图片的大小
(function() {
    // 获取所有有图片内容的容器, apicloud的选择器, 其他选择器亦可
    var listContent = $api.domAll('.listContent');

    for (var i = 0; i < listContent.length; i++) {
    // 每个图片容器中有几个图片
        var imgArr = listContent[i].getElementsByClassName('content_img');

        var imgCount = imgArr.length
        // 根据每个容器中的图片输了设置当前容器中图片的尺寸
        if (imgCount == 1) {
                $api.css(listContent[i].getElementsByClassName('content_img')[i], 'width:2.86rem;margin:0');

        } else if (imgCount == 2 || imgCount == 4) {
            for (var j = 0; j < imgCount; j++) {
                $api.css(listContent[i].getElementsByClassName('content_img')[j], 'height:2.78rem');
            }
        }  else {
            for (var j = 0; j < imgCount; j++) {
                $api.css(listContent[i].getElementsByClassName('content_img')[j], 'height:1.8rem');
            }
        }
    }
})()

qq历史聊天记录–网页面上部添加标签后不滚动

// 获取历史聊天记录前 页面高度
mainH=$api.offset($api.dom('.main')).h;
_main = mainH

// 修改获取聊天记录后的页面位置
mainH = $api.offset($api.dom('.main')).h;
scrollH = mainH - _main;
_main =  mainH;
window.scrollTo(0,scrollH-50);

apicloud阻止冒泡事件

// 添加到标签上
// 阻止默认事件
onclick = 'event.preventDefault();'
// 阻止冒泡事件
onclick = 'event.stopPropagation();'
// 或者
onclick = 'api.closeWin();event.preventDefault();'
onclick = 'api.closeWin();event.stopPropagation();'

排他原则(干掉所有人,留下我自己)

function li_span(ele) {
    // 选择传入元素的所有同级元素
    var allDom = ele.parentNode.childNodes
    for (var i = 0; i < allDom.length; i++) {
        $api.removeCls(allDom[i], 'sel');
    }
    $api.addCls(ele, 'sel');
}

android4.4 兼容flex

定义


.box{
    display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
    display: -moz-box; /* 老版本语法: Firefox (buggy) */
    display: -ms-flexbox; /* 混合版本语法: IE 10 */
    display: -webkit-flex; /* 新版本语法: Chrome 21+ */
    display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ */
}

主轴对齐方式

.box{
    -webkit-box-pack: center;
    -moz-justify-content: center;
    -webkit-justify-content: center;
    justify-content: center;
}

/* 旧版语法有4个参数,而新版语法有5个参数,兼容写法新版语法的 space-around 是不可用的 */

.box{
    box-pack: start | end | center | justify;
    /*主轴对齐:左对齐(默认) | 右对齐 | 居中对齐 | 左右对齐*/

    justify-content: flex-start | flex-end | center | space-between | space-around;
    /*主轴对齐方式:左对齐(默认) | 右对齐 | 居中对齐 | 两端对齐 | 平均分布*/
}

侧轴对齐方式

.box{
    -webkit-box-align: center;
    -moz-align-items: center;
    -webkit-align-items: center;
    align-items: center;
}
/* 参数 */
.box{
    box-align: start | end | center | baseline | stretch;
    /*交叉轴对齐:顶部对齐(默认) | 底部对齐 | 居中对齐 | 文本基线对齐 | 上下对齐并铺满*/

    align-items: flex-start | flex-end | center | baseline | stretch;
    /*交叉轴对齐方式:顶部对齐(默认) | 底部对齐 | 居中对齐 | 上下对齐并铺满 | 文本基线对齐*/
}

显示方向

  • 左到右
.box{
    -webkit-box-direction: normal;
    -webkit-box-orient: horizontal;
    -moz-flex-direction: row;
    -webkit-flex-direction: row;
    flex-direction: row;
}

右到左

.box{
    -webkit-box-pack: end;
    -webkit-box-direction: reverse;
    -webkit-box-orient: horizontal;
    -moz-flex-direction: row-reverse;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
}

上到下

.box{
    -webkit-box-direction: normal;
    -webkit-box-orient: vertical;
    -moz-flex-direction: column;
    -webkit-flex-direction: column;
    flex-direction: column;
}

下到上

.box{
    -webkit-box-pack: end;
    -webkit-box-direction: reverse;
    -webkit-box-orient: vertical;
    -moz-flex-direction: column-reverse;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
}

是否允许子元素伸缩

.item{
    -webkit-box-flex: 1.0;
    -moz-flex-grow: 1;
    -webkit-flex-grow: 1;
    flex-grow: 1;
}
/* 参数 */
.item{
    box-flex: <value>;
    /*伸缩:<一个浮点数,默认为0.0,即表示不可伸缩,大于0的值可伸缩,柔性相对>*/

    flex-grow: <number>; /* default 0 */
    /*放大:默认0(即如果有剩余空间也不放大,值为1则放大,2是1的双倍大小,以此类推)*/

    flex-shrink: <number>; /* default 1 */
    /*缩小:默认1(如果空间不足则会缩小,值为0不缩小)*/
}

触摸对象

以下是四种touch事件

touchstart: //手指放到屏幕上时触发

touchmove: //手指在屏幕上滑动式触发

touchend: //手指离开屏幕时触发

touchcancel: //系统取消touch事件的时候触发,这个好像比较少用

每个触摸事件被触发后,会生成一个event对象,event对象里额外包括以下三个触摸列表

touches: //当前屏幕上所有手指的列表

targetTouches: //当前dom元素上手指的列表,尽量使用这个代替touches

changedTouches: //涉及当前事件的手指的列表,尽量使用这个代替touches

这些列表里的每次触摸由touch对象组成,touch对象里包含着触摸信息,主要属性如下:

clientX / clientY: //触摸点相对浏览器窗口的位置

pageX / pageY: //触摸点相对于页面的位置

screenX / screenY: //触摸点相对于屏幕的位置

identifier: //touch对象的ID

target: //当前的DOM元素

ios系统下 数字变蓝

多位数字在ios系统下会被识别为电话变得可点击

<!-- 阻止方法加meta标签 -->

<meta name="format-detection" content="telephone=no" />

textarea去掉右下角可拖动按钮

可以使用 resize: none; 来禁用 textarea 右下角的拖动图标。

apicloud获取本地文件路径

api.fsDir

欢迎访问我的博客http://www.yuanjingzhuang.com/

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在uni-app开发app端时,可能会遇到以下一些安全性问题: 1. 客户端漏洞:在app开发中,客户端可能存在漏洞,例如不安全的代码编写、未经验证的输入等。攻击者可以利用这些漏洞进行代码注入、跨站脚本攻击(XSS)等。 2. 数据传输安全:在app端与服务器之间的数据传输过程中,如果没有适当的加密机制,攻击者可能会截获敏感数据。因此,使用HTTPS协议进行数据传输是一个重要的安全措施。 3. 身份验证与授权:在app中,用户的身份验证和授权是非常重要的。如果身份验证机制存在漏洞,攻击者可以冒充合法用户的身份进行恶意操作。因此,需要使用安全的身份验证和授权机制,例如使用令牌(Token)进行用户身份验证。 4. 代码混淆与反编译:由于uni-app开发app是基于前端技术实现的,攻击者可以通过反编译app获取源代码,并进行逆向工程分析。为了增加代码的安全性,可以采用代码混淆技术来对代码进行保护。 5. 动态加载与远程代码执行:uni-app支持动态加载远程代码的功能,这也增加了一定的安全风险。如果不对加载的代码进行有效的验证和过滤,攻击者可以通过远程代码执行漏洞进行攻击。 为了提高app端的安全性,开发者可以采取以下措施: - 定期更新与升级:及时更新uni-app框架和相关插件,以修复已知的安全漏洞。 - 代码审计与测试:进行代码审计,发现潜在的安全问题,并进行相关测试以确保代码的安全性。 - 安全编码实践:采用安全编码实践,例如避免使用不安全的函数、过滤用户输入等。 - 强化身份验证与授权:使用安全的身份验证和授权机制,例如使用双因素身份验证、限制权限等。 - 加密与传输安全:使用合适的加密算法和协议保护数据传输的安全性。 以上是一些常见的uni-app开发app端时可能遇到的安全性问题和相应的解决方案。开发者在开发过程中应该注重安全性并采取相应的措施来保护用户数据和应用程序的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值