精华内容
下载资源
问答
  • 该商成包含:首页、分类、拼团、个人中心及相关子页面,您只需申请相关appid填入相关位置即可使用,部分页面截图如下: 下载地址:

    该商成包含:首页、分类、拼团、个人中心及相关子页面,您只需申请相关appid填入相关位置即可使用,部分页面截图如下:
    下载地址:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 1. 实现第一个小程序页面 2. 了解云开发的基础知识:云函数、云数据库 3. 引入第三方UI组件库:wei-ui、vant

    主页面

    为了测试与开发方便,暂时不区分客户端与服务端。增设一个主页面判断用户身份。根据身份的不同,显示不同的功能入口。如果是管理员,则显示管理端、客户端两个入口(方便测试)。如果非管理员,只能进入客户端。如下图所示:

    我们需要做以下工作:

    • 增加一个页面并将其作为主页面
    • 增加判断用户身份的云端函数
    • 设置存储用户信息的数据表

    通过增设这个页面功能,我们将接触熟悉几乎所有小程序开发涉及的知识。万事开头难,我们将会最大化的利用开发工具生成的Demo。所以,请先保留工程那些工具自动生成的碍眼的各种文件。

    入口页面

    虽然我们可以通过在工程浏览器的文件夹上的右键菜单中选择直接创建新页面,还是建议大家先为该页面新建一个文件夹,然后在该文件夹中创建页面。暂且将新加入的页面命名为mainPage,在该文件夹下新建页面index。

    有些时候怎么做都可以的时候,观察下官方给的demo能让你更好的做出选择。

    在这里插入图片描述
    程序所有的页面都在app.json中的pages字段注册。这里我们加入将自己前面建立的页面路径(mainPage/index),并将其放在第一的位置,它将作为程序启动后第一个页面出现。
    在这里插入图片描述

    云函数与云数据库

    程序所有的数据都保存在云端数据库中。即便没有从事过web开发,对于XML、JSOn之类的数据也应该不陌生。云数据库集合中的每条记录都是一个 JSON 格式的对象。对于有过关系型数据库使用经验,但第一次接触该数据的人,可以对照文档快速理解,下图给出几处常见术语的对比:
    在这里插入图片描述

    为了实现用户的身份识别与必要信息存储,我们在云开发控制台中新建两个集合:
    在这里插入图片描述

    • admin 程序初始配置,由开发人员控制。其中的admins字段保存了所有管理员的身份ID(手动录入)
    • users 存储已登陆过的用户信息

    为记录增加字段时,可以指定类型。比如,管理员字段就是包含了用户openid的数组
    在这里插入图片描述
    demo包含了获取用户openid的示例,将其值填入admins字段。这样openid在这个数组中的用户就能作为管理员使用该小程序了。
    在这里插入图片描述

    代码实现

    小程序不是完整的js运行环境,具体支持情况请参考腾讯的官方文档JavaScript 支持情况(我没有javascript语言的背景,也不打算系统学习它。如果报错,换一种代码实现方式对我来说更快捷)。WXMLWXSS和HTML、CSS虽然很像,但确实不能等同。因为我没有其中任何一种语言的基础,反而没有什么困扰。文章给出关键代码实现,完整的项目请参考本软件在github的提交。

    云端实现

    这里我们通过修改cloudfuntions目录下的login函数来实现。该函数实现从admin集合读取管理员的openid列表,判断当前用户是否管理员。然后检查users集合,如果没有该用户的记录,就补充创建。

    // 云函数模板
    // 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署”
    
    const cloud = require('wx-server-sdk')
    
    // 初始化 cloud
    cloud.init({
      // API 调用都保持和云函数当前所在环境一致
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    
    const db = cloud.database()
    exports.main = async (request) => {
      console.log(request)
      const wxContext = cloud.getWXContext()
      //判断用户类型
      var res = await db.collection('admin').limit(1).get()
      var data = res.data[0]
      var index = data['admins'].findIndex(item => item == wxContext.OPENID)
      var user = index != -1 ? 'admin' : 'user'
      //用户信息注册
      const userCol = db.collection('users')
      res = await userCol.where({
        openid: wxContext.OPENID
      }).get()
      if (res.data.length == 0) {//新用户
        await userCol.add({
          data: {
            info: {
              avatarUrl: request.userInfo.avatarUrl,
              nickName: request.userInfo.nickName
            },
            openid: wxContext.OPENID
          }
        }).catch(console.error)
      } else {
        if (res.data[0].info.avatarUrl != request.userInfo.avatarUrl
          || res.data[0].info.nickName != request.userInfo.nickName) {
          await userCol.where({
            openid: wxContext.OPENID
          }).update({
            info: {
              avatarUrl: request.userInfo.avatarUrl,
              nickName: request.userInfo.nickName
            }
          }).catch(console.error)
        }
      }
      //返回信息
      return {
        success: true,
        data: {
          user: user,
          openid: wxContext.OPENID
        }
      }
    }
    

    对于异步函数,常见有callback、promise两种调用方式。小程序的官方文档也多采用这两种方式举例。但如果有多层调用的话,这种嵌套就比多层for嵌套的可读性还要差。因此,除非有需要函数要以非阻塞方式被调用,一般使用await来代替callback、promise。

    小程序端实现

    建议大致浏览下官方关于框架的文档中关于注册页面、页面生命周期、WXML、简易双向绑定的说明。

    一个页面的实现代码大致如下:

    Page({
      data: {
        text: "This is page data."
      },
      onLoad: function(options) {
        // Do some initialize when page load.
      },
      onShow: function() {
        // Do something when page show.
      },
      onReady: function() {
        // Do something when page ready.
      },
      onHide: function() {
        // Do something when page hide.
      },
      onUnload: function() {
        // Do something when page close.
      },
      onPullDownRefresh: function() {
        // Do something when pull down.
      },
      onReachBottom: function() {
        // Do something when page reach bottom.
      },
      onShareAppMessage: function () {
        // return custom share data when user share.
      },
      onPageScroll: function() {
        // Do something when page scroll
      },
      onResize: function() {
        // Do something when page resize
      },
      onTabItemTap(item) {
        console.log(item.index)
        console.log(item.pagePath)
        console.log(item.text)
      },
      // Event handler.
      viewTap: function() {
        this.setData({
          text: 'Set some data for updating view.'
        }, function() {
          // this is setData callback
        })
      },
      customData: {
        hi: 'MINA'
      }
    })
    

    页面渲染或者加载都会使用data作为数据源。data中的数据必须是可以转成JSON的类型,如字符串,数字,布尔值,对象,数组等。具体说明请参考官方关于页面的文档

    通过Button组件调用wx.getUserInfo会弹出用户权限申请:
    在这里插入图片描述

    注意我们不能通过直接调用该接口弹出授权请求。参考官方文档:在用户未授权过的情况下调用此接口,将不再出现授权弹窗,会直接进入 fail 回调(详见《公告》)。在用户已授权的情况下调用此接口,可成功获取用户信息。要使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息

    这里我们保存通过该函数获取的头像图片链接和昵称。通过wx.cloud.callFunction来调用我们前面实现的login云函数。参数中的name字段的值为云函数的名称,这是通过云函数的package.json文件中的name字段来设定的(虽然一般情况下云函数文件夹的名称跟云函数名称保持一致):
    在这里插入图片描述

         // 获取用户信息
        let self = this
        wx.getUserInfo({
          success: async function (res) {
            console.debug(res)
            var userInfo = res.userInfo
            var nickName = userInfo.nickName
            var avatarUrl = userInfo.avatarUrl
            self.setData({
              login: true,
              avatarUrl: avatarUrl,
              userInfo: userInfo
            })
            var ret = await wx.cloud.callFunction({
              name: 'login',
              data: {
                userInfo: {
                  nickName: nickName,
                  avatarUrl: avatarUrl
                }
              }
            })
            console.debug(ret)
            self.setData({
              _openid : ret.result.data.openid
            })
    
            if (ret.result.data.user == "admin") {//user
              self.setData({
                isAdmin: true
              })
            } 
          }
        })
    

    页面的数据保存在页面js文件的data数据段中。

    • 如果要使UI能反应这些数据变化,要以this.setData()的方式更改数据。直接赋值(比如:this.data.nickName='昵称更改了)是不能刷新UI的,还会造成UI和实际数据不一致 。另外要注意的是,如果要在以callback或者promise风格的匿名函数中调用setData,要提前保留this的值。因为该处的this已经并非指代该页面对象了。
      在这里插入图片描述
    • 对于那些不影响界面的变量,命名时要以下划线开头,比如 _openid

    授权后的程序界面如下图所示:
    在这里插入图片描述
    index.wxml:

    关于WXML文件,请参考微信开放文档

    <view>
      <view class="userinfo">
        <button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo" class="userinfo-avatar"
          style="background-image: url({{avatarUrl}})" size="default"></button>
        <view class="userinfo-nickname-wrapper">
          <button class="userinfo-nickname">点击头像登陆</button>
        </view>
      </view>
      <button class="simple-button" wx:if="{{isAdmin}}" bindtap="onSelectedAdmin">管理员</button>
      <button class="simple-button" bindtap="onSelectedCustomer">客户</button>
    </view>
    

    index.wxss:

    .userinfo {
      margin-top: 40rpx;
      height: 140rpx;
      width: 100%;
      background: #fff;
      border: 1px solid rgba(0, 0, 0, 0.1);
      border-left: none;
      border-right: none;
      display: flex;
      flex-direction: row;
      align-items: center;
      transition: all 300ms ease;
    }
    
    .userinfo {
      padding-left: 120rpx;
    }
    
    .userinfo-avatar {
      width: 100rpx;
      height: 100rpx;
      margin: 20rpx;
      border-radius: 50%;
      background-size: cover;
      background-color: white;
    }
    
    .userinfo-avatar[size] {
      width: 100rpx;
    }
    
    .userinfo-avatar:after { 
      border: none;
    }
    .userinfo-nickname {
      font-size: 32rpx;
      color: #007aff;
      background-color: white;
      background-size: cover;
      text-align: left;
      padding-left: 0;
      margin-left: 10px;
    }
    
    .userinfo-nickname::after {
      border: none;
    }
    
    .userinfo-nickname-wrapper {
      flex: 1;
    }
    .simple-button{
      border : 2px solid #007aff;
      margin-top: 10px;
    }
    

    虽然只是加入了一个简单的页面,但几乎涉及了小程序开发所需要的所有知识(可把我这个web开发白板折腾的不轻)

    • 知道如何去查官方文档,而且知道官方文档没那么严谨,好几个地方会涉及同一个知识点,却没有一处能说完整。
    • 了解web开发的常识,比如HTML、CSS、Javascript的基础知识。
    • 通过云函数及其调用,实现前后端(客户端、服务端)交互。
    • 使用Json云数据库。

    选择UI组件库

    从上面的实现一个简单页面的代码可以看出,对于可视化程序,相当大的难度和工作量都在界面上。我没打算成为CSS的专家,甚至没打算去系统学习它。因此迫切希望能找到合适的UI库,这不但能降低UI设计门槛,减轻负担,还能减少编码量。选择的原则:

    • 尽量使用腾讯官方提供的界面库
    • 如果非要选择第三方界面库,那就选个尽量小的

    WeUI

    官方名片:这是一套基于样式库weui-wxss开发的小程序扩展组件库,同微信原生视觉体验一致的UI组件库,由微信官方设计团队和小程序团队为微信小程序量身设计,令用户的使用感知更加统一。项目地址
    在这里插入图片描述

    它还有个好处就是支持扩展库引入,不占用小程序包体积

    Vant

    官方名片:Vant 是有赞前端团队开源的移动端组件库,于 2016 年开源,已持续维护 4 年时间。Vant 对内承载了有赞所有核心业务,对外服务十多万开发者,是业界主流的移动端组件库之一。
    在这里插入图片描述
    以上UI组件库,大家可通过扫描二维码后体验。

    整合UI组件库

    微信小程序开发支持使用npm安装第三方库

    但是实际操作时有问题,比如,如果使用npm安装了vant、以扩展库方式引入weui,无论怎么设置都有冲突,百度了一圈子,不少人遇到类似问题,但试用了不少别人解决问题的方法,我这里没解决,这可能跟不熟悉npm有关。

    但为了避免不必要的麻烦,以copy文件的方式(官方第二种方式)使用vant:
    在这里插入图片描述
    vant 的源代码可以从这里下载。这里我们将其放在工程的miniprogram/components文件夹中:
    在这里插入图片描述

    以扩展包的方式引入weui

    这种方式引入weui非常简单,只需要在app.json中增加:
    “useExtendedLib”: {
    “weui”: true
    }
    在这里插入图片描述

    接下来

    我们会利用本次的知识和导入的UI组件库实现管理端的主界面,并实现商品信息的管理功能,如下:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 附带使用教程+小程序模板+插件 源码功能: 1.首页自定义轮播 2.首页自定义热门推荐 3.在线客服 4.自定义文章分类 5.查看文章详情 6.文章页分享朋友圈(限制安卓) 前提准备: 1.网站必须为zblog程序 2.网址必须备案 ...

    介绍:

    ZBLOG
    主题:青春小程序主题
    版本:1.0
    作者:鹏仔先生
    附带使用教程+小程序模板+插件
    源码功能:
    1.首页自定义轮播
    2.首页自定义热门推荐
    3.在线客服
    4.自定义文章分类
    5.查看文章详情
    6.文章页分享朋友圈(限制安卓)
    前提准备:
    1.网站必须为zblog程序
    2.网址必须备案
    3.必须为https协议
    4.Zblog必须为伪静态
    使用教程:
    第一步:下载青春小程序插件,在zblog后台进行上传安装。
    第二步:注册微信小程序账号(个人即可),并下载小程序开发工具,将小程序代码插入开发工具即可。
    第三步:点击编辑器右上角详情,修改自己的小程序APPID和名称
    第四步:修改utils下http.js中的接口地址改为你的网址(记得需要在小程序后台管理添加效验域名)
    第五步:点击开发工具右上角的上传
    第六步:修改zblog后台 青春小程序插件配置,小程序插件配置有对应的文本教程
    第七步:登录小程序后台,点击版本管理,上传发布,审核通过后确认发布即可。


    网盘下载地址:

    https://zijiewangpan.com/vs0FTFZKPle


    图片:



    展开全文
  • 人人商城小程序模板消息,是对接微信小程序后台的模板消息,在微信小程序后台申请模板消息,从模板库中选用添加至我的模板后,才可以使用。> **第一步:**登录微信小程序后台,没有申请模板消息的点击申请模板...

    人人商城小程序模板消息,是对接微信小程序后台的模板消息,在微信小程序后台申请模板消息,从模板库中选用添加至我的模板后,才可以使用。

    > **第一步:**登录微信小程序后台,没有申请模板消息的点击申请模板消息,申请的直接点击添加,微信规定模板最多添加25个

    ![](https://wiki.we7shop.com/uploads/6f2aa6da64353f80b1f35e8d5b44228d.png)

    > **第二步:**输入支付、发货、收货,进行搜索选用需要的模板消息,微信小程序后台的模板消息会提供多个关于支付、发货、收货的模板消息

    商家根据实际需求选用即可

    ![](https://wiki.we7shop.com/uploads/30eaebfd96d65671c1bfc8d7043dd7ab.png)

    > **第三步:**进入人人商城后台,点击小程序——其他设置——模板消息——添加模板,自定义设置模板发送的消息内容

    ![](https://wiki.we7shop.com/uploads/8aa44e0e47fd7c327992f1476e374d24.png)

    * “键名”填写公众平台模板消息中的变量,例如:{{keyword1.DATA}}

    * “键值”自定义设置内容信息,在右侧选择变量信息,例如:\[支付时间\]

    * “放大显示”每条消息允许一个字段放大显示

    模板设置参照:

    ![](https://wiki.we7shop.com/uploads/814f6ca4c4e7e444f7dd3c780438f3ec.png)

    ![](https://wiki.we7shop.com/uploads/fa2aa545e3583085c5b9074e19c3af8f.png)

    > **第四步:**点击小程序设置——模板消息——选择设置的模板消息库即可

    ![](https://wiki.we7shop.com/uploads/27e95a924b165b18014c72218cac3aa7.png)

    > **第五步:**买家微信支付完毕后,直接就能收到设置的模板消息内容

    ![](https://wiki.we7shop.com/uploads/6d353893d26484d9122424a0d943ca77.png)

    * **温馨提示:**

    * 1、当买家在小程序内完成1次微信支付时,可在7天之内最多向买家推送3条模板消息,余额支付、支付宝支付等其他支付方式将不能触发模板消息

    * 2、一个订单最多只能发送3条模板消息

    展开全文
  • 介绍 行业:医疗保健 开发软件:微信WEB开发者工具 文件大小:1007.73 KB 下载链接 http://www.bytepan.com/vj1A1GLdfgR 图片
  • WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用 定义模板时:使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段 导入模板:使用import导入模板 使用模板时:使用...
  • 示例: 创建目录和文件: mytemp.wxml: <...-- 第一层必须是template标签,且name...这是我自定的模板内容</view> <view class="userInfo"> <view class="userName">用户名: {{username
  • 1 添加一个小程序的消息模板,获取到模板id,存储到数据库中,方便以后修改调用这里有个坑,就是 form_id, 这个是用户触发表单事件的表单id,需要存储到数据库中,给这个表单提交以后的数据,添加一个字段叫做form_id...
  • 1.模板文件的地址\pages\public\public.wxml 2.模板文件的代码 <template name="staffName"> <view> FirstName view> template> 3.引入模板文件和使用 <import src="../public/public.wxml" /> ...
  • 小程序模板】功能模块+仿vivo手机商城微信小程序+品牌手机APP购物网页模板源码简介与安装说明: 仿vivo手机商城微信小程序 品牌手机app购物网页模板源码下载。 小程序源码下载地址:(82条消息) 【小程序...
  • 小程序配置模板消息与公众号配置模板消息略有不同,下面我们来学习下小程序配置模板消息## 前言适应于微擎小程序模块配置模板消息## 准备认证小程序一枚、已搭建好的微擎已对接好小程序)、需要配置模板消息的模块## ...
  • WXML模板本节学习目标(1)了解wxml的基本概况和设计理念(2) 掌握wxml语言的各种常用语法(一)wxml是什么wxml 是微信小程序团队设计的一套标签语言,可以构造出页面的结构,类似html借助wxml提供的组件我们可以实现文字...
  • 收集整理的117套各类微信小程序模板源码分享,均为小程序前端模板,不带后端API,非常适合新手学习微信小程序的开发使用。 免责声明:根据二○一三年一月三十日《计算机软件保护条例》2次修订第17条规定:为了学习...
  • 校园版失物招领小程序设计模板

    千次阅读 多人点赞 2021-05-05 15:57:00
    在这即将结束时,我完成了《校园版失物招领小程序》的设计,开发只完成了其中的一部分,还在继续更新中,现将已经完成的功能,效果图展示出来,也算是对自己这几天的总结把。毕竟这个假期除了这个,可啥都没有做。不...
  • 微信公众号/小程序开发项目源码(支持多公众号) 微信应用开发一步到位,结合测试公众号完成开发Demo演示,项目源码运行图文步骤逐一讲解。 1.1、申请测试公众号 微信测试公众号申请链接 1.2、登录后,获取...
  • 对于那些不懂互联网、不了解小程序的小白、新手来讲,又如何制作小程序呢? 接下来,我们就分享下详细的教程: 一、小程序注册与认证 1、如果有已认证的服务号,可选择【复用公众号资质】快速注册认证小程序,首次可...
  • 据微信公开课数据,截止到...客户需要通过小程序商城来达成交易,要求具备会员、积分、分销、限时秒杀、直播…等特色功能,在与客户进行项目沟通后,开始进行微信小程序商城搭建工作。(本文主要介绍小程序商城配置过.
  • 小程序导航站就应运而生,如何做好一个小程序导航站,当然从选一个好主题模板开始! 下面就为大家介绍一个简约的小程序主题模板 排行榜截图: 小程序导航主题模板,简单好用小程序导航主题设置 小程序导航...
  • 小程序模板消息已在2020年1月10号停止使用,之前通过收集form_id来推送模板消息的日子一去不复返,在看过新版小程序订阅消息后,我重新封装了前后端模板消息(订阅下消息)推送的实现 推送业务流程:点击事件拉起wx...
  • 用户关注公众号后,推送消息,点击消息进入小程序,获取不到消息的参数 WxMpTemplateMessage.MiniProgram( ...小程序用onLoad方法获取,gz_openid为undefined。 请问这个问题有什么解决办法? usePath改成f
  • 前期准备条件:开放平台微信认证、服务号微信认证、找到或生成对应模板 (做过事件推送则可省略大部分操作,将用户关注时的信息入库,openID) 1.获取access_token 文档地址:...
  • 从今天开始带领大家实现一款云开发版的点餐小程序 技术选型 1,前端 微信小程序原生框架 css JavaScript 2,管理后台 云开发Cms内容管理系统 web网页 3,数据后台 小程序云开发 云函数 云数据库 云存储 效果...
  • 今天微信小程序页面编写过程中使用到了模板,但是在模板中使用wx:if,wx:else时发现并不好使,在代码不变化的情况下不管我的判断值为真还是为假,最终显示结果都一样,具体可看图: isAgree为true,然后在下图的...
  • 微信小程序模板语法中使用indexOf无效问题解决一、全局:通过wxs文件扩展二、局部:总结 想要在小程序的wxml文件中使用indexOf作为判断条件,会发现indexOf语句无效,这是由于小程序的mastache语法不支持js的方法...
  • WXML提供模板(template),模板可以自定义代码片段,在不同的地方使用,从而实现代码的复用。
  • 小程序服装店开发模板,服装小程序需求是什么 现在线下的服装竞争大,店铺租金高,是广大商家普遍面临着的问题。 有很大一部分精明的商家,嗅觉到了微信对小程序的投入布局,早已开始着手上马小程序服装商城,也为...
  • // 小程序模板消息相关的信息,可以参考小程序模板消息接口; 有此节点则优先发送小程序模板消息 private E mp_template_msg; // 公众号模板消息相关的信息,可以参考公众号模板消息接口;有此节点并且没有weapp_...
  • 操作步骤第一步:开通订阅消息功能登录微信小程序官网后台 mp.weixin.qq.com ,开通订阅消息第二步:服务类目,新增:商家自营 > 服装/鞋/箱包第三步:添加订阅消息,4个订阅消息–公共模板库,搜索“订单支付...
  • 后端先把公众号的模板信息配置好,关注公众号,会发送一个跳转小程序模板信息,然后后端把公众号的openId当成参数发送给我。 就像下面代码中的方式。 url: '/pages/login/login?openId='+openId, 我主要参考了以下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 409,212
精华内容 163,684
关键字:

小程序商城模板

友情链接: ROBOCON-2018-手动.zip