微信小程序“别踩白块”源码分享

  • 一、项目目录框架及配置
    • 1.文件框架
      • (1)pages文件夹:
      • (2)app.js
      • (3)app.json
      • (4)app.wxss
      • (5)app.wxml
      • (6)project.config.json
      • (7)sitemap.json
      • (8)utills文件夹
    • 2.项目配置
  • 二、别踩白块结构分析
  • 1. 模块功能:
  • 2. 文件配置
  • 二、别踩白块各模块代码
    • 1. 全局配置
      • (1)app.json
      • (2)app.js
      • (3)app.wxss
      • (4)project.config.json
    • 2.首页配置(index)
      • (1)index.js
      • (2)index.json
      • (3)index.wxml
      • (4)index.wxss
    • 3. 无尽模式配置(endless)
      • (1)play.js
      • (2)play.json
      • (3)play.wxml
      • (4)play.wxss
    • 4. 计时模式配置(time)
      • (1)play.js
      • (2)play.json
      • (3)play.wxml
      • (4)play.wxss
    • 5. 急速模式配置(speed)
      • (1)play.js
      • (2)play.json
      • (3)play.wxml
      • (4)play.wxss
    • 6. 游戏结束配置(end)
      • (1)end.js
      • (2)end.json
      • (3)end.wxml
      • (4)end.wxss
    • 7. 日志文件配置(logs)
      • (1)logs.js
      • (2)logs.json
      • (3)logs.wxml
      • (4)logs.wxss
  • 三、别踩白块效果实现
    • 1. 首页效果
    • 2. 模块效果

先看效果图(自己做小程序很简单,下面是具体实现)

首先,要了解微信小程序的开发工具——微信开发者工具
可以在微信公众平台下载软件

一、项目目录框架及配置

1.文件框架

(1)pages文件夹:

存放小程序的页面文件,书写各个页面代码以及组件,里面包括各种全局文件。

(2)app.js

小程序入口文件,用于定义全局数据和函数的使用,可以指定微信小程序的生命周期函数。

(3)app.json

全局文件, 对小程序进行配置,小程序的全局配置,小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等; 包括配置小程序是由哪些页面组成,配置小程序的窗口及背景色,配置导航条样式,配置默认标题等。

(4)app.wxss

全局的样式文件。

(5)app.wxml

构建页面结构

(6)project.config.json

保存开发工具配置项

(7)sitemap.json

网站地图,可以对小程序进行seo优化,让搜索排名靠前

(8)utills文件夹

存放全局的一些.js文件,公共用到的一些事件处理代码文件可以放到该文件夹下,用于全局调用。

以下是结构示图

2.项目配置

一个小程序最开始要使用app.json文件来对微信小程序进行全局配置,它决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等基础元素。

{"pages": ["pages/index/index","pages/endless/play","pages/time/play","pages/speed/play","pages/end/end","pages/logs/logs"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "别踩白块","navigationBarTextStyle": "black"},"sitemapLocation": "sitemap.json"
}

二、别踩白块结构分析

1. 模块功能:

无尽模式、计时模式、急速模式、查看日志

2. 文件配置

二、别踩白块各模块代码

1. 全局配置

(1)app.json

代码如下:

{"pages": ["pages/index/index","pages/endless/play","pages/time/play","pages/speed/play","pages/end/end","pages/logs/logs"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "别踩白块","navigationBarTextStyle": "black"},"sitemapLocation": "sitemap.json"
}

(2)app.js

代码如下:

//app.js
App({onLaunch: function () {//调用API从本地缓存中获取数据var logs = wx.getStorageSync('logs') || []logs.unshift(Date.now())wx.setStorageSync('logs', logs)},getUserInfo:function(cb){var that = thisif(this.globalData.userInfo){typeof cb == "function" && cb(this.globalData.userInfo)}else{//调用登录接口wx.login({success: function () {wx.getUserInfo({success: function (res) {that.globalData.userInfo = res.userInfotypeof cb == "function" && cb(that.globalData.userInfo)}})}})}},getHeighestScore: function(scoreName, cb){this.globalData[scoreName] = wx.getStorageSync(scoreName);typeof cb == "function" && cb(this.globalData[scoreName])},globalData:{userInfo: null,currentScore: 0,endlessScore: null,timeScore: null,speedScore: null}
})

(3)app.wxss

代码如下:

/**app.wxss**/
.container {height: 100%;display: flex;flex-direction: column;justify-content: center;box-sizing: border-box;
} 

(4)project.config.json

代码如下:

{"description": "项目配置文件","packOptions": {"ignore": []},"setting": {"urlCheck": true,"es6": true,"enhance": false,"postcss": true,"preloadBackgroundData": false,"minified": true,"newFeature": false,"coverView": true,"nodeModules": false,"autoAudits": false,"showShadowRootInWxmlPanel": true,"scopeDataCheck": false,"uglifyFileName": false,"checkInvalidKey": true,"checkSiteMap": true,"uploadWithSourceMap": true,"compileHotReLoad": false,"useMultiFrameRuntime": true,"useApiHook": true,"useApiHostProcess": false,"babelSetting": {"ignore": [],"disablePlugins": [],"outputPath": ""},"enableEngineNative": false,"bundle": false,"useIsolateContext": true,"useCompilerModule": true,"userConfirmedUseCompilerModuleSwitch": false,"userConfirmedBundleSwitch": false,"packNpmManually": false,"packNpmRelationList": [],"minifyWXSS": true},"compileType": "miniprogram","libVersion": "2.16.1","appid": "wxd5512791eaec8564","projectname": "miniprogram-1","debugOptions": {"hidedInDevtools": []},"scripts": {},"isGameTourist": false,"condition": {"search": {"list": []},"conversation": {"list": []},"game": {"list": []},"plugin": {"list": []},"gamePlugin": {"list": []},"miniprogram": {"list": []}}
}

2.首页配置(index)

(1)index.js

代码如下:

//index.js
//获取应用实例
var app = getApp()
Page({data: {userInfo: {},heighestScore: 0,longestTime: 0},//事件处理函数bindViewTap: function() {wx.navigateTo({url: '../logs/logs'})},goGame: function(event){var gameType = event.target.id;wx.redirectTo({url: '../'+gameType+'/play'})},onLoad: function () {var that = this//调用应用实例的方法获取全局数据app.getUserInfo(function(userInfo){//更新数据that.setData({userInfo:userInfo})})// 最高分数app.getHeighestScore('endlessScore', function(heighestScore){app.globalData.endlessScore = heighestScore || 0;that.setData({heighestScore: heighestScore || 0})});// 最长时间app.getHeighestScore('timeScore', function(heighestScore){app.globalData.timeScore = heighestScore || 0;that.setData({longestTime: heighestScore || 0})});}
})

(2)index.json

代码如下:

{}

(3)index.wxml

代码如下:

<!--index.wxml-->
<view class="container"><view class="line"><view class="blocks black" id="endless" bindtap="goGame"><text>无尽模式</text></view><view class="blocks" id="time" bindtap="goGame"><text>计时模式</text></view></view><view class="line"><view class="blocks" id="speed" bindtap="goGame"><text>急速模式</text></view><view class="blocks black" bindtap="bindViewTap"><image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image><text class="userinfo-nickname">{{userInfo.nickName}}</text></view></view><view class="line"><view class="blocks black"><text>最高分数:{{heighestScore}}</text></view><view class="blocks"><text>最长时间:{{longestTime}}</text></view></view>
</view> 

(4)index.wxss

代码如下:

/**index.wxss**/
page {height: 100%;
}
.line {height: 33%;display: flex;flex-direction: row;justify-content: center;
}
.blocks {width: 50%;display: flex;flex-direction: column;justify-content: center;align-items: center;box-sizing: border-box;
}
.black {background: #000000;
}
.black text {color: #ffffff;
}.userinfo {display: flex;flex-direction: column;align-items: center;
}.userinfo-avatar {width: 128rpx;height: 128rpx;margin: 20rpx;border-radius: 50%;
}.userinfo-nickname {color: #aaa;
}

3. 无尽模式配置(endless)

(1)play.js

代码如下:

// play
var app = getApp()
Page({data: {typeName: '无尽模式',silding: false,score: 0,blockData:[]},onReady: function(){var array = [];// 先生成一个10个长度的数组for(var i = 0; i < 10; i++){// 生成一个随机位数为1的数组var orderArray = [0,0,0,0];var randomNum = Math.floor(Math.random() * 4);orderArray[randomNum] = 1;array.push({id: i, block: orderArray});}this.setData({blockData: array.reverse()});},handleClick: function(events){var id = events.currentTarget.id;var line = id.split("-")[1];var column = id.split("-")[2];var isBlack = id.split("-")[3];var blockData = this.data.blockData.reverse();var score = this.data.score;var orderArray = [0,0,0,0];// 判断是否是第一行if(line != blockData[0].id){this.handleWrong(0, score);return;}// 判断是否正确if(isBlack != 1){this.handleWrong(1, score);return;}// 正确下一个// 分数++// 最后一个小块的id为分数+10score++;orderArray[Math.floor(Math.random() * 4)] = 1;blockData.push({id: score+10, block: orderArray});blockData.shift();this.setData({silding: true,score: score,blockData: blockData.reverse()});},handleWrong: function( type , score){const titleArr = ["请点击第一个白块!游戏结束", "别点白块!游戏结束"];wx.showToast({title: titleArr[type],icon: 'cancel', duration: 2000,complete: function(){// 将此分数存入全局变量app.globalData.currentScore = score;// 若此分数比最高分数还高 将其存入本地if(score > app.globalData.endlessScore){app.globalData.endlessScore = score;wx.setStorageSync('endlessScore',score);}var timer = setTimeout(function(){wx.redirectTo({url: '../end/end?type=endless&score=' + score})clearTimeout(timer);}, 2000);}})},onLoad: function(){var that = this;wx.setNavigationBarTitle({title: that.data.typeName});}
})

(2)play.json

游戏模式中不需要全局配置

代码如下:

{}

(3)play.wxml

代码如下:

<!--play.wxml-->
<view class="score">{{score}}</view>
<view class="play-box"><block wx:for="{{blockData}}" wx:for-index="i" wx:key="i"><view class="block-line" id="line-{{blockData[i].id}}"><block wx:for="{{blockData[i].block}}" wx:key="*this" wx:for-index="j"><view wx:if="{{blockData[i].block[j] == 0}}" id="block-{{blockData[i].id}}-{{j}}-{{0}}" class="block" bindtap="handleClick"></view><view wx:else class="block black" id="block-{{blockData[i].id}}-{{j}}-{{1}}" bindtap="handleClick"></view></block>  </view></block>
</view>

(4)play.wxss

代码如下:

/*page {display: flex;flex-direction: column-reverse;
}*/
.score {position: fixed;top: 2rem;left: 50%;font-size: 3rem;color: #fc2736;transform: translate(-50%, 0);z-index: 10;
}
.play-box {width: 100%;position: fixed;left: 0;bottom: 0;
}
.block-line {width: 100%;overflow: hidden;
}
.block {width: 5rem;height: 8rem;float: left;border: 1px solid #000000;box-sizing: border-box;
}
.black {background: #000000;
}

4. 计时模式配置(time)

(1)play.js

代码如下:

// play
var app = getApp()
Page({data: {typeName: '计时模式',score: 0,time: 60,shouldStop: false,blockData:[]},onReady: function(){var array = [];// 先生成一个10个长度的数组for(var i = 0; i < 10; i++){// 生成一个随机位数为1的数组var orderArray = [0,0,0,0];var randomNum = Math.floor(Math.random() * 4);orderArray[randomNum] = 1;array.push({id: i, block: orderArray});}this.setData({blockData: array.reverse()});},handleClick: function(events){var id = events.currentTarget.id;var line = id.split("-")[1];var column = id.split("-")[2];var isBlack = id.split("-")[3];var blockData = this.data.blockData.reverse();var score = this.data.score;var orderArray = [0,0,0,0];// 判断是否是第一行if(line != blockData[0].id){this.handleWrong(0, score);return;}// 判断是否正确if(isBlack != 1){this.handleWrong(1, score);return;}// 正确下一个// 分数++// 最后一个小块的id为分数+10score++;orderArray[Math.floor(Math.random() * 4)] = 1;blockData.push({id: score+10, block: orderArray});blockData.shift();this.setData({silding: true,score: score,blockData: blockData.reverse()});},handleWrong: function( type , score){const titleArr = ["请点击第一个白块!游戏结束", "别点白块!游戏结束", "时间到"];var _this = this;wx.showToast({title: titleArr[type],icon: 'cancel', duration: 2000,complete: function(){// 将此分数存入全局变量app.globalData.currentScore = score;// 停止计数器_this.setData({shouldStop: true});// 若此分数比最高分数还高 将其存入本地if(score > app.globalData.timeScore){app.globalData.timeScore = score;wx.setStorageSync('timeScore',score);}var timer = setTimeout(function(){wx.redirectTo({url: '../end/end?type=time&score=' + score})clearTimeout(timer);}, 2000);}})},timeInterval: function(){var that = this;var timer = setInterval(function(){// 判断是否小于0var nowTime = that.data.time;if(that.data.shouldStop){clearInterval(timer);}if(nowTime > 1){that.setData({time: nowTime-1});return;}that.setData({time: nowTime-1});that.handleWrong(2, that.data.score);clearInterval(timer);}, 1000);},onLoad: function(){var that = this;wx.setNavigationBarTitle({title: that.data.typeName});this.timeInterval();}
})

(2)play.json

代码如下:

{}

(3)play.wxml

代码如下:

<!--play.wxml-->
<view class="time">时间:{{time}}s</view>
<view class="score">分数:{{score}}</view>
<view class="play-box"><block wx:for="{{blockData}}" wx:for-index="i" wx:key="i"><view class="block-line" id="line-{{blockData[i].id}}"><block wx:for="{{blockData[i].block}}" wx:key="*this" wx:for-index="j"><view wx:if="{{blockData[i].block[j] == 0}}" id="block-{{blockData[i].id}}-{{j}}-{{0}}" class="block" bindtap="handleClick"></view><view wx:else class="block black" id="block-{{blockData[i].id}}-{{j}}-{{1}}" bindtap="handleClick"></view></block>  </view></block>
</view>

(4)play.wxss

代码如下:

/* pages/time/play.wxss */
.time {position: fixed;top: 2rem;left: 50%;font-size: 2rem;color: #fc2736;transform: translate(-50%, 0);z-index: 10;
}
.score {position: fixed;top: 5rem;left: 50%;font-size: 2rem;color: #fc2736;transform: translate(-50%, 0);z-index: 10;
}
.play-box {width: 100%;position: fixed;left: 0;bottom: 0;
}
.block-line {width: 100%;overflow: hidden;
}
.block {width: 5rem;height: 8rem;float: left;border: 1px solid #000000;box-sizing: border-box;
}
.black {background: #000000;
}

5. 急速模式配置(speed)

(1)play.js

代码如下:

// // play
var app = getApp()
Page({data: {typeName: '急速模式',score: 0,blockData:[],scrollHeight: 0,canRun: false},onLoad: function(){var that = this;// 设置titlewx.setNavigationBarTitle({title: that.data.typeName});},onReady: function(){var array = [];// 先生成一个10个长度的数组for(var i = 0; i < 10; i++){array.push(this.getNewLine(i));}this.setData({blockData: array.reverse()});},handleClickWhite: function(events){// 点击白块一定会报错 差别在于报错文案// 判断是否是点击的第一行// 被点击的idvar id = events.currentTarget.id;// 被点击的行var line = id.split("-")[1];// 数据var blockData = this.data.blockData.concat().reverse();// 当前分数var score = this.data.score;// 判断是否是第一行if(line != this.getClickableBlockLine(blockData)){this.handleWrong("请点击第一个黑块!游戏结束", score);} else {// 点击的第一行白块  this.handleWrong("别点白块!游戏结束", score);}},handleClickBlack: function(events){// 黑块是应该点击的块// 判断是否是点击的第一行// 被点击的idvar id = events.currentTarget.id;// 被点击的行var line = id.split("-")[1];// 数据var blockData = this.data.blockData.concat().reverse();// 当前分数var score = this.data.score;// 可点击的第一行var clickableLine = this.getClickableBlockLine(blockData);// 判断是否是第一行if(line == clickableLine){// 点击了第一行黑块 // 判断是否是是第一次if(score == 0){// 启动滑动程序this.run();}score++;// 将黑块变灰块this.getBlockBlackToGray(line, blockData);// 分数++this.setData({score: score,blockData: blockData.concat().reverse()});} else {// 点击的不是第一行白块  this.handleWrong("请点击第一个黑块!游戏结束", score);}},handleClickGray: function(events){// 灰块是指黑块点击之后的块 // 其在显示是白块 并且同样不可点var score = this.data.score;this.handleWrong("别点白块!游戏结束", score);},run: function(){// 滑动方法var that = this;var speed = 10;this.setData({canRun: true});var timer = setInterval(function(){// 当前滑动距离if(!that.data.canRun){clearInterval(timer);return;}var currentScrollHeight = that.data.scrollHeight;// 当前分数var score = that.data.score;// 滑块数据var blockData = that.data.blockData.concat().reverse();if(Math.abs(currentScrollHeight) == 150){// 滑到临界点// 判断是否过期// 判断条件是 第一个滑块的状态是否为已点击if(that.checkFirstLineBlockClicked(blockData[0].block)){// 没过期// 继续 去除旧节点 插入新节点 scrolllHeight归0var newId = blockData[blockData.length - 1].id + 1;blockData.push(that.getNewLine(newId));blockData.shift();that.setData({scrollHeight: 0,blockData: blockData.concat().reverse()});return;}// 过期// 报错that.handleWrong("请点击白块!游戏结束", score);return;}currentScrollHeight = currentScrollHeight - speed;that.setData({scrollHeight: currentScrollHeight});}, 20);},checkFirstLineBlockClicked: function(blockDataLine){for(var i = 0; i < blockDataLine.length; i++){if(blockDataLine[i] == 2){return true;}}return false;},getBlockBlackToGray: function(line, blockData){for(var i = 0; i < blockData.length; i++){if(blockData[i].id == line){var currentArray = blockData[i].block;for(var j = 0; j < currentArray.length; j++){if(currentArray[j] == 1){currentArray[j] = 2;return;}}}}},getClickableBlockLine: function(blockData){var line = 0;for(var i = 0; i < blockData.length; i++){var block = blockData[i].block;for(var j = 0; j < block.length; j++){// 行内四个元素 有1即可if(block[j] == 1){return blockData[i].id;}}}return line;},getNewLine: function(i){// 生成一个标准的数据var orderArray = [0,0,0,0];// 生成一个随机数var randomNum = Math.floor(Math.random() * 4);// 赋值给对应的objorderArray[randomNum] = 1;return {id: i, block: orderArray};},handleWrong: function(text, score){this.setData({canRun: false});wx.showToast({title: text,icon: 'cancel', duration: 2000,complete: function(){// 将此分数存入全局变量app.globalData.currentScore = score;// 若此分数比最高分数还高 将其存入本地if(score > app.globalData.speedScore){app.globalData.speedScore = score;wx.setStorageSync('speedScore',score);}var timer = setTimeout(function(){wx.redirectTo({url: '../end/end?type=speed&score=' + score})clearTimeout(timer);}, 2000);}})}
})

(2)play.json

代码如下:

{}

(3)play.wxml

代码如下:

<!--play.wxml-->
<view class="score">{{score}}</view>
<view class="play-box" style="bottom: {{scrollHeight}}px"><block wx:for="{{blockData}}" wx:for-index="i" wx:key="i"><view class="block-line" id="line-{{blockData[i].id}}"><block wx:for="{{blockData[i].block}}" wx:key="*this" wx:for-index="j"><view wx:if="{{blockData[i].block[j] == 0}}" id="block-{{blockData[i].id}}-{{j}}-{{0}}" class="block" bindtap="handleClickWhite"></view><view wx:elif="{{blockData[i].block[j] == 1}}" class="block black" id="block-{{blockData[i].id}}-{{j}}-{{1}}" bindtap="handleClickBlack"></view><view wx:else class="block gray" id="block-{{blockData[i].id}}-{{j}}-{{2}}" bindtap="handleClickGray"></view></block>  </view></block>
</view>

(4)play.wxss

代码如下:

/*page {display: flex;flex-direction: column-reverse;
}*/
.score {position: fixed;top: 2rem;left: 50%;font-size: 3rem;color: #fc2736;transform: translate(-50%, 0);z-index: 10;
}
.play-box {width: 100%;position: fixed;left: 0;bottom: 0;
}
.block-line {width: 100%;overflow: hidden;
}
.block {width: 5rem;height: 8rem;float: left;border-left: 1px solid #000000;border-right: 1px solid #000000;box-sizing: border-box;transition: .2s all;
}
.black {background: #000000;
}
.gray {background: #ffffff;
}

6. 游戏结束配置(end)

(1)end.js

代码如下:

var app = getApp()
Page({data: {currentScore: 0,gameType: "",heighestScore: 0,backUrl: ""},onLoad: function(options){var score = options.score;var gameType = options.type;var text = {endless: "无尽模式", time: "计时模式", speed: "极速模式"};// 从全局变量中获取分数this.setData({currentScore: app.globalData.currentScore,gameType: text[gameType],heighestScore: app.globalData[gameType + "Score"],backUrl: '../'+gameType+'/play'});}
})

(2)end.json

代码如下:

{}

(3)end.wxml

代码如下:

<view class="current">{{gameType}}</view>
<view class="current">本次分数:{{currentScore}}</view>
<view class="highest">最高分数:{{heighestScore}}</view>
<navigator url="{{backUrl}}" redirect class="go-again">再来一次</navigator>
<navigator url="../index/index" redirect class="go-home">返回首页</navigator>

(4)end.wxss

代码如下:

/* pages/end/end.wxss */
.current {margin-top: 40rpx;margin-bottom: 40rpx;text-align: center;font-size: 1.5rem;
}
.highest {text-align: center;font-size: 1.5rem;
}
.go-again {text-align: center;display: block;width: 200rpx;margin: 200rpx auto 0 auto;padding: 20rpx;border-radius: 10rpx;color: #ffffff;background: #fc2736;
}
.go-home {text-align: center;display: block;width: 200rpx;margin: 100rpx auto 0 auto;padding: 20rpx;border-radius: 10rpx;color: #ffffff;background: blue;
}

7. 日志文件配置(logs)

(1)logs.js

代码如下:

//logs.js
var util = require('../../utils/util.js')
Page({data: {logs: []},onLoad: function () {this.setData({logs: (wx.getStorageSync('logs') || []).map(function (log) {return util.formatTime(new Date(log))})})}
})

(2)logs.json

代码如下:

{"navigationBarTitleText": "查看启动日志"
}

(3)logs.wxml

代码如下:

<!--logs.wxml-->
<view class="container log-list"><block wx:for="{{logs}}" wx:for-item="log" wx:key="*this"><text class="log-item">{{index + 1}}. {{log}}</text></block>
</view>

(4)logs.wxss

代码如下:

.log-list {display: flex;flex-direction: column;padding: 40rpx;
}
.log-item {margin: 10rpx;
}

三、别踩白块效果实现

1. 首页效果

2. 模块效果



【微信小程序】别踩白块源码免费分享相关推荐

  1. 别踩白块java程序代码_别踩白块源码

    [实例简介] 经典游戏别踩白块源码,自己DIY 嘚瑟一下自己的小伙伴吧 ! [实例截图] [核心代码] OGEngine_bcbkym └── OGEngineDeom_block ├── Andro ...

  2. 微信小程序:强大工具箱组合源码

    这是一个比较强大的一款工具箱 内有去水印功能(支持几十家平台去水印) 朋友圈功能|(发圈套图等) 头像,朋友圈封面,壁纸等 另外还有快递查询,手持弹幕等 另外还有一个强大的去水印历史记录 历史记录可以 ...

  3. 到家服务公司php源码,微信小程序-仿五洲到家商城源码

    微信小程序-仿五洲到家商城源码 微信小程序仿五洲到家商城源码是一款精仿五洲到家app界面的小程序源码,适用于各类小程序商城系统,功能及模块均值得借鉴! 对应功能模块 > * 首页(定位成功情况且 ...

  4. 微信小程序更换头像的实现源码

    微信小程序更换头像的实现源码 html <view class='top_head_border'> <image class='top_head' src='{{head}}'&g ...

  5. 小程序源码:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  6. 最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  7. 最新wordpress黑金壁纸微信小程序 二开修复版源码下载

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多, 介绍: WordPress独立后台壁纸小 ...

  8. 微信小程序:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  9. 开源微信小程序自助建站系统源码 含精美的多行业模板和搭建教程

    分享一个微信小程序自助建站系统源码,含各行各业的小程序模板和搭建教程,可一键切换模板,自由DIY,搭建属于你自己的小程序.   特色功能一览: 11.支持创建多个小程序!(没有数量限制,后续免费升级) ...

最新文章

  1. 开源如何占领软件世界?
  2. Google 开源的依赖注入库,比 Spring 更小更快!
  3. 365个机器学习概念,“耐撕”的AI日历限量预售 | 新年礼物嗷~
  4. 【工具】13 款 Linux 实用工具推荐,个个是神器!(附下载链接)
  5. JAVA基础知识总结8(设计模式)
  6. Nacos配置管理-nacos集群搭建
  7. WAM计算机术语,最新的计算机一级考试MSOffice模拟试题及答案
  8. java url 本地文件是否存在_我的应用程序知道URL中是否存在文件会一直停止[重复]...
  9. 负载均衡和反向代理的通俗理解
  10. Pr 入门教程,如何处理图片文件?
  11. hough变换圆检测matlab,hough变换检测圆的matlab程序
  12. 基于openflow的SDN技术
  13. torch 矩阵运算
  14. 奶爸日记2 - 鑫鑫感动了婆婆
  15. java家谱_java家谱打包程序
  16. 阿兹卡班(azikaban)报错:syntax error:unexpected end of file
  17. java 月份缩写_英文月份简写
  18. postgresql中DROP OWNED BY user_name对普通用户和只读用户的区别
  19. windows批处理脚本bat命令解析【11】rd与del命令以及参数
  20. netflix自动续费关闭_如何禁用Netflix的自动播放预览

热门文章

  1. 在centos7中下载搜狗输入法
  2. 多目标跟踪算法JDE在 UA-DETRAC数据集上训练
  3. 重温数据结构:理解 B 树、B+ 树特点及使用场景
  4. python中的copy.deepcopy()
  5. 20世纪最好的10个算法
  6. react 点击弹窗之外关闭弹窗 demo
  7. 2022-2028年中国光声成像系统行业市场调研分析及发展规模预测报告
  8. 电信联通上海分别启用181与185号段
  9. Cisco Nexus vPC 之 Sticky Master
  10. Ant Design蚂蚁设计理念