亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Python+uniapp構(gòu)建微信小程序英語(yǔ)單詞激勵(lì)學(xué)習(xí)系統(tǒng)

Python+uniapp構(gòu)建微信小程序英語(yǔ)單詞激勵(lì)學(xué)習(xí)系統(tǒng) 做英語(yǔ)單詞學(xué)習(xí)小程序的人很多但真正把“激勵(lì)”兩個(gè)字落到實(shí)處的項(xiàng)目太少。這次要分享的項(xiàng)目是一個(gè)用Python 寫后端、uniapp 寫前端、最終跑在微信小程序里的英語(yǔ)單詞在線學(xué)習(xí)激勵(lì)系統(tǒng)。它解決的問(wèn)題很直接背單詞這件事天然枯燥用戶很難堅(jiān)持所以系統(tǒng)不能只做“查詞、背詞”的工具還得用積分、打卡、排行榜、成就徽章這些游戲化機(jī)制把學(xué)習(xí)變成一種“有反饋、有盼頭”的日常行為。對(duì)于想玩全棧、想做微信小程序產(chǎn)品、或者正在籌備畢設(shè)/課設(shè)的人來(lái)說(shuō)這個(gè)項(xiàng)目覆蓋了從賬號(hào)體系、業(yè)務(wù)邏輯到多端打包上線的完整鏈路值得拆開(kāi)揉碎聊一聊。先說(shuō)幾個(gè)關(guān)鍵選型為什么這么定前端選 uniapp是因?yàn)樗惶状a能同時(shí)出微信小程序、App 和 H5不用為不同平臺(tái)各寫一套后端選 Python是因?yàn)?Flask 框架寫 RESTful API 非常輕快配合 SQLite/MySQL 做數(shù)據(jù)持久化足夠支撐中小規(guī)模的學(xué)習(xí)類應(yīng)用微信小程序作為首發(fā)平臺(tái)則是因?yàn)樗挠脩臬@取成本低、分享裂變路徑短最適合做“每日打卡”這類高頻次、輕量級(jí)的工具型產(chǎn)品。接下來(lái)我從需求拆解、核心功能實(shí)現(xiàn)、打包聯(lián)調(diào)到問(wèn)題排查完整過(guò)一遍這個(gè)系統(tǒng)的實(shí)戰(zhàn)細(xì)節(jié)。1. 需求洞察與整體方案設(shè)計(jì)1.1 英語(yǔ)單詞學(xué)習(xí)的痛點(diǎn)與“激勵(lì)系統(tǒng)”的切入點(diǎn)背單詞類應(yīng)用最大的問(wèn)題不是功能不足而是留存率低。用戶下載后頭兩天熱情高漲第三天打開(kāi)率就開(kāi)始斷崖式下跌。市面上大多數(shù)單詞 App 功能堆得很滿卻忽略了“人天生需要即時(shí)反饋和被認(rèn)可”這個(gè)心理機(jī)制。所以這套系統(tǒng)的設(shè)計(jì)初心不是“做更好的詞典”而是“做能讓人堅(jiān)持的教練”。激勵(lì)系統(tǒng)的本質(zhì)是把學(xué)習(xí)行為拆成一個(gè)一個(gè)可完成的小目標(biāo)用即時(shí)反饋去強(qiáng)化正向行為。比如用戶每完成一組 10 個(gè)單詞的學(xué)習(xí)立刻發(fā)放積分、彈出打卡成功動(dòng)畫、更新連續(xù)打卡天數(shù)這些反饋在 1 秒內(nèi)完成大腦就會(huì)把“背單詞”和“愉悅感”綁定從而提升復(fù)訪概率。從產(chǎn)品功能上激勵(lì)系統(tǒng)至少包含五個(gè)支柱每日打卡記錄連續(xù)學(xué)習(xí)天數(shù)斷簽會(huì)讓用戶產(chǎn)生“不能斷”的沉沒(méi)成本心理。積分/金幣學(xué)習(xí)行為產(chǎn)生積分積分可用于兌換虛擬道具或解鎖個(gè)性化主題。成就徽章如“首次完成學(xué)習(xí)”、“連續(xù) 7 天打卡”、“詞匯量突破 500”等滿足收集欲。排行榜好友排名或全局排名引入適度社交比較激發(fā)競(jìng)爭(zhēng)動(dòng)力。個(gè)性化反饋根據(jù)用戶學(xué)習(xí)時(shí)長(zhǎng)、正確率推送不同的鼓勵(lì)文案和進(jìn)階路線。這五個(gè)支柱聽(tīng)起來(lái)簡(jiǎn)單但實(shí)現(xiàn)時(shí)要注意激勵(lì)的“度”獎(jiǎng)勵(lì)太密會(huì)失去成就感太疏則用戶感知不到。實(shí)際操作中我傾向于把積分倍數(shù)設(shè)計(jì)和任務(wù)難度掛鉤比如新用戶前三天雙倍積分第 4 天起回到正常倍率形成一個(gè)平滑的激勵(lì)曲線。這樣既不影響早期體驗(yàn)也能在后期通過(guò)“限時(shí)活動(dòng)”重新刺激活躍度。1.2 技術(shù)選型為什么是 Python uniapp 微信小程序這個(gè)組合不是隨手指的每個(gè)環(huán)節(jié)都有對(duì)應(yīng)要解決的問(wèn)題。Python 后端我用 Flask 作為主框架原因有三。第一Flask 輕量一個(gè)單詞學(xué)習(xí)系統(tǒng)的 API 層用單文件加幾個(gè)藍(lán)圖就能組織清楚不需要 Django 那種全家桶的重量感第二Python 生態(tài)里有非常成熟的 ORMSQLAlchemy和數(shù)據(jù)庫(kù)遷移工具Alembic迭代數(shù)據(jù)表結(jié)構(gòu)很方便第三如果后續(xù)要在這個(gè)系統(tǒng)里加 AI 推薦算法比如根據(jù)遺忘曲線智能推薦復(fù)習(xí)單詞Python 的機(jī)器學(xué)習(xí)庫(kù)可以直接接入技術(shù)棧不會(huì)斷層。當(dāng)然有人會(huì)說(shuō) FastAPI 性能更好、自動(dòng)生成 OpenAPI 文檔我也試過(guò)確實(shí)也舒服。但考慮到團(tuán)隊(duì)里其他人更熟悉 Flask且小程序端并發(fā)量在一定范圍內(nèi)時(shí)兩者差異并不明顯最終選了 Flask。這里想強(qiáng)調(diào)一個(gè)觀點(diǎn)選型不是選“最潮的”而是選“整個(gè)項(xiàng)目周期里最順手的”。uniapp 前端這個(gè)框架最大的價(jià)值是多端復(fù)用。我在開(kāi)發(fā)過(guò)程中先在 H5 端調(diào)試樣式和交互確認(rèn)無(wú)誤后再跑微信小程序效率非常高。更重要的是uniapp 對(duì) Vue 語(yǔ)法支持很完整如果你之前寫過(guò) Vue 2/Vue 3上手成本幾乎為零。微信小程序它是當(dāng)前最合適的首發(fā)平臺(tái)因?yàn)槲⑿盘峁┝送暾牡卿?、支付、分享、訂閱消息能力且用戶基?shù)大、傳播路徑短。尤其在“排行榜”和“好友對(duì)戰(zhàn)”這類社交激勵(lì)場(chǎng)景中微信的開(kāi)放數(shù)據(jù)域能力可以直接讀取好友關(guān)系這是 App 端很難做到的。1.3 整體架構(gòu)與數(shù)據(jù)流設(shè)計(jì)系統(tǒng)采用前后端分離架構(gòu)。前端是 uniapp 工程包含頁(yè)面、組件、狀態(tài)管理Vuex/Pinia后端是 Python Flask 服務(wù)提供用戶、單詞、學(xué)習(xí)記錄、積分、打卡等 RESTful API數(shù)據(jù)庫(kù)用 MySQL生產(chǎn)環(huán)境和 SQLite開(kāi)發(fā)環(huán)境做雙模式切換方便本地起服務(wù)。一個(gè)典型的用戶學(xué)習(xí)流程是這樣走的用戶打開(kāi)小程序前端調(diào)用wx.login獲取臨時(shí) code傳給后端。后端拿著 code 向微信接口換取 openid然后查數(shù)據(jù)庫(kù)如果 openid 不存在就自動(dòng)注冊(cè)新用戶并初始化默認(rèn)配置比如每日目標(biāo) 10 個(gè)新詞。前端獲取到用戶信息后請(qǐng)求“今日學(xué)習(xí)任務(wù)”接口后端根據(jù)用戶的單詞進(jìn)度、遺忘曲線數(shù)據(jù)生成一組待學(xué)習(xí)單詞。用戶每答對(duì)一題前端調(diào)后端接口上報(bào)學(xué)習(xí)結(jié)果后端更新學(xué)習(xí)記錄同時(shí)累加積分、檢查成就觸發(fā)條件。用戶完成當(dāng)日全部任務(wù)前端展示打卡成功頁(yè)面后端記錄連續(xù)打卡天數(shù)。這個(gè)流程里后端承擔(dān)了核心業(yè)務(wù)邏輯和狀態(tài)管理前端盡量保持輕量只負(fù)責(zé)展示和交互。這樣的好處是后續(xù)要擴(kuò)展 App 端或 H5 端時(shí)前端可以重寫但后端邏輯不用動(dòng)。2. 核心功能模塊的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)2.1 微信登錄與手機(jī)號(hào)授權(quán)最容易踩坑的一環(huán)微信小程序的登錄鏈路是很多新手第一個(gè)卡點(diǎn)。這里要區(qū)分兩個(gè)容易混淆的概念wx.login拿到的 code 換 openid這是靜默的不需要用戶授權(quán)而獲取手機(jī)號(hào)getPhoneNumber是需要用戶主動(dòng)點(diǎn)擊按鈕觸發(fā)的兩者權(quán)限等級(jí)完全不同。登錄接口的核心代碼邏輯是這樣的# Flask 后端處理微信登錄 app.route(/api/auth/login, methods[POST]) def wx_login(): data request.get_json() code data.get(code) # 用 code 換取 openid url https://api.weixin.qq.com/sns/jscode2session params { appid: 你的小程序appid, secret: 你的小程序secret, js_code: code, grant_type: authorization_code } resp requests.get(url, paramsparams).json() openid resp.get(openid) if not openid: return jsonify({code: 400, msg: 登錄失敗}) # 判斷用戶是否首次登錄是則創(chuàng)建新用戶 user User.query.filter_by(openidopenid).first() if not user: user User(openidopenid, nickname微信用戶, avatar默認(rèn)頭像) db.session.add(user) db.session.commit() # 生成 token 返回給前端 token generate_token(openid) return jsonify({code: 0, data: {token: token, user: user.to_dict()}})手機(jī)號(hào)授權(quán)則完全不同。uniapp 里需要在頁(yè)面放一個(gè)button open-typegetPhoneNumber用戶點(diǎn)擊后返回一個(gè)encryptedData和iv后端需要用小程序會(huì)話密鑰解密才能拿到真實(shí)手機(jī)號(hào)。這個(gè)解密過(guò)程很容易出問(wèn)題常見(jiàn)原因有兩個(gè)一是wx.login的 code 被用過(guò)了每次調(diào)用都會(huì)覆蓋之前的 code二是后端解密用的session_key過(guò)期需要重新走登錄流程。實(shí)際操作中我的建議是不要把手機(jī)號(hào)獲取放到登錄主流程里。先用 openid 完成靜默登錄讓用戶能立刻使用核心功能等用戶真正需要手機(jī)號(hào)時(shí)比如綁定賬號(hào)、參與抽獎(jiǎng)再引導(dǎo)授權(quán)。這樣既符合微信的合規(guī)要求也不影響用戶體驗(yàn)。2.2 單詞學(xué)習(xí)引擎詞庫(kù)設(shè)計(jì)、學(xué)習(xí)計(jì)劃與遺忘曲線單詞系統(tǒng)最核心的部分是詞庫(kù)和學(xué)習(xí)算法。詞庫(kù)我按 CET-4、CET-6、考研、雅思、托福分級(jí)每一級(jí)約 3000-5000 個(gè)單詞表結(jié)構(gòu)大致是CREATE TABLE words ( id INT PRIMARY KEY AUTO_INCREMENT, word VARCHAR(64) NOT NULL, phonetic VARCHAR(128), definition TEXT, example_sentence TEXT, example_translation TEXT, level VARCHAR(16), frequency_score INT DEFAULT 50 );學(xué)習(xí)記錄表則記錄每個(gè)用戶對(duì)每個(gè)單詞的掌握程度CREATE TABLE learning_records ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, word_id INT NOT NULL, status TINYINT DEFAULT 0, -- 0-不認(rèn)識(shí) 1-模糊 2-認(rèn)識(shí) review_count INT DEFAULT 0, -- 復(fù)習(xí)次數(shù) next_review_at DATETIME, -- 下次復(fù)習(xí)時(shí)間 last_answer_correct BOOLEAN );這里引入了一個(gè)簡(jiǎn)化版的間隔重復(fù)算法基于艾賓浩斯遺忘曲線的變體。每次用戶答題后根據(jù)正確與否調(diào)整next_review_at答對(duì)則把下次復(fù)習(xí)時(shí)間拉長(zhǎng)答錯(cuò)則縮短。具體間隔可以是一個(gè)經(jīng)驗(yàn)公式比如def calc_next_review(correct: bool, review_count: int) - datetime: if not correct: # 答錯(cuò)10 分鐘后再來(lái)一次 return now timedelta(minutes10) # 答對(duì)按 1天、2天、4天、7天、15天 的節(jié)奏遞進(jìn) intervals [1, 2, 4, 7, 15] idx min(review_count, len(intervals) - 1) return now timedelta(daysintervals[idx])這個(gè)算法是“夠用且不復(fù)雜”的典型代表。真正讀懂它的意義在于理解一個(gè)產(chǎn)品邏輯復(fù)習(xí)不應(yīng)該讓用戶自己決定而應(yīng)該由系統(tǒng)根據(jù)歷史行為自動(dòng)生成任務(wù)。系統(tǒng)的“今日新學(xué)”和“今日復(fù)習(xí)”兩個(gè) Tab就是從words表和learning_records表里分別撈數(shù)據(jù)拼裝出來(lái)的。一個(gè)比較實(shí)用的增強(qiáng)功能是“發(fā)音評(píng)測(cè)”。微信小程序里可以用voicerecorder或者調(diào)用同聲傳譯插件將用戶朗讀的音頻上傳到一個(gè)語(yǔ)音評(píng)分 API返回流利度、準(zhǔn)確度分?jǐn)?shù)。這個(gè)功能對(duì)單詞記憶的增強(qiáng)效果非常明顯但實(shí)現(xiàn)成本稍高。如果項(xiàng)目周期緊建議二期再上。2.3 激勵(lì)體系設(shè)計(jì)積分流水、成就徽章與排行榜積分系統(tǒng)的核心不是“記個(gè)數(shù)”而是“可感知”和“可追溯”。我設(shè)計(jì)了points_transactions表專門記錄每一筆積分變動(dòng)CREATE TABLE points_transactions ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, points INT NOT NULL, -- 正數(shù)為獲得負(fù)數(shù)為消耗 type VARCHAR(32) NOT NULL, -- study_daily, check_in, exchange... description VARCHAR(128), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );前端展示積分變化時(shí)用數(shù)字滾動(dòng)動(dòng)畫和輕提示浮層讓每一次加分都有感知。這個(gè)體驗(yàn)細(xì)節(jié)很重要如果只是靜默地在頁(yè)面角落變一個(gè)數(shù)字用戶根本不會(huì)意識(shí)到賺了積分。成就徽章我用了一張配置表來(lái)驅(qū)動(dòng)CREATE TABLE achievements ( id INT PRIMARY KEY AUTO_INCREMENT, code VARCHAR(64) UNIQUE NOT NULL, name VARCHAR(64) NOT NULL, description VARCHAR(128), icon_url VARCHAR(255), condition_type VARCHAR(32), -- continuous_days, total_points, total_words condition_value INT );后端在用戶每次學(xué)習(xí)行為后運(yùn)行一個(gè)成就檢查器逐條比對(duì)用戶最新?tīng)顟B(tài)和未解鎖的成就條件。為了避免頻繁查詢我把檢查動(dòng)作放到一個(gè)異步任務(wù)隊(duì)列里或者至少用一個(gè)定時(shí)器批量處理而不是同步阻塞在請(qǐng)求鏈路里。排行榜實(shí)現(xiàn)時(shí)有一個(gè)微信小程序特有的知識(shí)點(diǎn)如果要展示“好友排行”必須使用微信的開(kāi)放數(shù)據(jù)域Open Data Context即wx.getFriendCloudStorage。這個(gè)接口的調(diào)用環(huán)境是獨(dú)立的無(wú)法操作 DOM只能通過(guò)postMessage與主域通信頁(yè)面展示受限。更簡(jiǎn)單的替代方案是“全站排行榜”直接把所有用戶的積分匯總排序這樣不需要開(kāi)放數(shù)據(jù)域?qū)λ行〕绦蜷_(kāi)發(fā)者都適用。我當(dāng)時(shí)為了減少?gòu)?fù)雜度先做了全局榜后續(xù)好友榜留了接口位。另外一個(gè)容易遺漏的激勵(lì)細(xì)節(jié)是連續(xù)打卡提醒。微信訂閱消息可以做到每天準(zhǔn)時(shí)推送“你今天還沒(méi)打卡哦”這是提升次日留存率很有效的手段。uniapp 里發(fā)訂閱消息需要先通過(guò)uni.requestSubscribeMessage引導(dǎo)用戶訂閱后端再用模板消息接口推送。要注意訂閱消息的授權(quán)是一次性的用戶訂閱一次只能收到一次推送所以要在用戶“連續(xù)打卡第 3 天”這類關(guān)鍵時(shí)刻使用推送額度效果最好。3. 從源碼到小程序uniapp 打包與聯(lián)調(diào)全記錄3.1 創(chuàng)建 uniapp 工程并完成 manifest 配置如果是從零開(kāi)始建工程在 HBuilderX 里選擇“uni-app 項(xiàng)目”模板即可也可以直接用 Vue CLI 創(chuàng)建npx vue create -p dcloudio/uni-preset-vue。兩種方式都能用但 HBuilderX 自帶真機(jī)運(yùn)行、打包和部分云服務(wù)能力對(duì)于新手更友好。工程創(chuàng)建后第一件事是打開(kāi)src/manifest.json做基礎(chǔ)配置在“微信小程序配置”里填上自己的 AppID沒(méi)有就去微信公眾平臺(tái)注冊(cè)一個(gè)測(cè)試號(hào)。在“基礎(chǔ)配置”里填寫應(yīng)用名稱和版本號(hào)。在“模塊配置”里按需勾選定位、地圖、分享等模塊沒(méi)用到盡量不要勾選因?yàn)槊總€(gè)模塊都會(huì)增加打包體積。這里要特別提醒manifest 的每次修改都必須重新編譯才生效。很多人在 manifest 里改了 AppID 后直接刷新開(kāi)發(fā)者工具發(fā)現(xiàn)沒(méi)變化其實(shí)是忘了點(diǎn)擊 HBuilderX 菜單欄的“重新運(yùn)行”或“發(fā)行-小程序”。如果你用的是 uni-app 的 Vue 3 版本工程里默認(rèn)支持 TypeScript可以在創(chuàng)建工程時(shí)勾選“啟用 TS”。TS 對(duì)接口數(shù)據(jù)的類型約束非常有用尤其是在對(duì)接后端 API 時(shí)能少掉一半字段名拼寫錯(cuò)誤的低級(jí)問(wèn)題。但對(duì)小程序來(lái)說(shuō) TS 不是必選項(xiàng)如果團(tuán)隊(duì)不熟 TS普通 JavaScript 也完全夠用。3.2 微信開(kāi)發(fā)者工具聯(lián)調(diào)與抓包技巧uniapp 運(yùn)行到微信小程序后代碼會(huì)在dist/dev/mp-weixin目錄下生成小程序原生工程。在微信開(kāi)發(fā)者工具里導(dǎo)入這個(gè)目錄時(shí)需要注意AppID 要與小程序后臺(tái)的一致?!安恍r?yàn)合法域名”這個(gè)開(kāi)關(guān)只適合開(kāi)發(fā)階段生產(chǎn)環(huán)境必須把后端 API 域名加到小程序后臺(tái)的 request 合法域名里。開(kāi)發(fā)者工具的“本地緩存”在開(kāi)發(fā)期經(jīng)常造成接口數(shù)據(jù)“舊”可以頻繁按 CtrlShiftR 強(qiáng)制刷新或直接清緩存重進(jìn)。抓包方面很多人推薦 Charles我在實(shí)際調(diào)試中也確實(shí)用它抓過(guò)自定義 header 和加密參數(shù)的異常。用 Charles 抓微信小程序包的基礎(chǔ)流程是電腦端 Charles 開(kāi)啟 SSL Proxying并安裝根證書。手機(jī) WiFi 設(shè)置手動(dòng)代理指向電腦 IP端口默認(rèn) 8888。手機(jī)端訪問(wèn)chls.pro/ssl下載并信任 Charles 證書。打開(kāi)小程序后Charles 里就能看到所有 HTTPS 請(qǐng)求。這個(gè)流程對(duì)解決“為什么接口報(bào) 500 / 返回?cái)?shù)據(jù)不對(duì)”這類問(wèn)題非常高效。我現(xiàn)在養(yǎng)成的習(xí)慣是調(diào)試接口時(shí)先問(wèn)“后端到底返了什么”而不是“前端為什么顯示不對(duì)”。抓包能直接把最后一層黑盒打開(kāi)。3.3 小程序包體積超限source size 超過(guò) 2MB 的終極解法這可能是微信小程序開(kāi)發(fā)中最知名的一道坎開(kāi)發(fā)者工具報(bào)source size 2612kb exceed max limit 2mb。我第一次遇到時(shí)也很懵明明項(xiàng)目沒(méi)那么大怎么就超了 600 多 KB。主要原因通常有三個(gè)靜態(tài)資源沒(méi)走 CDN本地放了太多圖片、圖標(biāo)、音效文件。小程序主包只放必要資源圖片一律上傳到對(duì)象存儲(chǔ)如阿里云 OSS / 騰訊云 COS代碼里用 URL 引用。node_modules 被誤打包有些 npm 包被 import 了但編譯時(shí)沒(méi)有被正確 tree-shaking把大量無(wú)用的源碼帶進(jìn)了包。此時(shí)可以檢查uni_modules和package.json中的依賴把沒(méi)用的包移除。使用分包加載微信小程序允許把獨(dú)立頁(yè)面放進(jìn)subpackages按需加載。比如把“排行榜”、“成就詳情”、“設(shè)置”這些非首頁(yè)頁(yè)面分到 subpackage主包體積立刻降下來(lái)。uniapp 配置分包在pages.json里加一個(gè)subPackages字段{ pages: [ { path: pages/index/index, style: { navigationBarTitleText: 首頁(yè) } } ], subPackages: [ { root: pages/rank, pages: [ { path: index, style: { navigationBarTitleText: 排行榜 } } ] } ] }分包配置完成后記得在編譯時(shí)觀察主包體積目標(biāo)是控制在 1.5MB 以內(nèi)留下一定余量給后續(xù)代碼增長(zhǎng)。除了分包還有一個(gè)容易忽略的點(diǎn)壓縮圖片。一張 300KB 的 PNG 壓縮到 WebP 可能只有 30KB如果這樣的圖片有 10 張省下來(lái)的體積就非??捎^。3.4 頂部導(dǎo)航欄高度適配與自定義導(dǎo)航小程序頁(yè)面標(biāo)題欄的高度不是固定值。iPhone X 系列有安全區(qū)狀態(tài)欄高度約 44px普通機(jī)型約 20px。如果你要做沉浸式自定義導(dǎo)航欄就需要?jiǎng)討B(tài)計(jì)算頂部安全距離。uniapp 里獲取狀態(tài)欄高度和導(dǎo)航欄高度的常用寫法// 獲取系統(tǒng)信息 const systemInfo uni.getSystemInfoSync(); // 狀態(tài)欄高度單位 px const statusBarHeight systemInfo.statusBarHeight; // 微信小程序膠囊按鈕位置信息 const menuButtonInfo uni.getMenuButtonBoundingClientRect(); // 導(dǎo)航欄高度 ≈ 膠囊按鈕高度 上下留白 const navBarHeight (menuButtonInfo.top - statusBarHeight) * 2 menuButtonInfo.height;在自定義導(dǎo)航欄場(chǎng)景中這個(gè)公式是通用的。拿到高度后用 CSS 變量保存頁(yè)面內(nèi)直接引用避免每個(gè)頁(yè)面重寫一遍。另外要注意uni.getMenuButtonBoundingClientRect()在小程序端返回的膠囊位置信息必須等頁(yè)面渲染完成之后調(diào)用否則可能拿不到正確值。建議在onReady生命周期里處理或封裝成一個(gè)返回 Promise 的公共方法。如果你用的是 H5 端調(diào)試uni.getMenuButtonBoundingClientRect()可能不存在所以這段邏輯要做平臺(tái)判斷只有process.env.UNI_PLATFORM mp-weixin時(shí)才執(zhí)行。4. 開(kāi)發(fā)中遇到的典型問(wèn)題與排查思路速查表開(kāi)發(fā)這個(gè)系統(tǒng)過(guò)程中我整理了大約 20 個(gè)常見(jiàn)報(bào)錯(cuò)和對(duì)應(yīng)的解法。這些問(wèn)題的重復(fù)出現(xiàn)率極高放出來(lái)給大家避坑問(wèn)題現(xiàn)象原因分析解決方案wx.login返回 code 但后端換取 openid 失敗AppID 與 Secret 不匹配后端拿的是舊參數(shù)核對(duì)小程序后臺(tái)的 AppID 和 AppSecret確認(rèn)后端環(huán)境變量已更新微信開(kāi)發(fā)者工具報(bào)10002錯(cuò)誤一般是簽名校驗(yàn)失敗或參數(shù)編碼錯(cuò)誤檢查接口請(qǐng)求參數(shù)是否包含特殊字符確認(rèn)簽名算法與后端一致uniapp 控制臺(tái)不打印 console.log微信開(kāi)發(fā)者工具的“調(diào)試器”設(shè)置里關(guān)閉了日志輸出打開(kāi)調(diào)試器 Console 面板勾選“Log”過(guò)濾項(xiàng)真機(jī)預(yù)覽時(shí)圖片全部加載失敗圖片域名未加入“downloadFile 合法域名”在小程序后臺(tái)配置 downloadFile 合法域名并讓圖片存儲(chǔ)服務(wù)允許跨域首次打開(kāi)白屏超過(guò) 3 秒首屏請(qǐng)求過(guò)多或分包配置錯(cuò)誤將首頁(yè)邏輯簡(jiǎn)化登錄態(tài)緩存本地 token減少首屏請(qǐng)求getPhoneNumber返回 errCode 異常用戶取消授權(quán)或 session_key 已過(guò)期捕獲異常并提示重新授權(quán)必要時(shí)重新走 wx.login 流程自定義導(dǎo)航欄在 iPhone 上角度偏移忽略了底部安全區(qū) padding-bottom使用 env(safe-area-inset-bottom) 適配底部頂部用動(dòng)態(tài)狀態(tài)欄高度打包后體積仍然超過(guò) 2MB靜態(tài)資源未走 CDN或分包未生效清點(diǎn)所有本地靜態(tài)資源強(qiáng)制走 CDN檢查 pages.json 的 subPackages 配置是否被編譯在內(nèi)除了表格我再講一個(gè)調(diào)試經(jīng)驗(yàn)很多 uniapp 問(wèn)題在模擬器上不出現(xiàn)的一上真機(jī)就爆。比如單選框組件在某些 Android 機(jī)型上樣式錯(cuò)亂、滑動(dòng)穿透問(wèn)題、鍵盤彈起遮擋輸入框等。這些問(wèn)題的統(tǒng)一排查路徑是先在微信開(kāi)發(fā)者工具“真機(jī)調(diào)試”模式跑一遍然后用日志按鈕把用戶操作路徑記下來(lái)。如果是渲染層問(wèn)題多半是樣式兼容導(dǎo)致的優(yōu)先查看組件的自定義樣式里有沒(méi)有寫死寬高如果是交互層問(wèn)題就要檢查事件綁定是否被重復(fù)執(zhí)行。關(guān)于“uniapp 不打印日志信息”的現(xiàn)象我多說(shuō)一句。這個(gè)坑通常發(fā)生在真機(jī)調(diào)試模式因?yàn)槲⑿砰_(kāi)發(fā)者工具默認(rèn)只顯示主包日志分包的console.log容易被過(guò)濾掉。解決辦法很簡(jiǎn)單在 HBuilderX 的“運(yùn)行-運(yùn)行到小程序模擬器”時(shí)選擇“運(yùn)行時(shí)是否壓縮代碼”為否并在開(kāi)發(fā)者工具 Console 的 Level 過(guò)濾器中勾選 “Verbose” 或 “Info”。實(shí)在找不到就直接在代碼里寫一個(gè)統(tǒng)一的日志上報(bào)函數(shù)把關(guān)鍵日志發(fā)送到后端接口這樣線上出問(wèn)題也能回?fù)?。另外有同學(xué)問(wèn)過(guò) uniapp 上架安卓應(yīng)用市場(chǎng)和微信小程序的差異。小程序打包是在 HBuilderX 里“發(fā)行-小程序-微信”產(chǎn)物是微信開(kāi)發(fā)者工具再上傳審核而安卓上架需要原生打包可以選擇云打包或本地離線打包。云打包的坑在于如果你用了原生插件或地圖、推送等第三方 SDK必須勾選對(duì)應(yīng)模塊并申請(qǐng)相應(yīng)權(quán)限本地打包則需要配置 Android 證書、權(quán)限聲明、版本號(hào)等一大堆信息。建議先把微信小程序版本跑順再考慮多端分發(fā)精力有限時(shí)不要試圖一次端平。5. 從單機(jī)到產(chǎn)品數(shù)據(jù)可視化與運(yùn)營(yíng)迭代思路5.1 學(xué)習(xí)數(shù)據(jù)可視化讓用戶看到自己的進(jìn)步激勵(lì)系統(tǒng)如果只靠積分和排行榜時(shí)間長(zhǎng)了會(huì)疲軟。更好的做法是給用戶一份“學(xué)習(xí)體檢報(bào)告”本周學(xué)了多少新詞、復(fù)習(xí)了哪些詞、預(yù)計(jì)掌握的詞匯量、連續(xù)打卡趨勢(shì)、正確率變化曲線等等。這些數(shù)據(jù)在后端并不難統(tǒng)計(jì)只要定時(shí)跑幾個(gè)聚合查詢生成 JSON 返回前端。前端用 uniapp 里集成的圖表組件如 ucharts繪制折線圖、柱狀圖即可。圖表組件通常比較大建議放分包只在用戶點(diǎn)擊“學(xué)習(xí)報(bào)告”時(shí)加載。從產(chǎn)品角度看可視化不只是炫技它是“里程碑感”的來(lái)源。當(dāng)用戶看到正確率從 50% 逐步提升到 80%連續(xù)打卡 30 天的曲線越來(lái)越高這種成就感和排行榜帶來(lái)的外部競(jìng)爭(zhēng)形成互補(bǔ)。我做系統(tǒng)時(shí)一直遵循一個(gè)原則“數(shù)據(jù)要展示趨勢(shì)而不是只有一個(gè)當(dāng)前值”。趨勢(shì)讓人看到路徑路徑讓人愿意走下去。5.2 分享裂變與社交激勵(lì)拼團(tuán)打卡、邀請(qǐng)好友、分享卡片微信小程序最核心的增長(zhǎng)手段就是分享。uniapp 實(shí)現(xiàn)分享的好記法頁(yè)面上使用onShareAppMessage生命周期鉤子小程序端自動(dòng)支持。自定義分享按鈕時(shí)可以用button open-typeshare或者在頁(yè)面上綁定clickshareFriend后調(diào)用uni.shareH5 端不支持要平臺(tái)判斷。分享卡片里的標(biāo)題、圖片路徑、跳轉(zhuǎn)路徑都可以在onShareAppMessage的 return 對(duì)象中動(dòng)態(tài)配置。結(jié)合激勵(lì)系統(tǒng)分享可以做得更聰明設(shè)計(jì)“邀請(qǐng) 3 位好友解鎖專屬皮膚”“好友助力獲取雙倍積分”這類任務(wù)。這里需要注意微信小程序?qū)Ψ窒沓鋈サ捻?yè)面有路徑限制只能分享已配置的頁(yè)面路徑不能隨意拼接參數(shù)。如果要在分享鏈路里追蹤用戶來(lái)源需要在分享參數(shù)中帶上scene或自定義參數(shù)再在目標(biāo)頁(yè)面的onLoad(options)里解析。訂閱消息配合分享也有講究。我的做法是當(dāng)用戶連續(xù)打卡第 5 天時(shí)彈窗提示“點(diǎn)擊授權(quán)訂閱消息明天繼續(xù)提醒你打卡”同時(shí)贈(zèng)送一個(gè)額外的積分禮包。這個(gè)場(chǎng)景里用戶接受訂閱的意愿最高是性價(jià)比非常高的引導(dǎo)時(shí)點(diǎn)。另外分享卡片圖片要做得足夠醒目建議用 Canvas 動(dòng)態(tài)生成用戶專屬的打卡海報(bào)再調(diào)用uni.saveImageToPhotosAlbum保存到相冊(cè)這一步對(duì)傳播轉(zhuǎn)化率影響很大。5.3 后端接口的高效管理與后續(xù)擴(kuò)展建議項(xiàng)目到后期接口數(shù)量會(huì)膨脹到幾十個(gè)。如果都寫在 Flask 的單個(gè) app.py 里項(xiàng)目會(huì)變得難以維護(hù)。我的建議是盡早用 Flask Blueprint 組織路由模塊每個(gè)模塊用戶、單詞、學(xué)習(xí)、積分、成就、排行對(duì)應(yīng)一個(gè) Python 文件數(shù)據(jù)庫(kù)模型單獨(dú)一個(gè) models 目錄。一個(gè)實(shí)用的目錄結(jié)構(gòu)示例backend/ ├── app.py # Flask 入口 ├── config.py # 配置讀取 ├── models/ │ ├── __init__.py │ ├── user.py │ ├── word.py │ ├── learning_record.py │ └── achievement.py ├── api/ │ ├── __init__.py │ ├── auth.py │ ├── words.py │ ├── progress.py │ ├── points.py │ └── rank.py └── utils/ ├── jwt_auth.py ├── wechat_helper.py └── response.py另外所有接口的響應(yīng)格式要統(tǒng)一。我習(xí)慣用{code: 0, msg: success, data: {...}}包一層前端通過(guò)攔截器統(tǒng)一處理業(yè)務(wù)碼這樣不用每個(gè)頁(yè)面都做一遍錯(cuò)誤分支。后續(xù)如果要接入 App 端uniapp 工程可以直接云打包成安卓/iOS 原生應(yīng)用后端接口不用改動(dòng)只是在用戶登錄上需要補(bǔ)充 App 端的登錄方式如 APP 內(nèi)部授權(quán)登錄或賬密登錄。熱更新方面uniapp 的 App 端可以通過(guò) wgt 包做整包熱更新小程序端則不需要這套邏輯因?yàn)樾〕绦虻拇a更新是依賴微信審核并發(fā)布的。如果想讓小程序也能“熱更新”可以在后端配置一個(gè)“版本開(kāi)關(guān)”前端請(qǐng)求時(shí)比對(duì)本地版本號(hào)不匹配就提示用戶刷新或清理緩存這是一種輕量的應(yīng)急方案。6. 一些實(shí)話我把坑踩完后最想留給你的一條經(jīng)驗(yàn)寫到這里關(guān)于這個(gè)系統(tǒng)從需求、架構(gòu)、代碼到上線的所有核心環(huán)節(jié)基本都過(guò)了一遍。如果讓我壓縮成一兩句話的實(shí)用心得我想說(shuō)小程序項(xiàng)目的復(fù)雜度往往不是技術(shù)本身而是微信生態(tài)的各種規(guī)則和邊界。登錄不是純前端的事不是純后端的事是兩端如何配合、邊界如何劃分的事體積問(wèn)題也不只是刪幾張圖就能解決而是從選型到部署都要有包體意識(shí)激勵(lì)系統(tǒng)的效果更是如此下一層代碼里每個(gè)數(shù)字、每次彈窗都參與塑造用戶體驗(yàn)值得像打磨產(chǎn)品一樣去雕琢它們。最后再分享一個(gè)我在實(shí)際開(kāi)發(fā)中用到的小技巧在 uniapp 里封裝一個(gè)統(tǒng)一的請(qǐng)求模塊把 baseURL、token 刷新、錯(cuò)誤提示、加載狀態(tài)全部收斂進(jìn)去。這層封裝看似簡(jiǎn)單但對(duì)后續(xù)聯(lián)調(diào)和多端擴(kuò)展的幫助非常大當(dāng)你需要新增一個(gè)頁(yè)面或接入一個(gè)新的運(yùn)營(yíng)活動(dòng)時(shí)會(huì)發(fā)現(xiàn)前期建的地基直接決定了后期往上蓋樓的速度。每個(gè)項(xiàng)目都會(huì)有一些反復(fù)敲打的細(xì)節(jié)這就是其中之一。往后如果再迭代這個(gè)系統(tǒng)我會(huì)優(yōu)先把單詞發(fā)音評(píng)測(cè)和用戶學(xué)習(xí)報(bào)告做成亮點(diǎn)功能再結(jié)合分享裂變的完整鏈路運(yùn)營(yíng)起來(lái)它能走多遠(yuǎn)很大程度上取決于這些“地基”打得有多穩(wěn)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久超碰这里只有精品| 欧洲一级性爱视频在线观看| 亚洲色图 图片| 亚洲天堂综合AV| 日韩精品在线放| 五毛骚逼极品美女怕怕| 中出789在线视频| 欧美日韩性感| 日夜啪电影| 亚川综合视频| 九九久久久| 男人天堂 天天射| 亚洲 综合 欧美| 日韩欧美一级特黄大片| 中文字幕天堂在线| 97爱爱爱| 亚洲色图欧美| 青青草在线视频美女| 亚洲精品国产av天美传媒| 中文字幕高清20页视频| 亚洲天堂 视频你懂的| 亚洲男人久久综合天堂| 久草网站免费在线观看| 一线黄色免费性爱片| 亚洲国产91精品一区二区久久| 天堂性色| 深夜国产福利| 日本黄色精品| 欧美AB在线| 欧美性第1页| 亚洲AV不卡在线观看| 91av天美性媒精品视频| 射丝袜高跟鞋99| 色综合美国| 久久99热这里只频精品6学生| 国产一区二区视频在线播放| 亚洲一区二区中文字幕| 午夜精品久久久久久久99蜜桃一| 97视频www| 亚洲色9| 丁香五月天激情综合| 亚洲最大的综合性av| 日韩熟女乱伦中出| xxx0国产在线播放| 欧美成人黄网色网站| 亚洲97久久精品亚洲| 岛国毛片手机在线观看| 在线一道啪| 熟女色综合久久| 福利视频一区二区微拍| 91呆哥人妻| 上海一级黄片| 狠狠干综合| 91久久久久久| 欧美色图 人妻| 亚洲欧洲第二视频在线观看色图| 色阁阁AV综合网| 天天热精品| 青青草日韩免费观看高清在线| 粉嫩国产精品久久久| AV在线资源| 国产精品午夜福利视频| 国产熟女无套内射| 涩综合导航| 久久中文字幕一区不卡| 亚洲黄网在哪免费看| 国产少妇肉丝在线观看| 日韩噜噜69| 中日韩久久久免费看| 亚洲女人91| 97在线视频观看| 色屁屁影院www国产| 亚洲av影院在线观看| 精品伊人久久久大香线蕉小说| 岛国成人av在线播放网址| 美女刺激久久国产欧美| 超碰欧美97资源| 亚洲男人天堂AV| 日韩欧美福利视频看看| 特级丰满少妇一级AAAA爱毛片| 大香蕉综合网| 男人的天堂2000| 蜜臀网 一区| 国产综合网站在线播放| yazhousetuoumei| 后入式五六区| 亚洲av无码国产精品字幕| 日韩一区二区三区四区五区| 任我爽视频在线观看| 97超碰超欧美。| 不卡二三区人妻少妇| 成人免费看吃奶视频网站| 国产成人精品日本视频| 91嫩草欧美| 激情另类激情| 日本无码1| 久久不卡一区二区| 久久久久久久性爱| 激情五月天丁香| 操一区| 九热中文字幕| 在线只有精品| 九九九国产精品| 免费av高清无码| 综合熟女| 国产精品人妻无码久久久老鸭窝| 志村玲子视频一区二区| 97精品免费视频网站| 丝袜剧情| 国产精品久久久999| 东北毛片| 老色69| 91四海无码日韩欧美| 亚洲第一黄色av网站| 超碰综合色| av网站免费线看| 夜夜高潮夜夜爽高清视频一| 欧美亚洲小说| 日本欧美色| 超碰成人人人爽人人爽| 影音综合网| 97色色色| 91成人社区| 国产人伦a片信息免费片| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 久久久久九九九九九| 亚洲欧美综合区自拍另类| 精品久久99| 中文字幕黄片在线| 日本高清熟女久久一区| 国产精品色色| 黄片视频观看| 99色骚| 淫荡少妇免费| 中出91视频| 强奸a片网| 中文熟女五十乱码在线| 亚洲男人天堂2019| 国产成人亚洲精品无| WWW4虎| 吖在线不卡一区二区国产剧情| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 国产人伦精品一区二区三区| 日本东京热加勒比久久| 东京热91| 欧美亚男人的天堂| 综合一区中亚洲国产成人综合精品| 天天天堂影视日韩亚洲91| 乱伦系列一区二区| 伦伦成年午夜免费视频| 一区二区三区一亚洲中文字幕、综合区灬| 水澄无码AV| 青青青国产手线观看视频2| 91性生活久久久| 尤物网址| 欧美激情在线观看视频| 久草色悠悠在线视频| 性久久| 欧美丝袜91| 91N五十路| 一级片在线观看高清无码| 国产人人干| 久久超碰久| 国产精品 久久久精品一牛| 人妻精品一区二区三区| 东京热av男人的天堂| 97人人干人人操| 亚洲无无码αⅴ每日更新| 九99久久| 97超碰精品成| 欧美乱妇狂野欧美在线视频| 日本曲间由美性生活片| 亚洲AV无码成人精品久久| 综合97| 亚洲熟妇综合久久久久久| 9久超碰| 国产精品极品美女视频| 久久久中文| 亚洲91综合| 久久久久成人蜜桃精品| 日韩精品永久在线观看| 韩国手机不卡无码三级视频| 五月天伊人网| 亚洲另类色综合网站| 亚洲不卡不卡中文字幕不卡| 五月激情小说| 婷色五月| 丁香五月成人| 国产精品久久久久久久久AV大片 | 日韩天堂av电影在线观看| 色综合色欲色综合色综合色综合| 能在线播放的国产三级| 超碰色男人操熟女| 精品国产Av无码久久久亚洲| 日韩欧美大片免费高清啪啪| 97爱爱| 黄页网站成人免费| 好湿好紧视频| 亚洲图片偷拍欧美| 天天操天天日天天干| 久久九七| 色av中文字幕| 久久久久亚洲精品| 91日产欧美| 日本加靬比网站发布页| 精品乱码久久久久| 欧美日韩97在线| Julia Annxxxxx| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 妇女视频网站| 欧美中字二区| 98精品国产乱码久久久久久| 97亚洲国产| 欧美日日人人天天| 啊啊啊慢点| 午夜亚洲| 久久少妇| 日韩免费a级毛片无码a∨| 国产精品操| 日韩在线国产字幕| 成人a大片在线观看| 免费一级黄色录像影片| 国产免费操逼| 国产免费永久精品无码| 一区久久久二区| 91天堂视频| 精品久久大胆人体| 久久久久女教师免费一区| 青草地一本线一区二区三区| 日韩福利综合一区| 色爱三区| 午夜情侣自拍网站| 超碰中文字幕人妻草一区| 啊啊啊好舒服视频在线观看| 欧洲亚洲天堂精品| 午夜在线播放| 91伊人久| 91操人视频| 综合影院亚洲| 九九国产| 婷婷五月天激情四射| 乱伦日本中文自拍| 亚洲最新a在线观看| 久久性爱城| 久久9精品视频| 日日妻色网| 欧美精品激情| 亚洲一区日韩精品| 曰韩无码777| 久久精品免费| 九一性生活免费视频| 国产精品伦理| 午夜超爽| 中国黑人三级片网站上区| 亚洲熟女乱色一区二区三区久久久 | 亚洲国产成人精品女人久久久| 成人一道本免费视频| 免费黄色A片| 久久免费看高潮毛片韩国| 天天综合网亚洲综合网| 欧美成年人性爱视频免费观看| 岛国大片在线观看网站入口| 久久天堂婷婷网| 欧美色自拍| 国产午夜精品理论片一二三区区| 九九性视频| 亚州综合AⅤ| 91色欧美| 久久亚洲av成人无码国产| 五月天综合网| 日韩免费一级性爱视频| 99热9| 老女人老91妇女老热女| 中文字幕美女91| 91日本在线观看| 330dv亚洲成年视频网| 78久久| 国产超碰人人操| 热久日综合| 国产强奸乱伦欧美| 精品妇女一区二区三区| 97国产超碰| 秋霞一级视频在线观看免费| 情色五月天网| 日本成人A片免费看| 亚洲精品视频二区| 丰满人妻一区二区三区| 久热9| julia ann久久| 欧美极品性爱天天射| 亚洲精品欧美专业| 91av熟女人妻| 天天摸夜夜摸| 日韩欧美操逼xxx| 欧美成人亚洲精品| 久久久久亚洲熟妇熟女| 亚洲精品丝袜| 在线观看成人性爱免费小视频| 91扒丝袜综合在线| 97精品一区二区视频| 欧美亚洲激情小说| 手机在线播放国产福利| 天天综合麻豆视频| 三级三久久线久久99久目本WW| 嗯嗯啊啊好大好爽| 欧美性生活综合| 国产精品白丝www| 色色色色电影网| 亚洲精品97p| 亚洲福利中文字幕在线| 欧美激情1区| 欧美黑人猛交春色影视大全| 午夜福利在线合集| 成人情色综合网| 欧美日韩成人在线| 蜜臀99久久| 国产十八禁视频| 亚洲 一区二区 自拍| 九九九九97| 青草视频在线看看看看看看看看看| 99re久久| 日本A级视频| 囯产乱伦一区二区三女| 超碰97亚洲| 午夜精品久久久久| 国产乱伦性爱AV| 中文字幕第2页| 亚洲av总站| 精品少妇人妻av久久免费| 91男人天堂网| 人妻天堂综合网| 欧美性xxxxx狂欢| 99re这里| 小草精彩毛片| 国产精品青草综合久久| 91丨豆花丨熟女| 素人伊尹大香蕉免费下载视频| 精品视频久久久久九九九九9999| 国产高清MV操逼视频| 青青草一区二区高清无码视频| 91xingse| 人人操AV| AV网站高清无码在线观看| 亚洲影视综合| 青青草久草AV| 自拍视频大全亚洲专媒视频/一区二区三区 | 天天做天天爽| 亚洲精品尤物yw在线影院| 久久成人东京热人妻| 久久久久久久久久久久黄色 | 久久久久网站-538在线视频-欧美永久乱码| 免费啪啪啪网站18岁| 色色毛片| 成人性生活高清视频在线播放| 欧美72网页| 色五月av| 婬女免费一二三区A片| 国产多人在线观看视频| 欧美少妇人妻| 91美女精品| 日韩欧美天天爽爽爽天天爽爽| 日韩亚洲美州欧洲综三区一品在线| 国产 无码 一区二区| 欧美日韩啪啪电影| 操一操摸一摸| 国产毛片片精品天天看视频| 97综合国产| 91精品婷婷国产综合久久| 亚洲一区二区 麻豆传媒| 伊人AAA| 色一色综合网| 黄色av片三级三级三级免费看| av影片在线观看不卡| 久久激情四射婷婷丁香五月天| 福利在线视频一区二区| 日日橹狠狠爱欧美超碰| 日本中文字幕高跟| 在线啊啊啊啊| 蜜桃传媒一区二区亚洲| 天天干天天日天天射黄色大片 | 啊啊啊水好多| 99re这里只有精品2| 国偷自 一区二区| 天堂网 主播 亚洲| 天天在线91| 亚洲成人色情五月天丁香花| 亚洲自拍欧美色综合| 夜草欧美| KK色在线影院| 久久久青青草| 日日爱99| 久久中文字幕一区不卡| 99热99在线播放激情| 粉嫩粉嫩一区性色AV片| 欧美黄色片AAAAA| 噜噜噜无码AV一级一级久久影院| 操久久久久久| 日韩欧美亚洲国产日韩| 欧美色图下一页| 欧美日韩青操| 激情久久日韩精品中文字幕麻豆| 国产97/欧美| 97神马久久| 色妺妺AⅤ| 激情熟女12P| 亚洲性爱电影| 亚洲色久| 亚洲熟久久| 中文字幕第95页| 中文字幕乱妇免费视频| 国产精品不卡高清在线观看| 69少妇一区二区| 色色香蕉| 国内精品伊人久久久久影院会| 大香蕉一区二区在线观看.| 色操逼网| 欧美成人性爱视频免费观看| 爱媛媛久久国产福利| 五月丁香| 97超碰热线| 性交一区二区在线播放| 国产97色在线 | 亚洲| 国产精品国产精品国产| jk白丝没脱就开始啪啪| 六月婷婷激情| 成人片视频| 丰满人妻一区二区三区免费| 黑人精品XXX一区一二区| 亚洲?V无码专区在线电影| 日本在线激情一区二区三区 | 蜜臀网 一区| 成人国产视频在线观看| 日本123区操B视频| 女一区二区| 色综合1991| 日韩无码人妻| 99人人干| 中文字幕AV片| 久久天堂| 婷婷久草| 嫩草91| 欧美日韩中文视频播放| 日韩性爱电影一区| 欧美97日韩| 美欧色综合| 国产亚洲精品美女久久久m| 人妻精品综合中文字幕在线| 亚洲好色人妻| 99re公开精品免费视频 | 欧美欧美少妇| 岛国成人av在线播放网址| 春色校园综合网| 麻豆成人AV| 夜间福利片1000无码| 狠插 制服 自拍| 超碰色97| 狠狠穞A片一區二區三區| 99精品久久久久久| 在线人成亚洲视频免费观看| 国内精品不卡无毒99999| 亚洲日韩资源| 久久 国产精品 一区| 91无摭挡| 欧美激情中文字幕另类小说| 99精品伊人| 18禁在线视频| 在线天堂999| 2017av无码免费无线播| 人妻在线中出视频| 亚洲国产成人精品999| 色月天AV导航| 亚洲国产美女久久久久| 亚洲日本男人天堂网| 舔足天天操天天射| 97中文超碰| 日日骚AV| 欧美情色男人的天堂| 亚洲AV成人精品网站在AV| 欧美黄色图片| 成人无码在线超碰网| 亚州久久9| 国产精品网址| 大香蕉92| 思思99热| 亚洲中文字幕精品一区| 人妻社区男人天堂| 操逼操网| 日本三级精品| 九色97| 国产真乱mangent| 欧美美女在线高潮999| 一个色导综合| 久久久91福利姬| AAA久久| 久久亚洲AV无码白度| 欧美老妇综合网| 中文字幕精品一区二区精| 亚洲性图91| 色婷婷色99国产综合精品| 国产熟女无套内射| 求求你操操我| 国产精品午夜高潮呻吟久久av| 麻豆av一区二区| 91精品国产综合久久久蜜臀| 最新国内自拍av免费| 97超碰中文字幕| 综合五月天| 91成人高清在线观看| 天堂精品| 一区二区三区四区五区高清无码永久视频| 国产精品网址| 91人妻在线视频| 欧美曰韩国产精品| 五月天社区| 久久性爱视频99| 久久9999 | 96精品久久| 少妇专区一二三四五| 九九人人操| 欧美精品成人在线播放| 亚洲高清欧美总合| 人妻内射一区二区在线视频| 天天日少妇逼AV| 久久久久免费看少妇A片特黄| 中国熟妇| 99热18这里只有精品| 又黑又大又粗| 久久五月天婷婷| 中文日本免费高清| 亚洲男人电影天堂| 91操熟女视频| 中文在线视频| 久草综合视频| 中文字日本乱码| 国产精品大香蕉| 久久久久久久国产a∨| 免费岛国一级片| 肥佬影院91| 亚洲清纯唯美| 久久精品国产久精国产| 少妇人妻精品| 天无日色综合| www.狠狠干.coom| 亚洲日本韩国在线| 亚洲欧美经典一区二区| 久久精品国产亚洲AV片多多| 91成人高清在线观看| 99999精品| 欧美姓爱综合网| 亚洲熟女一区二区| 热热色AV| 大香蕉99re| 999久久芭蕾| 青青三级视频| 蜜臀亚洲综合一二三四区| 麻豆精品A片免费观看| 亚洲熟女乱色| 一区二区首页| 久久av色| 91天射| 国产乱人妻精品入口| 国产少妇高潮| 91伊人久久在线| 后入式视频国产自| julia ann久久| 午夜操操操| 97超级久久| 青娱乐91| 婷婷婷婷婷婷久久久久| 人人操 欧美| 国产日韩无码一区二区三区久久区| 亚洲天堂精品日韩电影| www.99色| 亚洲国产成人福利在线观看| 精品区国产区一区二区三区| 欧美视频在线视频免费va| 五月婷丁香| 国产农村妇女一区二区| 久久偷拍人| 99re在线视频国产| 午夜视频久久久| 日本久久超碰| 性色av大全| 思思热在线cao| 免费一级欧美片片线观看| 99性爱| 91殴美大片| 精品中文一区二区| 久九九九九九九九热| 懂色aV一区二区天美传媒| 欧洲亚洲国产综合在线| 户外裸露刺激视频第一区| www.99视频| 91在线美女| 久久综合久色欧美综合狠狠 | 97精品在线视频| 免费成人在线观看91| 日本高清_区二区三区| 丁香六月婷婷综合| 丰满搜索结果 -第18页- 久久高清无码| 大香蕉之青青草原| 久久啊啊| 十八禁成人网站在线观看| 伊人AAA| 99色婷婷中文字幕乱色| 欧美激情精品| 国内毛片婷婷六月色| 青青草日韩无码| 亚洲自拍欧美色综合| 国产综合久久久麻桃个| 国产精品婬乱一级毛片彝族| 玖玖97综合 | 草草草视频在线免费看| 久久久久久AⅤ无码免费肉站| 亚洲日韩肥臀视频在线观看| 91亚.色| 先锋影音av先锋一区| 久草视频分类在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 香蕉免费一区二区三区不读| 男人天堂网站| 日韩av乱伦| 色娱乐色呦呦夜夜夜夜av| 97超碰超碰| 美女自卫慰黄网站免费| 色哟哟av网址| 日韩在线一区高清在线| 国产视频一区二区在线观看| 另类欧美色| 一区二区三区精品久久| 日韩精品国模| 欧美不卡二区| 日本天天干天天搞一区| 日韩成人在线性爱视频| 97二区四区| 少妇久久久久久久久| 亚洲1区| 超碰在线综合97| 亚洲欧美在线观看免费| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 日本不卡在线二区三区| 99热在线观看| 精品二区久久| 亚洲AV永久无码一区仙野| 97超碰中文| 99在线无码精品秘 入口黑人| 97超碰色屌| 日韩一级久久毛片| 96精品久久久久中文字幕| 丁香色狠狠色综合久久小说| 国产蜜臀精品一区免费尤物| 婷婷综合伊人一区| 东京太热久久久| 99久久无码| 日韩/97| 欧美性爱18观看| 男生女生啊啊啊啊| 性色生活片久久毛片婬片免费放女人一级毛片 | 色97欧美| 麻豆精品久久久久久久| 午夜性刺激视频免费观看| 欧美大码在线视频| 国产亚洲深夜激情| 欧美在线55555| 中日韩久久久| 97ai亚洲| 欧美AB在线观看| 国产AAAAAABBBBB| 福利天堂| 激情看片网站| 伊人热综合| www.高清无码诱惑一区.com | 中文字幕免费在线观看 | 97在线视频观看| 最新亚洲风情电影| 夜嗨影院| 天堂综合网| 四虎免费看黄| 国模少妇一区二区三区| 69精品| 97精品国产手机| 亚洲中文字幕三级在线| 日韩啊V| 日韩精品系列| 天美国产三级传媒| 日本高清_区二区三区 | 91 丝袜在线| 黄色视频特级毛片| av影片在线观看不卡| 久久夜精品一区二区三区| 91久操| a一区二区三区乱码在线| 精品一区二区2| 婷婷五月天久久精品视频一区二区三区| 51一区二区三区| 亚洲天天操| 黄色一区三区| 日日日啊啊啊| 九九在线精品| 秋霞无码av鲁丝片一区| 国产精品人妻免费精品| 午夜九九| 98精品国产乱码久久久久久| 一区二区你上我| 91精品无码人妻系列| 国产免费黄色一级大片| 蜜桃久久一区| 欧美激色| 久久久性爱视频| www.97在线| 99热婷婷| 激情久久av一区av二区av| 日韩精品一区二区高清| 久操精品| 超碰97 线线 在现| 亚洲成人帖图| 日韩国产九九精品一区二区三区毛片| 97超碰天天爱天天爱| 日韩有码一区三区| 91丨九色丨大屁股| 久久精品色欧美aⅴ一区二区| 日韩三A大片在线观看| 视频国产欧美在线播放| 亚洲天堂2020| se..亚洲欧美| 精品国产乱码久久久A| 欧美九一精品久久久熟妇| 精品久久大胆人体| 久久国产对白激情浪潮| 人妻天天爽夜夜爽精品2| 一本一道人妻久久一区二区三区 | 天天看综合网| 五月香婷婷| 日本人妻伦在线中文字幕| 亚洲天天综合| 诱惑网综合| 国产精品视屏| 试看60秒 爽| 国产AV中文| 久久久久久综合久久伊人蜜月| 91免费看中出视频| 中国和日本人色哪个不下载能放| 色777999综合| 亚洲欧洲激情| 乱色老一区二区三区的观看方式 | 一类无码操逼视频| 亚洲精品免费中文字幕| 欧美综合91| 亚洲综合20p| 蜜区区视频79| 欧成人在线| 日本 情色 1区2区3区| 97伦乱| 天天舔天天日天天射| 亚州男人的天堂| 超碰97网址| 1区2区3区中文字幕日韩| 操九九九九九九| 亚洲熟女乱色| 97九色人妻| 校园春色欧美色图| 九九99精品视频在线观看| 97av在线视频| 久久黄色网址| 尻女朋友一夜| 96免费视频在线| 91在线色| 亚洲影视高清第一页| 青操影院| 夜夜夜爽www精品视频| 亚洲风情综合网| 春色91| 日日摸天天爽夜夜欢| 操逼网站网站| 青青青国产手线观看视频2| 日韩黄片视频试看| 911av网站免费观看| 亚洲精品国产精品乱码不99| 婷婷五月成人| 无码粉嫩白虎一线天b区| 人妻少妇精品久久久久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 蜜臀av一区二区三区免费观看| 五月婷婷六月丁香| 中文字幕 码 自拍 视频 区| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 东北女人性交| 亚洲另类春色| 中国东北熟女老太婆内谢| 六月婷婷综合| 欧美综合 站| 家庭乱伦麻豆| 亚乱色| 精品.99999| 欧美第二页午夜| 91精品人妻偷情| 91c色| 日韩97视频!在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97欧美色资源| 久久精品电影在线| 国产极品99热在线播放69| 欧美久热| 亚洲天堂久| 久久精品国产精品一区 | 欧亚第一综合网| 久久线上视频免费看| 亚洲欧美另类激情小说| 免费视频a级毛片免费视频| 五月天伊人| 嗯嗯啊啊好爽| 99自拍视频| 国产精品午夜福利视频| 男女日B国产| 六月丁香啪啪| 中文字幕精品专区搜索结果91| a级免费在线观看| 99热这里只有精品9| 天天澡天天爽日日av| 久草精品国产99| 日本国产高清色www视频在线| 99爱久久视频频| 大逼色网站| 99ri在线视频| 色偷偷超碰亚洲| 清清草影| a亚洲欧美色欲| 亚洲精品一区中文字幕乱码| 天天综合网亚洲综合网| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 黄页视频网站野外| 婷婷成人五月天| 极品一区二区三区免费| 欧美亚洲日本视频久久久 | 以及麻豆国产入口在线观看免费| 婷婷六月色| 九t超碰| 一级性爱aaaa| 欧美综合中文| 在线观看日韩av不卡| 国产熟女高潮一区二区三区| 熟女字幕| 风月影院男女十八禁| 一,爱啪啪,在线免费视频| 91爰爱欧美| 日韩精品黄片免费观看| 亚洲精品97中文字幕| 自拍偷拍 日韩无码| 婷婷精品久久av影视| 天天视频综合在线观看视频| 丰满欧美放荡少妇在线| 十八禁啪啦拍视频无遮挡| 蜜臀99久久国产| 99这里有精品视频| 九九九热| 欧洲小说色图视频另类| 免费一级黄色录像影片| 啊啊啊在线看| 精品久久99| 91欧洲国产成人久久精品网站| 四虎影库国产精品免费| 99在线免费公开视频| 日韩二区三四区五区六区在线看| 国产亚洲精品美女久久久m| 欧美狠狠狠| 色欧美天天| 91深夜夜| 国产60区。| 亚洲操逼视频网站| 亚洲无线观看久久| 天天夜夜久久| 第一高清av中文字幕| 欧美姓爱综合网| 91久久18禁| 99久久久| 91在线视频国产网站| 日本中文字幕一区| 亚洲AV无码成人精品久久| 91日韩| 日韩午夜国产| 免费观看有码高清视频| 岛国福利在线精品播放| 超碰到97情色| 91丝袜美腿网站| 99re公开精品免费视频| 久久久久久9| 91少妇通奸网站| 日日干日日| 午夜啪啪片| 鸥美中出| 亚洲AV人人澡人人爱| 97精彩视频网站| yellow网站免费观看日韩高清无码| 78操B| WWW.加勒比人妻一区不卡.com| 激情婷婷丁香| 日韩中文字墓| 亚洲无码一区成人免费午夜 | 91人精品妻入口| 欧美色九九| 国产精品色哟哟| 欧美熟女少妇| 国产精品分类在线观看| 欧美翘臀视频网站一区二区三区 | 欧美日韩精品一区二区三区高清| 欧美日韩中文视频播放| 91精产一区二区三区| 国产夜夜操| 97久久精品亚洲| 国产高清MV操逼视频| 牛牛操视频逼| 欧美色图校园春色| 超碰精品人妻狠狠干| 欧美78| 毛片视频白嫩| 中文字幕一区二区三区视频播放| 两女互慰AV高潮喷水在线观看| 国产精品播放| 四虎影视欧美| 中文有码9| 日韩精彩视频| 国产精品午夜福利视频| 色五月天AV| 欧美老妇综合网| 日韩紧密久久| 亚洲 图片 综合91| 猛交交| 亚洲精品啪视频| 欧美aaaaaaa| 2019天天干天天操| 精品久久久av无码免费| 秋霞怕怕片| 91处女在线观看| 日本在线伊人啪啪| 人妻熟女一区二区在线视频| 亚洲人人夜夜澡人人爽| 青青草中日韩在线| 女人天堂网| 91国内外在线| 啊啊啊啊,啊啊好多水| 色偷综合| 91综合天天看| 春色91| 好涩综合| 白丝av| 色天使AV天堂| sewuyueav| 久九色| 婷婷综合伊人一区| 乱伦熟妇一区二区| 国产精品一区av在线| 色欲三区| 操比国产| 免费视频a级毛片免费视频| 91碰碰| 精品妇女一区二区三区| 99国产精品人妻人伦| 久久久穴999| 亚洲偷拍欧美激情| 日本精品九九九| 91美女片在线| 久久国产乱子伦精品免费女,网站| 黑人娇小av在线播放| 久久久久久久久久久免费精品| 亚洲高清无毛一区二区| 日本一区二区成人在线| 夜色AV无码手机在线影院| 免费av大片| 97中文天堂| 日韩精品高清资源在线 | 2024人人操人人摸| 99色在线视频| 密臀AV在线| 97视频播放| 天天日天天干天天操| 久久五月天婷婷丁香中文字幕| 黄aaaaaaaaaaaaaaaaaa色网站| 婷婷大香蕉| 亚洲欧洲久久天堂| KK色在线影院| 国产精品无码成人精品| 大伊香蕉在线视频免费| av一区二区三区 中文| 91性片| 日本福利二区视频| 91精品又粗又猛又爽| 一本色道久久综合精品婷婷| 97超碰欧美手机在线| 97综合| 久久香蕉影院| 伊人久久综合精品欧美| 乱码熟妇人妻久久久| 国产一级舔足在线观看| 肥佬影院91| 国产精品白丝在线播放 | 91一区二区| 精品999日本| 色色香蕉| 搡老女人老91妇女老熟女| 超碰97久| 国产1024在线播放| 俺去俺来也在线www| 啊啊啊啊嗯嗯嗯用力好爽| 啊啊啊不要嗯嗯在线观看| 久久只有精品| 国产强奸超碰AV| 日韩99神马视频片| 国产精品9999| 草草网站影院白丝内射| 厕所偷拍在线| 97国产精品一区| 日韩美女啪啪一区| 国产不卡精品91| 精品人妻15区| 午夜视频久久久久一区| 亚洲综合97中文网| 老女人碰碰在线碰碰视频| 色香av| 国内三级自拍小视频在线观看| 99精品久久| 国产97在线播放| 国产AV毛片| 亚洲色欲一区二区三区| 超碰免费人妻在线| 久久香蕉国产传媒一区剧情天美| 97欧美日韩中文| 久久无码一区二区二三区性色| 天美麻豆精品视频99| 另类老少妇| 欧美成人黄网色网站| 亚洲欧美91√| 十八禁av无码免费网站APP| 成人网欧美风情| 99婷婷一区二区| 国产少妇肉丝在线观看| 亚洲欧洲综合| 91在线色综合| 一卡二卡三卡| 婷婷亚洲综合| 色九九久九九| 国产欧美亚洲精品a第2页| 五月天亚洲网| 日本午夜久久电影| 色九九综合AV| 精品在线观看视频在线| 国产黑白丝在线| 国产不卡免费在线视频| 啊啊啊啊啊啊啊啊啊在线观看| 亚洲国产麻豆一区二区三区| 今日头条成人一区二区三区四虎精品| 欧美精品成人一区二区在线观看| 成视频在线观看免费看| com 首页 18岁 禁区 女优 免费 精选 同城| 色综合V| 韩日精品福利视频一区不卡在线免 | 超碰97人人乐| 色婷婷六月| 婷婷丁香人妻| 少妇蜜汁| 亚洲国产一区二区入口| 伊人玖玖网| 亚洲AV无码国产精品久久久久| 97网站在线观看 | 天堂亚洲精品| www九九热| 激情五月天中文字幕色| 欧美72网页| 日韩免费在线观看不卡| 亚洲综合图色在线| 干婷婷综合网| 美女诱惑一区| 欧美熟妇视频| 99re公开精品免费视频| 欧美九九九| 又黑又大又粗| 天天艹天天日| 97国产|免费| 视频在线观看一二三区| 麻花传媒免费网站在线观看| 久99在线免费观看视频| 91视频国品一二三区| 91精品微拍福利| 久操免费电影| 激情自拍 校园春色| 亚洲天堂久久久久久粉红视频| 校园春色宗合网| 日韩国语字幕| 国产精品成人久久一区二区三区| 老熟妇一区二区三区| 少妇蜜汁| 最新中文字幕精品在线| 神马久久午夜| 亚洲文学偷乱拍啪啪啪啪| 色成人Www精品永久观看| 97欧美综合| 伊人久久亚洲色欲综合网站 | 外国免费性情大片| 国产中文福利| 丁香五月社区| 日韩综合成人免费视频| 夜夜爽夜夜操| 在线五区| 丁香五月性爱| 日韩色欲久久一二三四区| 97精品视频| 曰本道人妻久久久在线不卡色视频| 91 亚洲 欧洲| 妺妺跟我一起洗澡没忍住| 日本操逼视频不卡直接放| 九九九国产精品| 青娱乐手机日韩在线视频| 97亚洲一区| 亚洲成人无码影院| 黄骗免费网站| 91蜜臀人妻中文字幕在线| 天堂涩涩| 蜜臀av中字字幕网站| 五月婷婷激情综合| www色日本| 人人妻人人玩人人澡人人爽| 熟妇女伦乱视频视频| 欧美熟女丝袜| 黄呦呦在线| 韩国一区二区精品亚洲| 日本久久精品| 亚洲熟女av日韩熟女| 国产日韩久久| 国产精品一区二区密臀| 啊啊啊轻点在线观看| 亚洲日韩欧美一区二区| 7月婷婷综合| 91女在线观看| 亚洲日韩肥臀视频在线观看| 久草国产在线视频| 最好看的中文字幕在线2018| 日韩中文字幕视频| 强奸乱伦AV一天堂网| 超碰在线1234区| 国产97亚洲| 91痴汉| 人妻色情天天操| 超碰偷拍| 亚洲污污网站| 国产成人精品午夜福利| 精品无码人妻一区二区免费蜜桃| 综合天天网| 一区二区三区日韩欧美| 国产性刺激| 中文字幕88av在线| 99热这里只有精| 殴美,日韩国产伦精品| 色综合美国| 91 国产丝袜在线放观看| 98一区二区精品| 青青草自拍视频在线播放| 91在线视频免费中出| 在线97在线| 免费9 1久久| 素人无码中文字幕| 亚欧洲一区二区视频|