语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

这篇具有很好参考价值的文章主要介绍了语法速通 uni-app随笔【uni-app】【微信小程序】【vue】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、微信小程序

1.1、wx 小程序 工程目录

语法速通 uni-app随笔【uni-app】【微信小程序】【vue】,uni-app,uni-app,微信小程序,vue.js

其中,

pages目录/index目录【必有】:
index.js 编写业务逻辑 【初始数据,生命周期函数】
index.json 编写配置
index.wxml 编写模板 【可理解为本页html】
index.wxss 【可理解为本页css】

1.2、wx 小程序 标签

直接输入关键词敲回车,连尖括号都不需要就可以标签补全

<div> —> <view>

<img> —><image>

<span> —> <text>

<a> —> <navigator>

1.3、wx 小程序 数据绑定

1)初始数据写死

index.wxml 引入变量用 {{}},参见 flask 向 template 中嵌入变量的写法

//index.js
Page({

  
 //页面的初始数据
  
  data: {
    name:'cold'
  },
 
  //生命周期函数--监听页面加载
  
  onLoad(options) {

  },
    //...
})

2)渲染时修改初始数据

//index.js

 //页面的初始数据
  data: {
    name:''
  },
 
  //生命周期函数--监听页面加载
  //setTimeout(()=>{},2000)
  onLoad(options) {
   
    setTimeout(()=>{
      this.setData({name:"sherry"})
    },2000)
  
  },

1.4、wx 小程序条件判断

标签有这样一个属性 wx:if 可用于条件判断

//index.wxml
<view wx:if="{{f}}">{{name}}</view>

1.5、wx 小程序 列表渲染

渲染 | 遍历一组数据 |for循环

以下面 list 为例,

//index.js
list:[1,2,3,4,5]

1)item作为关键词,可以筛选出wx:for`每个成员变量的 value

//index.wxml
<view wx:for="{{list}}">{{item}}</view>

也可以不用item,说明一下用谁,比如说明用it

//index.wxml
<view wx:for="{{list}}" wx:for-item:"it">{{it}}</view>

2)index 作为关键词,可以遍历索引

//index.wxml
<view wx:for="{{list}}">{{index}}</view>

同理,也可以 wx:for-index:"ID"说明一下,直接用ID或其它命名代替。

2、uni-app

<语法速通 uni-app随笔【uni-app】【微信小程序】【vue】,uni-app,uni-app,微信小程序,vue.js

2.1、uni-app 规范

1)页面文件遵循 Vue单文件组件(SFC)规范

body | script | style -> template | script | style

参见 H5 单页面写脚本和样式的理解

2)组件标签靠近小程序规范

标签和微信小程序同

<div> —> <view>

<img> —><image>

<span> —> <text>

<a> —> <navigator> ×     <a> —> <uni-link>

3)接口能力(JS API)靠近微信小程序规范

4)数据绑定及事件处理同VUE.js 规范

(妹学 Vue)

5)为兼容多端运行,使用 flex 布局

2.2、uni-app 特色

  • 条件编译
  • App 端的 Nvue 开发
  • HTML 5+

HT5+ ,HT5+app,这是个什么东西?

HbuiderX ,DCLOUD 公司自家编译器,高度支持 uniapp,组件补全提示只需要输入几个相关不连续的字符就可以 。

2.3、uni-app 模板语法

index.vue 文件中包含三个大的标签,写模板,写脚本,写 样式,很好理解。

其中<template></template>的子标签只能有一个。

<template>
	<view class="container">
	
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				
				
			}
		},
		methods: {
			
			
		}
	}
</script>

<style>
	.container {
		padding: 20px;
		font-size: 14px;
		line-height: 24px;
	}
</style>

2.4、uni-app 数据绑定

什么是动态绑定?

组件内有些值绑定的不是字符串,这里绑定的是数据,而数据是动态。

为什么要动态绑定?

原生组件,属性值呢只能被解析成字符串,想要绑定变量,就要用到动态绑定,而这也是学 uni-app 原因之一。

何为组件?

标签。

2.4.1、一般的数据绑定

例如,这里将content变量作为前端数据绑定,

<template>
	<view class="container">
		
		<view class="">
			{{content}}
		</view>
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				content:" i am a student,learning English very hard."
			}
		},
		methods: {

		}
	}
</script>

为啥数据绑定打双括号很少见?

随着案例的深入,会发现变量打括号会很少用的,最一般的,同时也是最少用的,顶多在组件文本处、页面空白处这样用。

原生组件不支持双括号语法,会将数据命名本身连带双括号一并解析成字符串,uniapp 自有的组件本身就支持动态绑定,更没必要写个双括号来说明什么了,直接上变量名称。

因此,在原生组件中,双括号用不了,在uniapp组件中双括号没意义,显得多余,所以用的就少。

2.4.2、动态 class

:classv-bind:class的缩写

②选择器的值不需要带引号了

//index.vue
<template>
	<view :class=className></view>
</template>


<script>
	export default {
		//初始化数据方法
		data() {
			return {
				className:'uni-app',
                
			}
		},
		methods: {

		}
	}
</script>

2.4.3、动态 onclick

@clickv-on:click 的缩写

②通过this 可以获取data中的所有初始化数据,可利用this.content 直接修改

举个例子,点击事件实现修改content的值,

<template>
	<view class="container">
		
		<view class="" @click="open">
			{{content}}
		</view>
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				
				content:"initial data"
			}
		},
		methods: {
			open(){
				console.log("我被点击了");
				this.content =" i am a student,learning English very hard."
			}
		}
	}
</script>

2.5、uni-app 条件判断

1)借助标签内的v-if 属性,判断要不要渲染这个标签

其值为变量或者 bool 值,只用引号引起来,不需要双重花括号。

<template>
	<view class="" v-if="judge">
		this is true.
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				judge: true

			}
		},
		methods: {

		}
	}
</script>

<style>
	.container {
		padding: 20px;
		font-size: 14px;
		line-height: 24px;
	}
</style>

2)条件不成立不渲染,走下一个标签:

①严格等于 ===;

②在引号内写判断。

<view class="" v-if="content === '内容1'"  >this is content1.</view>
<view class="" v-else-if="content === '内容2'">this is content2</view>
<view class="" v-else="content === '内容3'">this is content3.</view>

2.6、uni-app 列表渲染

1)例如通过数组arr来渲染我们的列表,for 循环

<template>
	<view class="" v-for="item in arr">
		{{item}}
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				arr :[11,22,33,44]

			}
		},
		methods: {

		}
	}
</script>

2)数组下标也表示出来:

①可见默认只表示迭代元素的值,写个元组的形式,哎,索引他就有了。【按照 python 的理解】

②data方法里存放的数据就是字典类型的。【按照 python 的理解】

<template>
	<view class="" v-for="(value,index) in arr">
		{{index}} : {{value}}
	</view>
</template>

<script>
	export default {
		//初始化数据方法
		data() {
			return {
				arr:{
					name :"cold",
					age:22,
					sex:'man'
				}

			}
		},
		methods: {

		}
	}
</script>

2.7、uni-app 基础组件的使用

从常用组件入手,这里介绍几个,建议文档 uniapp.dcloud.io查阅进行全面学习。

文档中有组件 平台差异,性能问题,使用须知等更多细节。

1)容器组件

  • 普通容器<view></view>

  • 滚动容器<scroll-view></scroll-view>

2)表单组件

  • 按钮<button></button>,属性巨强。

  • 富文本编辑器<editor></editor>

  • 选择器<picker></picker>,以往原生实现<select><option></option><select>从数据库查值选地区

  • <input></input>,value 属性的动态绑定 ,比如绑定数据 value

    • <input type="text" :value="value">
      
      <input type="text" v-bind:value="value">
      <!-- 双向绑定 -->
      <input type="text" v-model="value">
      

2.8、uni-app 自定义组件的使用⭐(初级)

属于高级用法,非常重要,可以实现一些自带事件,自带样式的组件定义,还可以返回数据到这个页面给这个页面的其他事件用。

1)自定义组件的一般流程:

  • 注册
  • diy 内容
  • 引入这个 diy 组件(有待考察,或许不必人为引入了)

以创建<btn></btn>这个组件为例,

1、在项目根目录下,新建目录 components , 在里面新建组件,名为btn【勾选创建同名目录】

2、在btn.vue中,使用旧组件定义新组件

<template>
		<view class="btn-box" :style="{color:color}" @click="onClick">
			<slot></slot>
		</view>			
		
</template>

<script>
	export default {
		name:"btn",
		//样式变量
		props:{
			
			color:{
				type:String,
				default:'#ff0000'
			}
		},
		//自定义方法
		methods:{
			onClick(){
				console.log("wo bei dian ji le");
				//发送事件至目标页面
				this.$emit('change',this.color)
				
			}
		},
		data() {
			return {
				
			};
		}
	}
</script>

<style>
.btn-box{
	border: 1;
}
</style>

其中,

  • 通过绑定数据实现动态样式:style
  • 样式变量要定义在 props{} 中,而不是初始数据 data中,而且两者内的数据都可以 this 提取。
  • 像正常的成对标签一样可以中间填入文本要用到<slot></slot>文本插槽。
  • 绑定操作都是在script组件中,style组件用的不多,可能就设计 flex 布局的时候有点存在感?
  • props 属性很多,还可以继续学。
  • 点击组件可以返回一个事件,并且是可控的,给页面某个事件发射数据:
this.$emit(自定义事件,参数)

3、在目标vue文件中引入

<script>
	import btn from '@/components/btn/btn.vue'
	export default{
        components:{
            btn
        },
    }
</script>

我发现现在不需要额外的引入也能用。 — 2023.05.25

4、在 index.vue使用 btn组件

<template>
	<view class="">
		<btn @change="change">点击</btn>
	</view>

</template>

<script>
	
	export default {
		//初始化数据方法
		data() {
			return {
			

			}
		},
		methods: {
			change(e){
				console.log("我是页面的事件,我返回了"+e);
			}
		}
	}
</script>

<style>
	.container {
		padding: 20px;
		font-size: 14px;
		line-height: 24px;
	}
</style>

强调这里的三个 change:

<btn @change="change">点击</btn>

前者对应 this.$emit('change',...)
后者对应 change(e){}

三者同名即可。

2.9、uni-app 基础 API 用法

uni.前缀,说明要调用API了。

2.9.1、请求系统信息

带有回调函数的写法:

onLoad() {
			uni.getSystemInfo({
				success(res) {
					console.log('成功的返回',res);
				},
				fail(err) {
					console.log('失败的返回',err);
				},
				complete(res) {
					console.log('不管成功失败都返回',res);
				}
			})
		},

2.9.2、跳转

举个例子,希望从 index 页面中执行跳转至 test-page-a 页面,则在index.vue中编写业务逻辑,option有很高的可玩性。

1)使用uni.navigateTo()

其中,url 参数指定了要跳转的页面路径,options 参数是一个对象,可以包含一些其他的配置项,如动画效果、跳转时间等。这个例子将跳转到详情页,并使用向右滑入的动画效果,动画持续时间为 1 秒。需要注意的是,使用 uni.navigateTo 跳转时,用户无法返回上一级页面,只能通过点击返回按钮退出应用程序。

<template>
	<view class="">
		<button @click="open">打开</button>
	</view>
</template>

<script>	
	export default {
		//初始化数据方法
		data() {
			return {
			

			}
		},
		methods: {
			open() {
				uni.navigateTo({
					url:'./test-page-a/test-page-a',
					options: {  
					    animation: 'slide-in-right',  
					    time: 1000  
					  }  
				})
			}
		}
	}
</script>

2)使用uni.redirectTo()

重定向到另一个页面,旧页面被销毁,无法返回。

<template>
	<view class="">
		<button @click="open">打开</button>
	</view>
</template>

<script>	
	export default {
		//初始化数据方法
		data() {
			return {
			
			}
		},
		methods: {
			open() {
				uni.redirectTo({
					url:'./test-page-a/test-page-a'
				})
			}
		}
	}
</script>

更多的,比如上传、下载、路由 看文档。

2.10、uni-app 条件编译

  • 具有不冗余的特点,不会存在非当前平台的未编译代码。

  • 不同组件内的注释不同。

  • 更多注意,查阅文档。

<template>	
<!-- ifdef H5 || APP-LUS -->
组件
<!-- endif H5 || APP-LUS -->
</template>

<script>
//	ifdef H5
//	endif H5
</script>

<style>
/* ifdef H5 */
/* endif H5 */
</style>

ifndef 表示唯独不编译这个平台。

条件编译写法 说明
#ifdef APP-PLUS 需条件编译的代码 #endif 仅出现在 App 平台下的代码
#ifndef H5 需条件编译的代码 #endif 除了 H5 平台,其它平台均存在的代码
#ifdef H5 || MP-WEIXIN 需条件编译的代码 #endif 在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

生效条件
VUE3 HBuilderX 3.2.0+ 详情
APP-PLUS App
APP-PLUS-NVUE或APP-NVUE App nvue 页面
APP-ANDROID App Android 平台 仅限 uts文件
APP-IOS App iOS 平台 仅限 uts文件
H5 H5
MP-WEIXIN 微信小程序
MP-ALIPAY 支付宝小程序
MP-BAIDU 百度小程序
MP-TOUTIAO 字节跳动小程序
MP-LARK 飞书小程序
MP-QQ QQ小程序
MP-KUAISHOU 快手小程序
MP-JD 京东小程序
MP-360 360小程序
MP 微信小程序/支付宝小程序/百度小程序/字节跳动小程序/飞书小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW 快应用通用(包含联盟、华为)
QUICKAPP-WEBVIEW-UNION 快应用联盟
QUICKAPP-WEBVIEW-HUAWEI 快应用华为

2.11、uni-app 页面布局

1)没有原生 body 标签怎么实现整个页面的样式?

uni-app 等价实现,

<style>
    page{
        /* 定义整个页面的样式*/
    }

</style>

2)flex布局,老朋友了

display: flex;
margin: 0 auto;
justify-content: center;

3)CSS 外联,比如外联 index.css

page{
	background-color: blue;
}
<style>
	@import './index.css'
</style>

3、浅谈

3.1、随笔目的

好记性不如烂笔头,

习惯做随笔,

造轮子。

3.2、一个话题

新东西太难理解,内容太多?太费时间?如何提效?

注:以下内容是说给我自己听的【保命叠甲】

首先下一个结论,方法可能不对!犯了一个一口吃成胖子的错误,学习是要分阶段的。

如果你在跟课,跟视频等等,啥都想记,是没有相关文档吗?还是文档不如你记得全面?还是你能做到比文档排版更好?更有深度?还是太前沿了,没有前辈经验总结可以借鉴?时间就是这么浪费的,不理解不消化,越学负担越重,进度就是这么慢下来的。所以呢,要循序渐进,反对过度笔记

印象很深刻,考研的时候,过于崇拜记笔记,投入了大量的时间成本,其实也不看。看过高数讲义,武老师的ppt,我在上面做批注,详略得当,既全面,又有重点突出,讲义|PPT排版明显比自己的笔记不知道好了多少,我翻看的频率也上去了,好了好了,不怀旧了。

我理解的学习过程是这样的,三个阶段:

主动的机械模仿阶段👉肤浅简单的理解阶段,学习一般用法👉深度理解阶段,学习使用高级用法。

其中,一二阶段是需要很长一段时间的训练,消化,经验值拉满后才会进入到第三阶段,这个是急不来的,除非,卷王式短时间持续刺激前两个阶段的训练,亦或是,积累一定相关经验,主观感受内容太过简单,也会加快学习进程。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=301wv6epszgg8文章来源地址https://www.toymoban.com/news/detail-522329.html

到了这里,关于语法速通 uni-app随笔【uni-app】【微信小程序】【vue】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app 微信小程序 激励视频广告

    封装激励视频-Ad.js 调用上面写的方法:

    2024年02月12日
    浏览(83)
  • uni-app(微信小程序)获取当前位置uni.getLocation

     1、微信公众平台  开发  开发管理   2、开通之后到项目文件    3、下载腾讯地图插件并引入到文件中    

    2024年02月11日
    浏览(67)
  • [uni-app]设置运行到微信小程序

    1、设置微信小程序开发工具路径 2、检查微信小程序开发工具是否开启了服务端口 服务端口要是没有开启,会报 × initialize。 3、在uni-app开发工具中点击运行微信开发者工具,微信开发工具运行成功。

    2024年02月13日
    浏览(68)
  • uni-app 微信小程序 onReachBottom 不生效

    问题描述: uni-app 微信小程序,页面滑到底部,onReachBottom 没有生效 代码: pages.json 配置 使用 onReachBottom 的页面: 总结: 最外层容器设置 min-height: 100.1vh

    2024年02月07日
    浏览(53)
  • uni-app微信小程序——下拉多选框

    插件来自:select-cy - DCloud 插件市场  

    2024年02月11日
    浏览(50)
  • uni-app微信小程序如何渲染markdown

    在开发个人网站微信登录平台易登微信小程序的时候,由于说明文档是用markdown格式来书写的,在网页上有各种markdown个人渲染引擎,比如这个markdown编辑器无敌了!。 但是在小程序上还是第一次渲染markdown,找了各种方案,但处处是坑,除此之外最后渲染出来的效果也惨不忍

    2024年02月16日
    浏览(60)
  • 微信小程序修改原生组件样式(uni-app)

    微信小程序修改原生组件样式 全局修改,直接将修改的样式写在全局的样式文件中; 特殊情况:修改swiper指示点样式时,需要包裹在swiper的样式选择器下才生效。 直接将下列代码放在全局样式中是不会生效的,需要加上swiper组件的元素选择器或swiper组件的其他样式名也可。

    2024年02月05日
    浏览(76)
  • uni-app 微信小程序自定义导航栏

    上面的导航栏主要由状态栏(就是手机电量显示栏)和小程序的导航栏组成,android手机一般为48px,ios手机一般为44px 1、设置navigationStyle:custom 2、页面导航栏div 3、获取statusBarHeight高度 4、获取navTitleHeight的高度

    2024年02月14日
    浏览(64)
  • 微信小程序转uni-app注意事项

            如果你手头上有一套微信小程序的代码,怎样把它变成一个网页版或者app版本的呢?我推荐你使用uni-app。         使用uni-app可以很方便的将微信小程序代码翻译成uni-app项目,通过uni-app项目又可以编译成h5、app或微信小程序版本。这样一来,写一份代码同时可以

    2024年02月04日
    浏览(59)
  • [uni-app] 微信小程序 如何修改替换头像

     如下图所示,微信小程序中涉及到修改头像的交互 技术: 前端应用框架为uni-app UI框架为uView  思考: 1. 头像点击事件 click 2.从本地相册选择图片或使用相机拍照 uni.chooseImage(OBJECT) ,方法执行成功后根据success中返回的图片的本地文件路径列表 tempFilePaths,做操作 3.上传图片

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包