精华内容
下载资源
问答
  • 惊了!个人小程序上线一小时,服务器崩了!

    万次阅读 多人点赞 2020-04-17 13:47:32
    如果有朋友指导 可以少踩很多的坑)恰好自己会一点点的微信小程序,而且微信官方是允许个人开发者上线个人小程序的。(刚好海轰很久以前申请了一个账号 O(∩_∩)O哈哈~) 成果展示 小程序第一个版本代码差不多写了3...

    前言

            寒假在家玩的都不想玩了,想着还是应该做些有意思的事情。本来想着过年换台新电脑,由于疫情原因,还是没有换。但是旧电脑上的数据还是得整理一下,毕竟C盘已经出现红色警告了。┭┮﹏┭┮
            学习编程快两年了,写了还是比较多的源代码(大部分都是作业)想着自己做课设,百度,一个类似的源码都没有,只有靠自己慢慢查找资料,一步一步写。那种心酸历程真的很痛苦(当然最后看着自己的小作品也是很开心的) 这时海轰心想:如果我搭建一个平台,把自己写过的一些源代码都放在上面,有需要的小伙伴直接就可以拿过来借鉴,省去了很多不必要的时间开销(编程这一块 如果有朋友指导 可以少踩很多的坑)恰好自己会一点点的微信小程序,而且微信官方是允许个人开发者上线个人小程序的。(刚好海轰很久以前申请了一个账号 O(∩_∩)O哈哈~)

    成果展示

            小程序第一个版本代码差不多写了3天【2月13日上线】,后面又不断修修补补,开发之路非常坎坷啊(主要还是技术太菜 太多bug)【小程序名:海轰Pro】
            小程序上线一小时的后台数据:
    在这里插入图片描述
            截止目前为止的用户总数:
    在这里插入图片描述
    小程序演示视频【H33版本】

    小程序测试图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    小程序开发之需求

    • 由于海轰的账号类型属于个人账号,基本上社交类型的小程序的不支持发布上线。而且使用的用户应该不是很多,所以用云开发就可以了(主要是免费啊)
    • 使用的免费版的云数据库,存储容量十分有限,所以海轰觉得将所有的源码放在云盘,小程序只是作为一个提供下载链接和下载密令的中介平台。(减轻服务器负担)
    • 对于存放在云盘的代码,如果同一个链接下载次数过多,会造成封号,所以采用一定的措施限制流量。这里海轰给出的方案是:积分制度。用户每天登陆小程序可以获得相应的积分,采用积分兑换的方法获取源码下载链接。
    • 界面简洁美观,用户易于操作

    小程序开发之模块设计

    1.首页轮播图
            不知道怎么的,海轰十分喜欢轮播图这个风格,觉得没有轮播图,小程序感觉不是很好看。官方开发文档给出的swiper组件有点不是很好看,这里海轰使用的是重新设计后的一个轮播图组件【借鉴前端大佬的】
    JS

    // components/theSwiper.js
    const db = wx.cloud.database()
    
    Component({
      /**
       * 组件的属性列表
       */
      properties: {
        imgUrls: Array,
      },
    
      /**
       * 组件的初始数据
       */
      data: {
        currentIndex: 0
      },
      /**
       * 组件的方法列表
       */
      methods: {
        swiperChange(e) {
          this.setData({
            currentIndex: e.detail.current
          });
        },
      
      }
    });
    
    

    WXML

    <swiper indicator-dots="true" 
            autoplay="{{true}}" 
            interval="5000" 
            indicator-dots="{{false}}" 
            indicator-color='#8a8a8a' 
            indicator-active-color='#333' 
            circular="true" 
            class="swiper-block" 
            bindchange="swiperChange" 
            previous-margin="100rpx" 
            next-margin="100rpx" 
            current="{{0}}">
      <block wx:for="{{imgUrls}}"  wx:key="{{index}}">
        <swiper-item class="swiper-item ">
          <image mode="aspectFill" src="{{item}}"  wx:key   class="slide-image {{currentIndex == index ? 'active' : 'common'}}" />
        </swiper-item>
      </block>
    </swiper>
    
    
    
    

    WXSS

    page{
      background-color: #fff;
    }
    .swiper-block {
      background: #fff;
      height: 500rpx;
      width: 100%;
    }
    
    .swiper-item{
      display: flex;
      flex-direction: column;
      justify-content: start;
      align-items: flex-start;
      overflow: unset;
      width: 550rpx;
      height: 450rpx;
      padding-top: 70rpx;
      padding-bottom: 20rpx;
      box-sizing: border-box;
    }
    
    .slide-image{
      height: 300rpx;
      width: 450rpx;
      border-radius: 10rpx;
      margin: 0rpx 50rpx ;
      z-index: 1;
      box-shadow: 10rpx 5px 40rpx rgba(0, 0, 0,0.5);
    }
    .active{
      transform: scale(1.3);
      transition: all .5s ease-in 0s;
      z-index: 20;
      opacity: 1;
    }
    .common{
      transform: scale(1);
      transition: all .5s ease-in 0s;
      z-index: 0;
      opacity: 0.4;
    }
    
    .dots-box{
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    .dots{
      width: 30rpx;
      height: 6rpx;
      margin: 0 4rpx;
      background-color: #aaa;
      margin-top: -80rpx;
    }
    .bg-333{
      background-color: #333;
    }
    

    2.首页功能选择
            这个样式应该是海轰在初学小程序的时候写了一个小demo吧,感觉还行,这里就直接拿来用了
    WXML

    <view class="middle">
    <view class="middle_box shadow-blur light shadow-blur animation-scale-up bg-{{item.color}}" wx:for="{{functions}}" bindtap="tofunction" data-id="{{index}}"   >
    <view class="box_right">
    <view class="box_righttop">{{item.name}}</view>
    <view class="box_rightlow"><text style="font-size:50rpx;margin:3rpx;color:red;">{{item.numbers}}</text>{{item.classifier}}</view>
    </view>
    <view class="box_left">
    <image  class="box_img" src="{{item.iconpath}}"></image>
    </view>
    </view>
    </view>
    

    WXSS

    
    .middle{
      
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      justify-content: space-between;
      width: 90%;
      margin: 0 auto;
    }
    .middle_box{
      width:48%;
      margin-top: 10rpx;
      margin-bottom: 10rpx;
      height: 200rpx;
      background: yellowgreen;
      border-radius: 16rpx;
      display: flex;
      flex-direction: row;
      justify-content: space-between;
    }
    .box_right{
    width: 50%;
    display: flex;
    flex-direction: column;
    align-items: center; /**子view垂直居中*/
    vertical-align: center; /**垂直居中*/
    justify-content: center; /**内容居中*/
    }
    .box_righttop{
    padding-top: 40rpx;
    padding-left: 30rpx;
    width: 100%;
    height: 100rpx;
    font-size:30rpx;
    }
    .box_rightlow{
    width: 110%;
    height: 100rpx;
    padding-top: 00rpx;
    padding-left: 40rpx;
    }
    .box_left{
    width: 50%;
    }
    .box_img{
      margin-top:50rpx;
      margin-left: 20rpx;
      width: 120rpx;
      height: 120rpx;
    }
    
    .bg{
      width: 100%;
      height: 2400px;
    }
    

    3.签到模块
    签到模块是小程序中最复杂的一个模块,涉及的逻辑比较多。

    1. 用户输入签到口令,系统验证是否正确?若正确,调用签到函数,用户积分+1;错误,则提示用户口令错误
    2. 签到函数中需要判断是否是新用户?是否授权?
    3. 首先判断用户是否授权。若没有授权,则显示button,提示用户进行授权。
    4. 再判断是否是新用户。如果是新用户,则需要在数据库中添加用户记录;反之,则只需要更加用户的openid更新对应的积分即可
    5. 对于所涉及的所有操作,可以封装在一个云函数中。方便调用(云函数数量好像最多20个)

    签到函数:

    // 签到
      signed(e){
        var k=this
        var openid=k.data.openid
        var name=k.data.name
        var img=k.data.img
        var time=k.data.time
       
        wx.showLoading({
          title: '签到中...',
          mask: true,
        })
    
        // 防止老用户 已经授权 但users记录中没有该用户信息
        db.collection('users').where({
          _openid: openid // 填入当前用户 openid
        }).count().then(res => {
          console.log(res.total)
          // 没有该用户
          if(res.total==0)
          {
            // 昵称为空 可能发生
            if(name.length==0)
            {
               wx.showToast({
                 title: '签到失败,请重新签到',
                 icon:"none"
               })
            }
            else{
              db.collection('users').add({
                // data 字段表示需新增的 JSON 数据
                data: {
                  user_openid: openid,
                  user_name: name,
                  user_img: img,
                  time: time
                }
              })
                .then(res => {
                  console.log("上传用户成功,下一步进行积分更新")
                  wx.cloud.callFunction({
                    // 要调用的云函数名称
                    name: 'HHPro_functions',
                    // 传递给云函数的event参数
                    data: {
                      function_name: "update_nums",
                      time: time,
                      openid: openid
                    }
                  }).then(res => {
                    console.log("积分+1")
                    k.onLoad()
                  }).catch(err => {
                  })
                })
                .catch(console.error)
            }
          }
          // 有该用户 则更新积分 +1
          else{
            wx.cloud.callFunction({
              // 要调用的云函数名称
              name: 'HHPro_functions',
              // 传递给云函数的event参数
              data: {
                function_name:"update_nums",
                time:time,
                openid: openid
              }
            }).then(res => {
             console.log("积分+1")
              k.onLoad()
            }).catch(err => {
            })
          }
        })
      },
    

    4.下载模块

    • 下载模块相对来说就比较简单了,本质就是在获取数据库中的下载链接,同时用户减去相应的积分即可(注意判断多种情况)
    // 确定 用户同意消耗1积分 得到下载链接
      hideModal_sure(e) {
        var k=this
        var openid=k.data.openid
        var num=k.data.num
        k.setData({
          modalName: null
        })
        wx.showLoading({
          title: '加载中...',
          mask: true
        })
        db.collection('users').where({
          _openid:openid // 填入当前用户 openid
        }).get().then(res => {
          // 用户存在 且 积分最少为1的时候
          if (res.data[0].nums-num>=0)
          {
            // 调用云函数 积分减一
            wx.cloud.callFunction({
              // 要调用的云函数名称
              name: 'HHPro_functions',
              // 传递给云函数的event参数
              data: {
                function_name: "update_nums_dec",
                openid: openid,
                num:num
              }
            }).then(res => {
              console.log("积分-1")
              wx.hideLoading()
              // 显示下载链接
              k.setData({
                modalName_x: "modal",
              })
            }).catch(err => {
            })
          }
          else{
            console.log("无法下载")
            wx.showToast({
              title: '下载失败!!积分不足or未登录',
              icon:"none"
            })
          }
        })
      },
    

    5.调色板
    在这里插入图片描述
    wxml

    <view class="x"></view>
    <view class="card" wx:for="{{color_card}}" bindtap="choice_color" data-color="{{item}}" >
    <view class="card_top" >
    <view class="cardtop_item"  wx:for="{{item.colors}}"  style="background-color:{{item}}"></view>
    </view>
    <view class="card_bottom">
    <view class="cardbottom_name">{{item.name}}</view>
    <view class="cardbottom_img">
    <image src="/images/tsb.png"></image>
    </view>
    </view>
    </view>
    

    CSS

    page{
        background-image: url(https://wx3.sinaimg.cn/mw690/006cV2kkgy1gd2q32ifwcj30yi22owfv.jpg);
     background-attachment: fixed;
      background-repeat: no-repeat;
      background-size: cover;
    }
    .card{
      width: 80%;
      height: 450rpx;
      margin: 50rpx auto;
      background-color:white;
      border-radius: 10rpx;
    }
    .card_top{
    
    width: 100%;
    height: 85%;
    padding-top: 20rpx;
    padding-right: 20rpx;
    padding-left: 20rpx;
    padding-bottom: 5rpx;
    border-radius: 10rpx;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
    }
    .cardtop_item{
      width: 20%;
      height: 25%;
    }
    .card_bottom{
    width: 100%;
    height: 15%;
    display: flex;
    flex-direction: row;
    }
    .cardbottom_name{
    width: 85%;
    height: 100%;
    padding-left: 4%;
    padding-top: 10rpx;
    font-weight: 500;
    font-size: 30rpx;
    font-family:'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
    }
    .cardbottom_img{
    width: 10%;
    height: 95%;
    margin-bottom: 100px;
    padding-top:10rpx;
    }
    .cardbottom_img image{
      width: 100%;
      height: 100%;
      padding-bottom: 5rpx;
    }
    .x{
      width: 100%;
      height: 200rpx;
    }
    .xx{
      width: 100%;
      height: 50rpx;
    }
    
    

    6.作品展示
    在这里插入图片描述
    7.百科答题
    在这里插入图片描述
    在这里插入图片描述
    代码(这个比较多 而且很多功能还没有实现)

    toggle(e) {
        var k=this
        k.scrollSteps()
        var time = k.data.nowtime
        var num=k.data.scroll//当前题数 第几题
        console.log("这是第:"+num+"道题")
        var nums=k.data.titles_nums// 总的题目数量
        console.log("一共有"+nums+"道题")
        if(num==nums)
        {
          k.setData({
            score:k.data.score+1
          })
         console.log("答题完成,跳转分享界面")
         k.toshare()//跳转至分享界面
        }
        else{
        
          var key_1 = k.data.titles[k.data.scroll-1].key// 本题正确选项
          var key_2 = e.currentTarget.dataset.id// 选的第几个选择
          console.log("本题正确选项是"+key_1)
          var x = "am_" + e.currentTarget.dataset.id
          if (x == "am_1") {
            // 二者相等 则正确
            if (key_1 == key_2) {
              k.setData({
                am_1: "slide-bottom",
                score:k.data.score+1,
                color_1: "green",
                time:time,
                color:"black",
              })
              setTimeout(function () {
                k.setData({
                  am_1: '',
                  color_1:"",
                })
              }, 500)
            }
            // 错误
            else {
              console.log("答错了,跳转分享界面")
              k.toshare()//跳转至分享界面
              k.setData({
                am_1: "shake",
                color_1: "red"
              })
              setTimeout(function () {
                k.setData({
                  am_1: '',
                  color_1: "",
                })
              }, 500)
            }
    
          }
          else if (x == "am_2") {
            // 二者相等 则正确
            if (key_1 == key_2) {
              k.setData({
                am_2: "slide-bottom",
                score: k.data.score + 1,
                color_2:"green",
                time: time,
                color: "black",
              })
              setTimeout(function () {
                k.setData({
                  am_2: '',
                  color_2:""
                })
              }, 500)
            }
            // 错误
            else {
              console.log("答错了,跳转分享界面")
              k.toshare()//跳转至分享界面
              k.setData({
                am_2: "shake",
                color_2:"red"
              })
              setTimeout(function () {
                k.setData({
                  am_2: '',
                  color_2: ""
                })
              }, 500)
            }
          }
          else if (x == "am_3") {
            // 二者相等 则正确
            if (key_1 == key_2) {
              k.setData({
                am_3: "slide-bottom",
                score: k.data.score + 1,
                color_3:"green",
                time: time,
                color: "black",
              })
              setTimeout(function () {
                k.setData({
                  am_3: '',
                  color_3:""
                })
              }, 500)
            }
            // 错误
            else {
              console.log("答错了,跳转分享界面")
              k.toshare()//跳转至分享界面
              k.setData({
                am_3: "shake",
                color_3:"red"
              })
              setTimeout(function () {
                k.setData({
                  am_3: '',
                  color_3: ""
                })
              }, 500)
            }
          }
          else {
            // 二者相等 则正确
            if (key_1 == key_2) {
              k.setData({
                am_4: "slide-bottom",
                score: k.data.score + 1,
                color_4:"green",
                time: time,
                color: "black",
              })
              setTimeout(function () {
                k.setData({
                  am_4: '',
                  color_4:""
                })
              }, 500)
            }
            // 错误
            else {
              console.log("答错了,跳转分享界面")
              k.toshare()//跳转至分享界面
              k.setData({
                am_4: "shake",
                color_4:"red"
              })
              setTimeout(function () {
                k.setData({
                  am_4: '',
                  color_4: ""
                })
              }, 500)
            }
          }
        }
        
       
      },
    

    8.分享海报
    在这里插入图片描述

    总结

            虽然用了三天时间,但是看到自己写的小程序有那么多人使用。自己也是很开心的O(∩_∩)O哈哈~ 自己的UI写的不好,这里就借用了大佬的框架,有一些功能也是看到大神的成果,自己再模仿的。小程序中的一些代码有海轰自己写的,也有一些是别人分享的,资料大部分来自于网络和分享。
            有兴趣的小伙伴可以体验体验海轰的小程序哦 【小程序名:海轰Pro】

    展开全文
  • 个人小程序接入支付解决方案

    千次阅读 2021-04-12 16:19:58
    个人小程序接入支付解决方案

    个人小程序接入支付解决方案

    参考文章:

    (1)个人小程序接入支付解决方案

    (2)https://www.cnblogs.com/xorpay/p/10906126.html

    (3)https://www.codeprj.com/blog/a66a0e1.html


    备忘一下。


    展开全文
  • 个人小程序实现微信支付

    千次阅读 2020-01-20 17:53:37
    其实个人小程序是没办法直接调用微信支付的,但是可以间接的去调用,就是通过第三方的服务. 如:https://www.payjx.cn/ 通过调用它得接口,返回一个带支付二维码得结果,这个二维码被微信扫码支付后,通过开发者留得通知...

    其实个人小程序是没办法直接调用微信支付的,但是可以间接的去调用,就是通过第三方的服务.

    如:https://www.payjx.cn/
    在这里插入图片描述

    通过调用它得接口,返回一个带支付二维码得结果,这个二维码被微信扫码支付后,通过开发者留得通知地址回调给开发者.
    在这里插入图片描述

    就需要用户先进入开发者的网站,网站中展示二维码进行扫描付款.

    那又会有一个问题,怎么知道是谁支付了?

    我的解决办法是先扫码登录

    1. 后端通过一些算法生成一个字符串,保存在redis中,并且设置过期时间,在使用它生成二维码,最后和cookie怼到网页.

    2. 网页通过ajax带上cookie时不时得请求后端判断是否登录了没有.

    3. 小程序中扫描后传递二维码信息、临时登录凭证code和基本信息,这里的code是必须传给后端的,后端要换取openid,来区别用户,但是基本信息看自己,微信提供了根据openid获取用户信息的接口,但是这貌似不支持个人,所以,后端用到用户信息时,还得传,(妈蛋的麻烦,小程序还必须通过点击button后才可以)

    4. 后端获取openid等后,保存到数据库.并设置登录状态.

    5. 此时网页就知道是谁登录的了.在通过调用payjx的支付接口,为这个用户生成一个支付二维码.在attach中附加上用户信息,回调时候取出.

    通常都有过期处理,所以,在二维码过期后,别忘了删除二维码哦.

    其实还有种办法.小程序通过传递临时登录凭证code后,后端获取到openid,生成支付二维码返回给小程序,小程序保存他到相册,提示用户你去扫一扫相册中的二维码完成支付.但是我没去尝试.

    展开全文
  • 腾讯的小程序平台给个人开发者带来了福音,它的盈利模式也是非常简单清晰。 2. 门槛 最重要的是,个人是可以发布小程序的,千万不要以为只有企业可以发布小程序。 1 小程序开通流量主的门槛不高不低,需要1000个...

    1. 介绍

    腾讯的小程序平台给个人开发者带来了福音,它的盈利模式也是非常简单清晰。

    2. 门槛

    最重要的是,个人是可以发布小程序的,千万不要以为只有企业可以发布小程序。
    1
    小程序开通流量主的门槛不高不低,需要1000个独立 UV ,也就是说有1000个微信注册用户进入过你的小程序。一般来说,通过自己朋友圈转发二维码,或者通过在微信大群分享你的小程序,差不多一个月就可以达到门槛要求。

    3. 开通流量主入口

    https://mp.weixin.qq.com/wxopen/frame?t=promotion/promotion_frame&token=861162187&page=applet/open&lang=zh_CN
    如果你没有注册过微信公众平台,用邮箱去注册一下就好了。

    4. 个人小程序

    这是我自己开发的一个关于答题的两个小工具,感兴趣的可以了解下。打开微信扫描一下下面的二维码即可体验。 (也可以微信搜索 “ PK答题王 ”   “科目一驾照”)  需要源码的可以联系我  qq:337882150 

     

    有兴趣可以关注博主的小程序网站: https://www.fanyc.club

    展开全文
  • 个人小程序跳转公众号文章

    千次阅读 2019-01-22 10:06:47
    1:前段时间,微信正式宣布为方便开发者灵活配置小程序小程序现开放内嵌 Web 页面能力,但这个开放的能力也具有一定的局限性,小程序如果想要内嵌网页,那域名只能是自己公司的,对这个网站拥有控制...
  • 在此之前,想要从小程序里面跳转一个链接,要使用web-view才可以,而且个人 &lt;web-view src="...1:前段时间,微信正式宣布为方便开发者灵活配置小程序小程序现开放内嵌 Web 页面能力,但这个开放的...
  • 相信很多都是为了开通流量主,期中就有一条要求比较苛刻就是 累计独立访客(UV)不低于 1000 很多人发现不到这个数据在哪里,其实稍稍注意下就能看到了 查看方法:直接点击左侧菜单栏的统计模块就可以看见了 ...
  • 这样才能申请到微信支付的,对于个人开发者,根本就是一个大门槛,为了微信支付而去注册一家公司,有点成本高了,那么个人可以用微信支付吗?在这之前不可以,现在可以了!因为微信官方有一个叫做微信服务商,有能力...
  • 小程序】手把手带你完成微信小程序开发实践

    万次阅读 多人点赞 2016-11-07 17:14:27
    企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。...账户自动验证后,自动认证通过,并将认证资金退回公司对公账户,费用在1元内随机小程序发布流程开发实践这次的demo项目为农历和公历的转换器,重在体验
  • 这里写自定义目录标题微信小程序 模拟支付宝账单的个人记账小程序一、准备阶段二、写代码1、登录界面2、记账界面3、账单界面4、统计界面三、总结 微信小程序 模拟支付宝账单的个人记账小程序 初学微信小程序开发,...
  • 做任何程序开发要首先找到...这里就是做微信小程序开发的全部官方文档。 知道了文档的位置,下面我们来介绍下如何做一个微信小程序开发: 第一步: 下载微信小程序开发者工具并安装,下载路径: https://mp.weix...
  • 个人主体小程序和组织主体小程序有什么不同呢?相对而言有什么限制? 01接口限制 个人主体的小程序肯定是无法完整地使用小程序的接口和能力的,具体哪些接口用不了呢? 微信支付 如需使用微信支付,就必须先开通...
  • 微信小程序个人小笔记

    万次阅读 2019-06-10 22:21:02
    首先教大家如何翻微信小程序的官方文档 微信小程序的官方文档中框架是js的交互,组件就是标签,API就是小程序里的方法。 小程序的概念性内容整理: 除了微信小程序还有很多别的小程序: 支付宝小程序,百度小程序,...
  •  如小程序需要接入微信支付,小程序本身必须要经过微信认证才行,而个人主体注册的小程序是不支持认证的。 所以,个人主体注册的小程序不能使用微信支付!2、卡券 在微信里,卡券的分类众多,其中就包含了具有...
  • 很多人认为,小程序只有商家可以注册开发,不知道还有个人开发者这么一说。 现在,个人最多可以注册5个小程序,比注册公众号多4个,是不是很激动? 注册不等于就可以访问了,还得开发。2017年9月份左右,我开始...
  • 微信小程序个人心得

    万次阅读 多人点赞 2016-10-12 22:04:13
    昨天看了一下微信小程序官方文档,总结一下自己学习的个人心得.首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起.app.js 这个文件是整个小程序的入口文件,开发者...
  • 个人项目-仿微信小打卡小程序

    万次阅读 多人点赞 2019-06-03 20:26:34
    由于受限于微信认证不通过(个人号无法认证),超出了小程序涉及的类目(社交-笔记),因此无法审核通过进行发布,只能体验版使用。为了项目展示,就只能放到博客上面来了。 大致的功能 本项目主要是自己仿造微信小...
  • 前言微信小程序在3月27日新增了6项能力,其中第一条就是对个人开发者开放注册。这无疑是大快人心的好事!之前我写过一篇微信小程序的文章,不过主体是企业的身份来做的,并且也没有走到发布的流程,...
  • 零基础入门微信小程序开发

    万次阅读 多人点赞 2018-07-03 02:45:07
    本课程是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript 的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装...
  • 6月11日,南都个人信息保护研究中心联合中国信息通信研究院安全研究所发布《小程序个人信息保护研究报告》(下称“报告”),对微信、支付宝、百度、今日头条四大主流小程序平台的52款常用小程序进行测评。结果显示,...
  • 个人图书管理小程序

    千次阅读 2019-06-14 19:15:30
    最近妹子经常跟我吐槽书太多了, 不好管理, 什么书又借给谁谁谁了, 想让我给做个小程序。 于是我就动手开始干了,以下就是我两个星期的成果: 小程序的二维码 ...
  • 微信小程序个人服务器搭建

    万次阅读 多人点赞 2018-08-14 09:47:05
    个人做微信小程序必须考虑到工作量和资金的问题,这篇文章总结出一套针对个人切实可行的方案。本文章重点在抛砖引玉,而不是对各种细节的详细描述。读者可以根据文中提到的各种关键词,查阅相关资料 方案包括 在...
  • 抖音小程序是抖音App提供给企业和个人用户上传自己的服务、产品等信息的窗口,运营的朋友希望把抖音小程序添加到抖音短视频里,通过抖音短视频,一同宣传抖音企业小程序个人抖音小程序,是用户通过抖音短视频、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 762,468
精华内容 304,987
关键字:

个人小程序