uni-app 手记集。

1、uni-app 是一个使用 Vue.js 开发的前端应用的框架,所以不会Vue.js的小伙伴可以先去看看Vue.js的基础教学。

2、.vue文件结构

<template><div class="container"></div>
</template><script type="text/ecmascript-6">
export default {data(){return{// 数据};},components:{// 组件注册},beforeCreate(){// 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。},create(){// 实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。},beforeMount(){// 在挂载开始之前被调用:相关的 render 函数首次被调用。},mounted(){// el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。},beforeUpdate(){// 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。},updated(){// 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。// 当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环},beforeDestroy(){// 实例销毁之前调用。在这一步,实例仍然完全可用。 },destroyed(){// Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。},computed:{// 计算属性},watch:{// 数据监听},methods:{// 方法定义}
}
</script>
<style>// css 样式
</style>

各参数/方法使用场景

components:{ // 组件注册 },:局部声明组件
create(){ },: 在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
mounted(){ }, : 在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。例:比如插件chart.js的使用: var ctx = document.getElementById(ID);
computed:{ // 计算属性 }, : 计算属性(computed)是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。
watch:{ // 数据监听 }, : Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch——特别是如果你之前使用过 AngularJS。然而,通常更好的做法是使用计算属性而不是命令式的 watch

3.input 通过v-model双向绑定,完成input框值获取。

<template><div><div class="logininfor"><input type="text" placeholder="手机号码" v-model="userphone"><input type="text" placeholder="密码" v-model="userpass"><span @click="register()">注册</span></div><p>已有账号?去<span class="zhuce" @click="login()">登录</span></p></div>
</template>
<script>export default {data(){return{userphone:"",userpass:""}},methods: {register(){window.console.log(this.userphone,this.userpass)}},}
</script>

4、图片选择--选择本地相册

<template><view class="content"><image class="logo" :src="img"></image><view class="text-area"><text class="title">{{title}}</text></view><view class="btn-area"><button @click="onbtn" class="btn_jin">{{btn_jin}}</button></view><view class="btn-area"><button @click="onImg" >更换选择图片</button></view><view class="btn-area"><button @click="onImg2" >更换选择图片2</button></view></view>
</template><script>export default {data() {return {title: 'Hello',btn_jin:'成为企业会员>>',img:'',}},onLoad() {this.img = '../../static/logo.png';},methods: {onbtn(){//页面跳转uni.navigateTo({url: 'JD2BCreateEnterprise?title=jin123'});},onImg(){this.img = '../../static/jd2b_upload_image_add_btn.png';},onImg2(){uni.chooseImage({count: 1, //默认9sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有sourceType: ['album'], //从相册选择success: (res) => {var filesPaths = res.tempFilePaths;						if(filesPaths && filesPaths.length > 0){this.img = filesPaths[0];console.log(this.img)}	}});},}}
</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}.logo {height: 200rpx;width: 200rpx;margin-top: 200rpx;margin-left: auto;margin-right: auto;margin-bottom: 50rpx;}.text-area {display: flex;justify-content: center;}.title {font-size: 36rpx;color: #8f8f94;}
</style>

5、判断字符串是否包含关系:

if(imgs[i].indexOf('http') === -1)

6、匹配图片的正则表达式:

let data = res.resultValue.RichDatavar imgs = [];//匹配图片(g表示匹配所有结果i表示区分大小写)var imgReg = /<img.*?(?:>|\/>)/gi;//匹配src属性 var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;var arr = data.match(imgReg);console.log(arr)for (var i = 0; i < arr.length; i++) {var src = arr[i].match(srcReg);//获取图片地址if(src[1]){console.log('已匹配的图片地址'+(i+1)+':'+src[1]);imgs.push(src[1]);}					}console.log(imgs);

7、替换的正则表达式

//替换style=""为空data = data.replace(/style=""/g,'')data = data.replace(/<img/g, '<img style="width: 100%;"').replace(/px/g, 'rpx').replace(/750/g, '350px')data = data.replace(/<p>/g, '<div style="text-align:center;">').replace(/<\/p>/g, '</div>')

8、第三方布局https://orangleli.github.io/markdown-html/vue-js-markdown-editor/markdown2html.html


9、css布局

水平排列,两端对齐,居中

<view class="flex space-between v-center">

水平排列,居中

<view  class="flex flex-row v-center">

垂直排列

<view class="flex flex-column">

1、上下居中(垂直居中)
style="height: 40px; background-color: #FFFFFF;
display: flex; flex-direction: row; align-items: center;"2、左右居中(水平居中)
style="height: 40px; background-color: #FFFFFF; 
display: flex; flex-direction: row; justify-content: center;"

10、JSON跟vue对象互换

对象转json

JSON.stringify(this.storeInfo)

json转对象

JSON.parse(options.data)

11、设置底部布局,且不受滑动干扰

.view_to_cart{position: fixed;right: 15rpx;bottom: 16%;width: 80rpx;height: 80rpx;line-height: 80rpx;text-align: center;	margin-right: 10px;
}

12、swiper动态计算高度

1、在布局设置高度为动态赋值<swiper class="tab-swiper"  @change="switchTag" :current="nowActive"  :style="'height: ' + height +'px;'"></swiper>2、在data声明height函数data() {return {                       height: 750,            }},3、在页面挂载后设置swiper高度
mounted() {this.setHeight();},4、设置高度
setHeight() {let windowHeight = uni.getSystemInfoSync().windowHeight;//页面可见区域console.log("windowHeight = "+windowHeight)if (this.tabArr.length === 0){this.height = windowHeight;} else {windowHeight = windowHeight - 44;//页面可见区域 - 在线购物条高度					console.log("windowHeight = "+windowHeight)var query2 = uni.createSelectorQuery();query2.select('.view_head').boundingClientRect(rect => {if (rect) {console.log("view_head.height = "+rect.height)this.height = windowHeight - rect.height;//页面可见区域 - 头部高度console.log("this.height = "+this.height)}}).exec();				}},

13、分页加载API

onReachBottom(){//分页加载console.log('onReachBottom'+this.nowActive)if(this.nowActive === 1){this.grouponPageNo++;this.getGrouponList(this.shopInfo.Id, this.message, this.userInfo.CommunityId, this.userInfo.userId);}else if(this.nowActive === 0){this.pageNo++;this.getGoodList(this.shopInfo.Id, this.message, this.userInfo.CommunityId, this.userInfo.userId);}},

14、页面标签内写判断语句

:color="isStock==='1'?'#51B3F1':'#333'" 

15、数组

1)循环

let arr=[]

for (let k in this.imgList) {
                    arr[k] = await this.uploadFile(this.imgList[k])
                }

2)数组增加对象

arr.push()

16、页面返回刷新

var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
        isDoRefresh:true//上一个页面的data里面的参数
})
 uni.navigateBack();

===========================

onShow:function(e){
       let pages = getCurrentPages();
       let currPage = pages[pages.length-1];
       if (currPage.data.isDoRefresh == true){
currPage.data.isDoRefresh = false;
           //在此刷新
        }else{
           //不用刷新
        }

 }

17、圆角

1. 指定背景颜色的元素圆角:
{border-radius: 25px;background: #8AC007;padding: 20px;width: 200px;height: 150px;
}2. 指定边框的元素圆角:
{border-radius: 25px;border: 2px solid #8AC007;padding: 20px;width: 200px;height: 150px;
}3. 指定背景图片的元素圆角:
{border-radius: 25px;background: url(paper.gif);background-position: left top;background-repeat: repeat;padding: 20px;width: 200px;height: 150px;
}4. 四个值,第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。
{border-radius: 15px 50px 30px 5px;background: #8AC007;padding: 20px;width: 200px;height: 150px;
}

border-radius:0 0 100% 100%;

18、渐变色

基础线性渐变,从上到下
background: linear-gradient(blue, pink);改变渐变方向
background: linear-gradient(to right, blue, pink);对角线渐变
background: linear-gradient(to bottom right, blue, pink);设置渐变角度
background: linear-gradient(70deg, blue, pink);

19、padding

padding : +数值+单位 或 百分比数值div{padding:5px}设置对象距离四边边距为5px间隔同时可以单独设置左、右、上、下边距离发布设置1、padding-left 设置对象距离左边的边距补白间隔
div{padding-left:5px}
对象内距离左边补白间距为5px2、padding-right 设置对象距离右边的边距补白间隔
div{padding-right:5px}
对象内距离右边补白间距为5px3、padding-top 设置对象距离上边的边距补白间隔
div{padding-top:5px}
对象内距离上边补白间距为5px4、padding-bottom 设置对象距离下边的边距补白间隔
div{padding-bottom:5px}
对象内距离下边补白间距为5px检索或设置对象四边的补丁边距。如果提供全部四个参数值,将按上-右-下-左的顺序作用于四边。如果只提供一个,将用于全部的四条边。如果提供两个,第一个用于上-下,第二个用于左-右。如果提供三个,第一个用于上,第二个用于左-右,第三个用于下。内联对象要使用该属性,必须先设定对象的height或width属性,或者设定position属性为absolute。Padding的值不能为负值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DiskGenius硬盘分区】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

TCP系列相关内容

一、TCP上传文件 loop——本地回环测试地址。 void *memset&#xff08;void *s,int c,size_t n&#xff09;——给一个变量设定一个值。 1、“粘包”问题 两次分别发送的数据&#xff0c;被一起接收形成该现象。 原因&#xff1a;TCP流式套接字&#xff0c;数据与数据间没…

前端速通面经八股系列(二)—— HTML篇

HTML高频面经八股目录 1. src和href的区别2. 对HTML语义化的理解3. DOCTYPE(⽂档类型) 的作⽤4. script标签中defer和async的区别5. 常⽤的meta标签有哪些6. HTML5有哪些更新1. 语义化标签2. 媒体标签3. 表单4. 进度条、度量器5.DOM查询操作6. Web存储7. 其他 7. img的srcset属…

三种通过代码创建矢量文件的方法及例子

现有四个点&#xff1a;(1, 1), (2, 2), (3, 3), (4, 4) 以这四个点围起来就是一个面。 如何通过python创建矢量文件。 我们以创建一个面矢量文件为例子&#xff0c;进行阐释。 我们可以使用geopandas、fiona、gdal库完成矢量创建。 geopandas 假设我们创建的矢量文件格式…

Chrome H265 WebRTC 支持

Chrome从127版本开始支持RTC H265解码&#xff0c;这样服务器就不需要对H265转码了&#xff0c; H5S和USC会自动检测浏览器支持的解码类型并自动判断是否启动转码&#xff0c;这样客户端不用关心摄像机具体是H264还是H265&#xff0c;尽量使用带GPU的客户端&#xff0c;这样服务…

ArcGIS应用指南:近邻分析(点匹配到最近线段上)

近邻分析通常用于确定一个要素集中的要素与另一个要素集中最近要素的距离。当涉及到点匹配到最近的线时&#xff0c;这种分析可以用来确定每个点到最近线段的距离及位置&#xff0c;也就是我们常说的点匹配到最近线上&#xff0c;可以参考官方文档&#xff1a;近邻分析 (Covera…

动态规划之买卖股票篇-代码随想录算法训练营第三十八天| 买卖股票的最佳时机ⅠⅡⅢⅣ,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

121. 买卖股票的最佳时机 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 讲解视频&#xff1a; 动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1 题目描述&#xff1a; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定…

软件测试-Selenium+python自动化测试

目录 一、元素定位 1.1一个简单的模板 1.2单选框radio定位实战 1.3下拉操作 1.4弹窗 1.5文件上传 1.6 iframe(类似于页中页,嵌套进去了) 二、元素定位实战 会用到谷歌浏览器Chrome测试,需要下载一个Chromedriver(Chrome for Testing availability)对应自己的浏览…

华为2024 届秋招招聘——硬件技术工程师-电源方向-机试题(四套)(每套四十题)

华为 2024 届秋招——硬件-电源机试题&#xff08;四套&#xff09;&#xff08;每套四十题&#xff09; 岗位——硬件技术工程师 岗位意向——电源 真题题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&am…

OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数对数组应用自适应阈值。 该函数根据以下公式将灰度图像转换为二值图像&#xff1a; 对于 THRESH_BINARY: t e x t d s t ( x , y ) { maxV…

OpenAI API: How to count tokens before API request

题意&#xff1a;“OpenAI API&#xff1a;如何在 API 请求之前计算令牌数量” 问题背景&#xff1a; I would like to count the tokens of my OpenAI API request in R before sending it (version gpt-3.5-turbo). Since the OpenAI API has rate limits, this seems impor…

【网络安全】分析cookie实现PII IDOR

未经许可,不得转载。 文章目录 正文正文 目标:公共电子商务类型的网站,每月有大约6万到10万访问者,注册用户大约有5万。 存在一个查询个人资料的端点/GetProfiledetails,以下是完整的请求和响应: 我发现,cookie非常类似于base64编码后的结果,于是我将其进行base64解码…

windows虚拟机VMware共享文件

1、设置本机电脑共享目录 2、设置所有人可连接 3、记录共享文件夹路径 4、设置当前用户密码 5、在虚拟机内映射驱动 6、在虚拟机内添入路径 7、输入用户名和密码 8、链接成功

天玑9400顶级图形技术曝光,GPU新技术让光追画质超一个档次

近日&#xff0c;有关联发科旗下最新旗舰芯片天玑9400的消息引发了广泛关注。据悉&#xff0c;该芯片在图形技术上取得了显著突破&#xff0c;光追性能提升近20%&#xff0c;并首发一项新的光追技术&#xff0c;该技术堪比PC端的顶级光追技术OMM&#xff0c;有望为移动端带来前…

Oracle数据库

注意&#xff1a;其实oracle数据库跟mysql数据库基本语法大致一样只有小部分语言存在差别。 安装PL/SQL Developer 一.数据库实例 1.1 启动数据库实例 一个Oracle实例&#xff08;Oracle Instance&#xff09;有一系列的后台进程&#xff08;Backguound Processes)和内存结构…

2024最新版Python+Pycharm安装教程,安装、环境配置、汉化全搞定,保姆级教学!

一、Python下载 为了节约时间&#xff0c;我将PythonPycharm安装包、集火码全部打包上传至CSDN官方&#xff0c;可放心下载&#xff0c;完全免费&#xff01;&#xff08;安装包均为最新版本&#xff09; 二、Python安装 1.双击运行本地文件夹下的python安装包&#xff08;以…

Unity与UE,哪种游戏引擎适合你?

PlayStation vs Xbox&#xff0c;Mario vs Sonic&#xff0c;Unreal vs Unity&#xff1f;无论是游戏主机、角色还是游戏引擎&#xff0c;人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎&#xff0c;Unity和Unreal Engine&#xff08;简称UE4&#xff09;是目前市…

QT 与 C++实现基于[ TCP ]的聊天室界面

TCP客户端 Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket> //客户端类 #include <QMessageBox> #include <QListWidgetItem> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } …

【操作系统】实验:文件系统

目录 一、实验目的 二、实验要求 三、实验步骤 四、核心代码 五、记录与处理 六、思考 七、完整报告和成果文件提取链接 一、实验目的 1、掌握文件系统的基本结构和文件系统的管理方法 2、加深对两级文件目录认识和理解 3、对文件操作的系统命令实质内容和执行过程深入…

【9月持续更新】国内ChatGPT-4o中文镜像网站整理~

以前我也是通过官网使用&#xff0c;但是经常被封号&#xff0c;就非常不方便&#xff0c;后来有朋友推荐国内工具&#xff0c;用了一阵之后&#xff0c;发现&#xff1a;稳定方便&#xff0c;用着也挺好的。 最新的 GPT-4o、4o mini&#xff0c;可搭配使用~ 1、 最新模型科普&…