微信小程序知识点(上)

本文详细介绍了微信小程序的开发中涉及的各种知识点,包括流式布局、滚动效果、输入框值获取、超链接样式、后台js数据操作、页面传参、picker设置、checkbox控制显示、CSS样式优先级、position理解、JSON范围、WXML和WXSS注意事项、分页加载、scroll-view使用、wx:key用法、字符串和特殊字符处理、变量赋值、open-data使用、动态修改页面标题、wx:if与wx:elif和wx:else的区别、全局变量globalData、数据缓存Storage、模板使用、模块化与格式化、数据查询与批量操作、文件存储、数据缓存、全局SDK与云函数SDK区别、数据库规划、工程化、云数据库安全规则、WeUI组件库引入等,全面覆盖了小程序开发的常见问题和解决方案。
摘要由CSDN通过智能技术生成

1.流式布局中flex-direction:属性要和display:flex搭配使用。

2.如果item过多,要是实现上下拖拽效果,容器选择scroll-view.

3.微信小程序获取input输入框的值

<!--wxml-->
<view class='box'>
  <form bindsubmit='searchBox'>
      <input type='text' class='userBox' name='username'></input>
      <input type='text' class='pwdBox' name='pwd'></input>
      <button class='login' form-type='submit'>登录</button>
  </form>
  <text>输入的内容:{
  {first}}</text>
  <text>输入的内容2:{
  {second}}</text>
</view>
<!--js-->
searchBox:function(e){
    const that = this;
    let first,second;
    that.setData({
      first    :    e.detail.value.username,
      second   :     e.detail.value.pwd
    })
  }
//这个函数一定要写在标签上才能用e.detail.value获取到

4.如何在超链接添加下划线和删除线:

<!--wxss-->
text-decoration:underline; //下划线
text-decoration:line-through;//删除线

5.后台js函数中调用和设置data里面的数据

在调用data的变量时,要使用this.data.xxx,不要忘了这个data。

page({
data:{
test:'this is just test'
},
setup:function(e){
this.setData({//在函数中设置data中的值
test:'变化后的test值'
})
let test1 = this.data.test//获取data中的指定值
}
})

6.如何获取到页面通过url传参传递过来的值

比如从A页面传参跳转到B页面。在B页面的onLoad(options)方法,从url路径中获取传递的参数值。

<!--A.js-->
wx.navigateTo{

url:'../nextPage/nextPage?getid='+getid

}

或者通过wxml的url直接传递参数

<!--A.wxml-->
<navigator url=../nextPage/nextPage?getid={
  {id}}" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">

在页面B接收参数

<!--b.js-->
onload:function(e){
var id = e.getid
}

如果需要在页面之间传递对象,就需药在A页面中先使用 JSON.stringify(obj)对需要传递的对象数据进行转换, 然后在最后在B页面的onload方法里,使用JSON.parse(json) 转换为对象类型的数据。

<!--A.js-->
  Jump() {
      <!--obj为需要传递的对象-->  
     var str= JSON.stringify(obj);
   wx.navigateTo({
    url: '/pages/list/list?str=' + str,
   })
  }
<!--B.js-->
onload: function(option) {
    var data = JSON.parse(option.str)
   //现在data就是index.js中传过来的数据
}

7.picker默认值设置

<picker bindchange="bindPickerChange" range="["已婚","未婚","离异"]" value="0">

需求:

默认显示"请选择",当点击picker后弹出的才是这三个选项,请问这样该如何实现? 

目前想到的是在range中添加第一项为“请选择”,但这样冗余数据会很多,因为有数个picker,请问这个需求该如何实现?小程序文档中picker已经查看。

解决办法:三目运算符

<!--wxml-->
<picker bindchange="typeChange" value="{
  {typeIndex}}" range="{
  {types}}">
    <view class="picker">{
  {typeIndex==null ? "请选择" : types[typeIndex]}}</view>
</picker>

<!--js-->
Page({
   data: {
      types:["喜欢","一般","讨厌"],
      typeIndex:null
   },
    typeChange(event){
      this.setData({
            typeIndex:event.detail.value
      })
   }
})

8.如何通过checkbox选中状态控制组件的显示与隐藏

通过点击checkbox来切换后台show变量的值,从而控制模块是否进行显示。

<!--前台wxml代码-->
<checkbox-group bindchange="isShow">
      <label for="isShow">
          <view>
              <checkbox id="isShow" value="agree" checked="{
  {}}" /> 是否要给家属投保
          </view>
       </label>
</checkbox-group>

<view wx:if="{
  {show}}">
        <view class="addjiashu">
          <navigator url="../jiashu/jiashu">添加投保家属</navigator>
        </view>
</view>
//后台js代码
page({
data:{
    show:false,
},

isShow:founction(e){
    var sh = this.data.show
    this.setData({
        show:!sh
})
}
})

9.css样式优先级

选择器

权重值

!important标识

10000

行内样式

1000

id选择器

100

类选择器

10

标签选择器

1

通配符 *

0

10.关于position的一些理解

absolute是针对他第一个父元素为相对或者绝对定位的位置来进行定位,如果没有,那么就会相对于body进行定位,如果下拉页面时那么该元素也会跟着页面下拉,而fixed是针对浏览器窗口进行定位,就是手机边框进行定位,下拉页面时不会跟随页面下拉,因此请尽量使用absolute值。

11.json值得范围

JSON的值只能是以下几种数据格式:

  • 数字,包含浮点数和整数

  • 字符串,需要包裹在双引号中

  • Bool值,true 或者 false

  • 数组,需要包裹在方括号中 []

  • 对象,需要包裹在大括号中 {}

  • Nul

另外需要注意的是,小程序的json配置是一种静态的配置文件,且无法在json配置文件中添加注释。

12.WXML一些注意事项

WXML 全称是 WeiXin Markup Language,

在动态绑定中,属性值可以动态的进行绑定,需要注意的是属性值,必须被双引号包裹,且变量名大小写敏感。动态bang通过 { { 变量名 }} 语法可以使得 WXML 拥有动态渲染的能力。

除此外还可以在 { { }} 内进行简单的逻辑运算。 

<!-- 正确的写法 -->
<text data-test="{
  {test}}"> hello world</text>
<!-- 错误的写法  -->
<text data-test={
  {test}}> hello world </text >

所有wxml 标签都支持的属性称之为共同属性,如表2-1所示。

属性名 类型 描述 注解
id String 组件的唯一标识 整个页面唯一
class String 组件的样式类 在对应的 WXSS 中定义的样式类
style String 组件的内联样式 可以动态设置的内联样式
hidden Boolean 组件是否显示 所有组件默认显示
data-* Any 自定义属性 组件上触发的事件时,会发送给事件处理函数
bind*/catch* EventHandler 组件的事件

13.WXSS一些注意事项

表2-2 小程序WXSS支持的选择器

类型 选择器 样例 样例描述
类选择器 .class .intro 选择所有拥有 class="intro" 的组件
id选择器 #id #firstname 选择拥有 id="firstname" 的组件
元素选择器 element view checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
伪元素选择器 ::after view::after 在 view 组件后边插入内容
伪元素选择器 ::before view::before 在 view 组件前边插入内容

WXSS优先级与CSS类似,权重如图2-13所示。

图2-13 WXSS选择器优先级

权重越高越优先。在优先级相同的情况下,后设置的样式优先级高于先设置的样式。

小程序的运行环境分成渲染层和逻辑层,第2章提到过 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层。

14.在scroll-view中实现分页加载

在scroll-view中实现分页加载时,尤其是当页面底部有固定组件时会导致onReachBottom方法无法触发导致无法进行分页加载,这时候推荐使用scroll-view自己的滚动到底部触发的方法,bindscrolltolower,通过绑定该方法,实现scroll-view滚动到底部触发实现分页加载.

15.scroll-view组件使用的注意事项

如果想实现scroll-view的竖式滚动,需要设置scroll-y属性,且需要给scroll-view组件一个固定的height值,否则无法实现组件的滚动

16.组件内容垂直水平居中

通过在组件样式中添加下列代码,实现组件内的内容垂直/水平居中居中:

.list-item{
  display: flex;
  align-items:center;/*垂直居中*/
  justify-content: center;/*水平居中*/
  }

17.wx:key的默认设置写法

<view wx:for-items="{
  {newstitle}}" wx:for-item="title" wx:key="*this">
  {
  {title}}
</view>

*this代表在 for 循环中的 item 本身,而{ {item}}的item是默认的,默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item;使用 wx:for-item 可以指定数组当前元素的变量名,使用 wx:for-index 可以指定数组当前下标的变量名。

18.关于''和""以及特殊字符。

在实际应用中,总有一些具有特殊含义的字符无法直接输入,比如换行 \n、Tab键 \t、回车 \r、反斜杠 \\,这些我们称之为转义字符。JavaScript中单引号和双引号都表示字符串。如果字符串中存在双引号,建议最外层用单引号;如果字符串中存在单引号,建议最外层用双引号。如何在控制台给打印的字体添加颜色等,大家可以自行去研究。

19.关于变量和赋值。

JavaScript可以使用let语句声明变量,使用等号=可以给变量赋值,等号=左侧为变量名,右侧为给该变量赋的值,变量的值可以是任何数据类型。JavaScript常见的数据类型有:数值(Number)、字符串(String)、布尔值(Boolean)、对象(Object)、数组(array)、函数(Function)等。

在JS中,var用于声明全局变量,let用于声明局部变量,const用于声明常量,在使用时注意区分。

20.<open-data>假性获取

并不是真的获取到了用户的信息,只是假性获取前台显示了一下,不用用户点击授权即可显示用户头像昵称等信息。

<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>

 

21.微信小程序通过JS动态修改页面标题setNavigationBarTitle

动态设置导航栏标题是一个非常简单的API,在技术文档里面可以了解到,只要给wx.setNavigationBarTitle()的title对象赋值,就能改变小程序页面的标题。

我们可以在页面生命周期函数onload里来调用API,例如在新页面动态设置标题:

  onLoad: function (options) {
    wx.setNavigationBarTitle({
      title:"onLoad触发修改的标题"
    })
  },

22.下拉小程序不出现空白

当我们下拉很多小程序的时候,都会出现一个白色的空白,很影响美观,但是如果我们在windows的配置项里把backgroundColor和navigationBarBackgroundColor的颜色配置成一样,下拉就不会有空白啦,比如:在app.json文件中添加

"window":{
  "backgroundTextStyle":"light",
  "navigationBarBackgroundColor": "#1772cb",
  "navigationBarTitleText": "HackWork技术工坊",
  "navigationBarTextStyle":"white",
  "backgroundColor": "#1772cb"
},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值