이 기사에는 소규모 프로그램 개발에 대한 몇 가지 어려운 지식이 나열되어 있습니다. 모든 사람에게 도움이 되기를 바랍니다.
(학습 영상 공유: 프로그래밍 영상)
1. QR 코드를 생성하는 미니 프로그램
QR 코드를 생성하는 미니 프로그램은 실제로 백엔드 호출이 필요하며, 프론트엔드가 백엔드를 호출합니다. -끝 인터페이스.
다음 예에서는 백엔드 장면에 추가 매개변수를 전달합니다(최대 길이는 32자이며 숫자, 영어 대문자 및 소문자, 일부 특수 문자만 지원합니다: !#$&'()*+,/:; = ?@-._~, 열린 애플릿에서 사용되는 다른 문자를 직접 합법적인 문자로 인코딩하십시오.
let scene = 't=3&n='+ this.inputVal+'&sale='+this.saleId; request(qcode,{isHyaline:false,qrcodeType:2,scene:scene,width:255,color:{r:'255',g:'255',b:'255'}}) .then(res=>{}) })
여기서 함정은 프런트엔드가 QR 코드를 스캔하여 매개변수를 얻는 방법입니다.
onLoad(opts){ var scene = decodeURIComponent(opts.scene); // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene }
2. 미니 프로그램이 미니 프로그램으로 점프합니다.
여기서 미니 프로그램을 호출합니다
function toMiniProgram(appid, path, extraData) { wx.navigateToMiniProgram({ appId: appid, // 要打开的小程序 appId path: path, // 打开的页面路径 envVersion: 'develop', //要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。 extraData: extraData, // 需要传递给目标小程序的数据 success: function (res) { console.log('打开成功') }, fail: function (res) {} }) }
페이지에서
toMiniProgram('appid','pages/customer/goods-detail?id='+id+'&saleId='+this.saleId,{});
를 사용하여 다른 애플릿에서 매개변수 가져오기
onLoad(opts){ this.goodsId=opts.id this.saleId=opts.saleId }
3. 천장 효과 구현
천장 효과의 원리는 특정 높이로 스크롤된 탭을 고정된 위치로 재배열하는 것입니다
html
<view class="tab-ctn"> <view class="tabs flex flex-justify {{isTabFixed?'fixed':''}}" id="tabs"> <view class="item pr {{tabIndex===0?'on':''}}" @tap="toggleTab(0)">商品介绍</view> <view class="item pr {{tabIndex===1?'on':''}}" @tap="toggleTab(1)">规格参数</view> </view> </view>
css
.tabs{ padding:0 176rpx; font-size:30rpx; height:90rpx; border-bottom:0.5px solid #E4E4E4;} .item{ height:100%; position:relative; padding-top:20rpx; color:#999; &.on{ color:#FD343B; font-weight:bold; } } .fixed{ position:fixed; top:0; left:0; right:0; z-index:9; }
js
data={ detailTopH:300, } onLoad(){ this.getElHeight('') // tab上面元素的高度 } /**封装根据id获取元素高度 */ getElHeightById(id){ return new Promise(function(resolve,reject){ const query = wx.createSelectorQuery() query.select('#'+id).boundingClientRect() query.selectViewport().scrollOffset() query.exec(function (res) { resolve(res[0].height) }) }) } // 调用 getElHeight(id){ this.getElHeightById(id).then(res=>{ this.detailTopH = res }) } /**监听页面滚动事件 */ onPageScroll(e){ if(e.scrollTop>=this.detailTopH && !this.isTabFixed){ this.isTabFixed=true }else if(e.scrollTop<=this.detailTopH && this.isTabFixed){ this.isTabFixed=false } }
4. 캡슐화 타임스탬프
function formatTime(timestamp, type = "date") { var date = new Date(timestamp); var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds() if (type == "date") { return [year, month, day].map(formatNumber).join('-'); } else if (type == "all") { return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':') } else if (type == "time") { return [hour, minute, second].map(formatNumber).join(':') } else if (type == "time2") { return [hour, minute].map(formatNumber).join(':') } else if (type == 'month') { return [month, day].map(formatNumber).join('-'); } } /**niu 封装时间戳格式化辅助,将年月日先转为字符串,再判断是否加0*/ function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } formatTime(1236547891,'all') // 2019-11-02 03:11:11 formatTime(1236547891,'time') // 03:11:22 formatTime(1236547891,'time2') // 03:11 formatTime(1236547891,'month') // 03-03 formatTime(1236547891,'date') // 2019-11-02
관련 권장 사항: Mini 프로그램 개발
위 내용은 미니프로그램 개발에 있어서 어려운 점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!