首页 > 编程语言 >微信小程序

微信小程序

时间:2024-06-15 22:22:12浏览次数:14  
标签:index 微信 程序 wx js wxss pages 页面

环境搭建

官网地址 https://mp.weixin.qq.com/

  • 游客登录,本地开发没问题,发布和支付等功能无法使用。
  • 注册小程序账号,后期发布代码等需要使用。
    • 个人版小程序
    • 企业版小程序(建议)

目录文件

├── pages 【页面文件目录】
│   ├── index 【页面】
│   │   ├── index.js 【页面JS】
│   │   ├── index.json 【页面配置】
│   │   ├── index.wxml 【页面HTML】
│   │   └── index.wxss 【页面CSS】
│   └── logs 【页面】
│   ├── logs.js ...
│   ├── logs.json ...
│   ├── logs.wxml ...
│   └── logs.wxss ...
├── utils 【自定义工具】
│ └── utils.js 【功能的定义】
├── app.js 【全局JS】
├── app.json 【全局配置】
├── app.wxss 【全局CSS】
├── project.config.json 【开发者工具默认配置】
├── project.private.config.json 【开发者工具用户配置】
├── .eslintrc.js 【ESlint语法检查配置】
├── sitemap.json 【微信收录页面,用于搜索】

默认首页设置有下面2种方法

  1. app.json中全局配置调整pages中的页面顺序,第一个就是首页

      "pages": [
        "pages/index/index",
        "pages/logs/logs"
      ],
    
  2. 选择添加编译模式

快速上手

组件

https://developers.weixin.qq.com/miniprogram/dev/component/

  • text,类似于span

    <text>武沛齐</text>
    
  • view,类似于div

    <view>
        <view>源代码学城</view>
        <view>武沛齐</view>
        <view>微信:wupeiqi888</view>
    </view>
    
  • image,类似于img标签

    <image src="/images/1.png" style="width: 750rpx;height: 400rpx;"></image>
    这里像素用rpx,微信的动态像素,会根据手机屏幕的分辨率自动缩放
    
  • icon

    <icon type="success" size='198rpx' color="red"/>
    <icon type="download" size='198rpx' color="#ddd"/>
    
    success, success_no_circle, info, warn, waiting, cancel, download, search, clear
    
  • 跳转,类似于a标签

    <navigator class="menu" url="/pages/index/index">
        <label class="fa fa-superpowers" style="color:#32CD32"></label>
      <view>信息采集</view>
    </navigator>
    
    <navigator 	open-type="switchTab" class="menu" url="/pages/index/index">
        <label class="fa fa-superpowers" style="color:#32CD32"></label>
        <view>信息采集</view>
    </navigator>
    

    绑定事件,在js中跳转:

    <view bindtap="clickMe" data-nid="123" >点我跳转</view>
    传值用data-形参=传入的值
    传入的值会封装,可以从属性(currentTarget.dataset)看到
    
    Page({
      clickMe:function(e){
        var nid = e.currentTarget.dataset.nid;
        console.log(nid);
      }
    })
    
    利用微信的api接口跳转,只能跳到页面,不能跳转到tabar
    wx.navigateTo({
    	url: '/pages/form/form'
    })
    
    wx.switchTab({
    	url: '/pages/my/my'
    })
    

    跳转到其他页面之后,可以在onLoad中获取参数,例如:

    wx.navigateTo({
    	url: '/pages/redirect/redirect?id='+nid
    })
    
    Page({
      onl oad: function (options) {
        console.log(options);
      }
    })
    

    数据绑定

https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/data.html

1 基本展示

<!--wxml-->
<view> {{message}} </view>
// page.js
Page({
  data: {
    message: 'Hello MINA!'
  }
})

2 列表渲染

<!--wxml-->
<!--pages/goods/goods.wxml-->
<text>商品列表</text>
<view>
       默认是index和item,也可以wx:for-index和wx:for-item自定义名字 后者速度快
  <view wx:for="{{dataList}}" >{{index}} -  {{item}}</view>
  <view wx:for="{{dataList}}" wx:for-index="idx" wx:for-item="x">		{{idx}} -  {{x}}
  </view>
    
</view>
<view>
  {{userInfo.name}}
  {{userInfo.age}}
</view>
<view>
  <view wx:for="{{userInfo}}">{{index}} - {{item}}</view>
</view>
// page.js
Page({
  data: {
    dataList:["武沛齐","张开","关闭"],
    userInfo:{
      name:"alex",
      age:18
    }
  }
})

3 条件

<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>
Page({
  data: {
    view: 'MINA'
  }
})

关于block:

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>

所以上述条件如果成立 实际渲染的是下面的div标签,并不会渲染<block wx:if="{{true}}">
 <view> view1 </view>
 <view> view2 </view>

注意: <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

关于hidden:

<view hidden="{{false}}">
  <icon type="success" size='198rpx' color="red"/>
  <icon type="download" size='198rpx' color="#ddd"/>
</view>

wx:if和hidden区别是如果条件不成立,wx:if不会渲染在页面,而hidden只是类似display=None的隐藏效果,实际还是渲染在页面上

而block不会渲染自身作为条件渲染的标签

4 事件绑定

bindtap绑定的是点击事件,当bindtap绑定输入事件时会出现输入的数据无法出现在页面中的情况

 <view class='wel-list' bindtap='TZdown'>
    <image src="/images/welcome_08.png"></image>
    <text>C语言资料下载</text>
 </view>

Page({
  TZdown: function () {
    wx.navigateTo({
      url: '../download/download'
    });
  }
})

bindinput绑定的是文本输入事件

<input type="number" placeholder="请输入手机号" class="inp-holder" maxlength="11" bindinput="getPhone" />
<input type="number" placeholder="请输入验证码" class="inp-holder" maxlength="6" bindinput="getCode" />

 getPhone: function (e) {
        var val = e.detail.value;
        this.setData({
            telphone: val
        });
    },   

     // 拿到验证码
getCode: function (e) {
        var val = e.detail.value;
        this.setData({
            code: val
        });
    },

5 双向绑定 类似vue的 v-model

下面示例中Input的bindinput 是实现类似VUE中变量在动态显示的效果,每次input框的数值变动会触发里面绑定的函数

model:value是新功能效果,可以省略bindinput,但是会在console拦输出告警,想要消除告警后面还是要跟一个bindinput

最后还是要通过set.Data进行修改数值,

  • wxml

    <view> {{city}} </view>
    
    <input value="{{city}}" bindinput="textBind" />
    
    <input model:value="{{city}}" bindinput="textBind" />
    
  • 修改数据

    // pages/info/info.js
    Page({
        data: {
            city:"北京",
            namelist:["1","2","3"]
        },
        textBind(e){
            //console.log(e);
            var info =this.data.namelist
            info.push("4")
            this.setData(
                {
                    city:e.detail.value,
                    //列表如果要修改后刷新值也是需要setData的
                	namelist:info
                });
        }
    }
    

引入外部的字体图案

参考 https://cloud.tencent.com/developer/article/1969962
下载第三方字体,比如fontawesome
找到里面的webfont中的字体文件,进行base64转换后下载
将上一步解压的文件中的stylesheet.css ,后缀改为wxss
这里分两种思路,建议用第二种

  1. 在微信小程序项目的根目录中新建style文件夹,并将刚刚改名的stylesheet.wxss复制进去,并在style文件夹中创建一个新的文件叫font-awesome.wxss,然后在app.wxss进行导入@import './style/font-awesome.wxss';
  2. 也可以直接复制到app.wxss,因为会全局加载,后续不用导入可以直接使用
    <text class="far fa-circle-question"></text>

css样式

像素

  • px
  • rpx,750rpx(小程序)

flex布局

一种非常方便的布局方式。
在容器中记住4个样式即可。

display: flex;   				flex布局
flex-direction: row;			规定主轴的方向:row/column
justify-content: space-around;	元素在主轴方向上的排列方式:flex-start/flex-end/space-around/space-between		
align-items: center;			元素在副轴方向上的排列方式:flex-start/flex-end/space-around/space-between		

标签:index,微信,程序,wx,js,wxss,pages,页面
From: https://www.cnblogs.com/Young-shi/p/18249767

相关文章

  • 程序员应具备的职业素养:我的见解与分享
    作为一名程序员,我们不仅仅是在编写代码,更是在塑造一个产品的灵魂,参与一个团队的合作,甚至是在推动整个行业的发展。因此,除了扎实的编程技能外,我们还需要具备一系列的职业素养。以下是我个人对程序员应具备的职业素养的一些见解与分享。1.持续学习与创新精神编程技术日新......
  • Java程序设计的精髓:构建稳健的异常处理体系
    在Java的世界里,异常处理是确保程序稳定性和健壮性的关键一环。一个良好的异常处理机制不仅能够提升用户体验,还能在出现问题时保护应用程序不受损害。本文将深入探讨Java中的异常处理机制,并通过实例和图解来展示如何构建一个稳健的异常处理体系。异常处理基础在Java中,异常(Exce......
  • 【NOI】C++程序结构入门之循环结构三——break、continue
    文章目录前言一、循环的流程控制1.1导入1.2循环的打破与跳过1.2.1break打破1.2.2continue跳过1.2.3总结二、例题讲解问题:1468.小鱼的航程问题:1074-小青蛙回来了问题:1261.韩信点兵问题:1254.求车速问题:1265.爱因斯坦的数学题三、总结四、感谢前言循环......
  • python小程序——实现答题作弊
    前言:    本程序可实现对已给出题库的网页知识答题活动能够自动给出答案功能,由于写程序的时候马上就快要到考试时间了,所以写的有点仓促,后续可完善的地方还有很多,不过这个简陋版的能用就行。        本程序的使用步骤是只需鼠标选择一下题目的文本,程序就会自动......
  • CLFS驱动程序(clfs.sys)是Windows操作系统中的一个组件,它提供了日志记录和恢复功能,以增
    clfs.sys是Windows操作系统中的一个系统文件,它是CLFS(CommonLogFileSystem)驱动程序的一部分。CLFS是Windows操作系统中用于管理日志文件的文件系统,它提供了日志记录和恢复功能。CLFS驱动程序(clfs.sys)具有以下功能和作用:日志记录:CLFS可以记录系统的操作、事件和错误等信息到......
  • 闲着也是闲着,不如开发个小程序玩玩吧
    1、前言        其实从刚接触前端开始,当时学习小程序的时候都一直想着做一个自己的小程序,不过当时只会一些前端的东西,关于接口的想都不要想了,完全不会,后来也不了了之。后来到现在为止(三年前端工作经验)接触了服务器,egg、midway等一些框架,也相续写了几个接口,再提起了这......
  • 完美解决“由于找不到msvcp140.dll,vcruntime140_1.dll,msvcp100.dll,msvcr120.dll等导致
    成功解决问题:由于找不到msvcp140.dll,vcruntime140_1.dll,msvcp100.dll,msvcr120.dll,mfc140u.dll,mfc140u.dll等导致的无法继续执行代码。重新安装程序可能会解决此问题。......
  • idea中给java程序传启动参数的说明
    一、idea中给java程序传启动参数的说明在idea中运行java程序时可以传递三种类型的参数:vm参数,环境变量参数,程序参数publicclassMyTest{publicstaticvoidmain(String[]args){//获取vmoptions传递的参数Stringparam1=System.getProperty("v......
  • 045篇 - 程序员提示词(Prompts for Programmers)
    大家好,我是元壤教育的张涛,一名知识博主,专注于生成式人工智能(AIGC)各领域的研究与实践。我喜欢用简单的方法,帮助大家轻松掌握AIGC应用技术。我的愿景是通过我的文章和教程,帮助1000万人学好AIGC,用好AIGC。在这一章中,我们将探讨程序员如何通过提示词工程利用ChatGPT的力量。C......
  • 为什么程序员老喜欢买云服务器?
    前言不知道你发现了没有?作为程序员或者测试工程师的你,身边的同事或者同学,都喜欢买一台或者多台云服务器。为什么呢?他们是为了耍酷?答:当然不是。云服务器对我们来说真的非常有用。不信继续往下看。今天这篇文章就跟大家一起聊聊,云服务器的一些用途,为什么程序员老爱买云服务器......