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.rhkb.cn/news/409563.html

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

相关文章

Code Llama: Open Foundation Models for Code论文阅读

整体介绍 Code Llama 发布了3款模型&#xff0c;包括基础模型、Python 专有模型和指令跟随模型&#xff0c;参数量分别为 7B、13B、34B 和 70B。这些模型在长达 16k tokens 的序列上训练。都是基于 Llama 2。 作者针对infilling (FIM) 、长上下文、指令专门做了微调 long-con…

内网穿透的应用-戴森球计划利用cpolar内网穿透实现好友异地远程联机游戏

文章目录 游戏简介1. 下载MOD2.配置cpolar内网穿透3. 主机开启联机3.1 玩家加入游戏 4. 配置固定的TCP端口5. 游玩体验 游戏简介 《戴森球计划》是一款融合了科幻冒险与经营管理元素的优秀游戏。玩家将在浩瀚宇宙中探索未知星球&#xff0c;建立从零开始的工业帝国&#xff0c…

流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)

为了这一整套的解决方案&#xff0c;调研研发整整花费了差不多半年多的时间&#xff0c;需达成的目标&#xff1a; 流媒体服务器端不需要将H.265转码成H.264&#xff0c;就能让Chrome解码播放H.265&#xff1b; 注意&#xff1a;现在很多市面上的软硬件通过转码H.265成H.264的…

xss-labs靶场6-10关

第六关 使用a标签&#xff0c;发现a标签可以。 "><a hreFjavascript:alert(aa)>aa</a> 点击aa 第七关 使用双写绕过 1"><ScscriptRipt>alert(1)</ScscriptRipt> 第八关 将javascript:alert(1)进行编码 然后将编码输入再次点击链…

day8JS-作用域

1. 变量的作用域(变量函数) 作用域是变量的可作用范围&#xff0c;变量只有在自己的作用域下才会生效。 函数会产生作用域&#xff0c;在函数内定义的变量只能在函数内使用。 2. 作用域分类 局部作用域&#xff1a; 函数内定义的变量和形参的作用域就是局部作用域&#xff1b;这…

基于SpringBoot的酒店管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架技术 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户注册界面…

rabbitMQ安装与简单demo

安装 mac安装有了brew很方便&#xff0c;windows的可参考 win10 安装rabbitMQ详细步骤 brew install rabbitmq启动 brew services start rabbitmq关闭 brew services stop rabbitmq出了问题之后可以重启一下 brew services restart rabbitmqsome issue 某些库下载超时 比…

学习笔记七:基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台

基于Jenkinsk8sGitDockerHub等技术链构建企业级DevOps容器云平台 安装Jenkins在kubernetes中部署jenkins创建名称空间创建pv,上传pv.yaml创建pvc创建一个sa账号通过deployment部署jenkins更新资源清单文件把jenkins前端加上service&#xff0c;提供外部网络访问 配置Jenkins获取…

PeriodWave: Multi-Period Flow Matching for High-Fidelity Waveform Generation

preprintKorea Seoul, Korea 文章目录 abstractmethodFlow Matching for Waveform GenerationHigh-frequency Information Modeling for Flow Matching demo page&#xff0c; PeriodWave 三者最好&#xff0c;而且能把原声中的噪声去掉&#xff0c;GAN一类声码器做不到的。 Pe…

Unity编辑器扩展之Project视图扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Project视图扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01…

一家物流装备企业终止,业绩下滑严重,恐不符合创业板新上市标准

鸿安机械终止的原因如下&#xff1a;首先&#xff0c;报告期内鸿安机械的营业收入和净利润出现下滑趋势&#xff0c;公司最近一年净利润恐不达标&#xff0c;或许不能满足创业板更新的第一套上市标准&#xff1b;其次&#xff0c;鸿安机械经营业绩对比同行业可比公司&#xff0…

智能优化特征选择|基于鹦鹉优化(2024年新出优化算法)的特征选择(分类器选用的是KNN)研究Matlab程序 【优化算法可以替换成其他优化方法】

智能优化特征选择|基于鹦鹉优化&#xff08;2024年新出优化算法&#xff09;的特征选择&#xff08;分类器选用的是KNN&#xff09;研究Matlab程序 【优化算法可以替换成其他优化方法】 文章目录 一、PO基本原理PO基本原理基本流程示例应用 二、实验结果三、核心代码四、代码获…

gitlab使用教程

一、定义 pycharm 克隆代码pycharm 克隆分支type 提交指令使用可视化界面SourceTreepycharm中git 基本使用获取和拉取的区别&#xff0c;update project 区别sourceTree 回退版本sourceTree 回滚代码 二、实现 教程&#xff1a; https://liaoxuefeng.com/books/git/gui/inde…

在DDD中应用模式

深层模型和柔性设计并非唾手可得。要想取得进展&#xff0c;必须学习大量领域知识并进行充分的讨论&#xff0c;还需要经历大量的尝试和失败。但有时我们也能从中获得一些优势。一位经验丰富的开发人员在研究领域问题时&#xff0c;如果发现了他所熟悉的某种职责或某个关系网&a…

Nosql数据库redis集群配置详解

一、Redis的安装 环境介绍&#xff1a; 一主双从&#xff1a;10&#xff08;redis-node1&#xff09;主&#xff0c;20&#xff08;redis-node2&#xff09; 30&#xff08;redis-node3&#xff09;从——使用的是红帽9.1系统 源码安装redis [rootredis-node1 ~]# tar zxf red…

前端常见问题

一、<!DOCTYPE html>作用 <!DOCTYPE>是html文档的第一行&#xff0c;用于声明文档的类型&#xff0c;它会告诉浏览器要用哪一种HTML规范来渲染文档&#xff0c;确保正确渲染页面。 二、src与 href 的区别 &#xff08;一&#xff09;、请求资源类型的不同 在请…

女明星玩乙游,为何会推动国乙玩家“世纪大和解”?

“震惊&#xff01;叠姐和光姐竟然世纪大和解了。” 这件在国乙圈匪夷所思、想都不敢想的事&#xff0c;竟然在一位女明星的推动下发生了&#xff0c;也因此诞生了国乙圈的“8.22事件”。 事情的起因是女艺人乃万在社交平台上发布了乙游相关言论&#xff0c;引起了乙游玩家不…

Spring--三级缓存机制

一、什么是三级缓存 就是在Bean生成流程中保存Bean对象三种形态的三个Map集合&#xff0c;如下&#xff1a; // 一级缓存Map 存放完整的Bean&#xff08;流程跑完的&#xff09; private final Map<String, Object> singletonObjects new ConcurrentHashMap(256);// 二…

USB3.2 摘录(九)

系列文章目录 USB3.2 摘录&#xff08;一&#xff09; USB3.2 摘录&#xff08;二&#xff09; USB3.2 摘录&#xff08;三&#xff09; USB3.2 摘录&#xff08;四&#xff09; USB3.2 摘录&#xff08;五&#xff09; USB3.2 摘录&#xff08;六&#xff09; USB3.2 摘录&…

页面设计任务 商品详情页(带评论区)

目录 效果图&#xff1a; 任务描述 源码&#xff1a; 详细讲解&#xff1a; 1.产品信息部分 2.用户评论区域 效果图&#xff1a; 任务描述 页面结构: 页面应包括一个标题部分、一个产品展示区和一个客户评价区。使用图片展示产品&#xff0c;并添加描述。客户评价区展示一…