小程序從前端到后端到演示的技術(shù)總結(jié)

算是拖了很久的一篇總結(jié),明天就要回學(xué)校了伺帘,想了想還是不要把有些東西拖到開(kāi)學(xué)后所以就動(dòng)起手來(lái)躲叼。
前半段算是對(duì)假期對(duì)前半年的一個(gè)小的總結(jié)蔬捷,如果你只關(guān)注小程序的相關(guān)內(nèi)容的話可以直接跳過(guò)這里厉亏。2018的對(duì)我來(lái)說(shuō)最重要的可能就是考研了董习,畢竟像我們這樣的雙非普通超級(jí)普通學(xué)校的學(xué)生不努力是沒(méi)有辦法,所以整個(gè)假期基本都在看高數(shù)啊爱只,英語(yǔ)之類的皿淋,感覺(jué)進(jìn)步很小也不像做出一個(gè)demo那樣有成就感,不管怎么樣還是希望自己堅(jiān)持吧恬试。


言歸正傳窝趣,因?yàn)槟昵皡⒓恿艘粋€(gè)小程序的小型比賽,進(jìn)行了諸多嘗試训柴,就想總結(jié)一波哑舒,其中若有問(wèn)題歡迎大家跟我來(lái)討論。
可能我的理解還很淺薄幻馁,我在進(jìn)行小程序的編程中洗鸵,感覺(jué)他跟開(kāi)發(fā)網(wǎng)頁(yè)有很多的共同點(diǎn),基本上也是運(yùn)用著前后端分離的辦法仗嗦,前端主要依賴于微信的開(kāi)發(fā)者工具膘滨,主要是可以進(jìn)行預(yù)覽的功能,具體的編碼我還是使用了我最喜歡的webstorm(當(dāng)然可以使用:subline/vscode)裝一些相應(yīng)的插件就可以進(jìn)行編碼儒将,這里我把我使用的webstorm的插件提供給大家(來(lái)源:github)感謝源作者的貢獻(xiàn)吏祸,蠻好用的雖然format樣式或者js的時(shí)候會(huì)出錯(cuò)不過(guò)問(wèn)題不大。
感覺(jué)還是啰嗦了蠻久钩蚊,想了一下怎么樣來(lái)總結(jié)贡翘,先寫一下我用到的一些技術(shù),其次補(bǔ)充一些知識(shí)要點(diǎn)吧(emmmm此刻還記得的)


前端部分

  • 微信小程序的api接口
  • 樣式有用到一些weiui
    說(shuō)實(shí)話我不知道在這部分能說(shuō)些什么砰逻,因?yàn)檎娴墓俜降奈臋n內(nèi)給了最完整最全面的內(nèi)容鸣驱,我就簡(jiǎn)單說(shuō)一些可能不仔細(xì)看文檔會(huì)遇到的問(wèn)題吧

后端部分

  • nodejs
  • mongodb
  • java
    使用java做后臺(tái)主要是應(yīng)付學(xué)校作業(yè)的一個(gè)嘗試,順便也在這里總結(jié)下吧蝠咆,因?yàn)榘l(fā)現(xiàn)很多人不太會(huì)有java作為小程序的后臺(tái)踊东?

部署部分

  • natapp

一些技術(shù)要點(diǎn)

1. 獲取用戶相關(guān)信息及維護(hù)session狀態(tài)

這個(gè)是我一開(kāi)始理解的一個(gè)難點(diǎn),所以在這里就跟大家多說(shuō)幾句刚操,可能很多人都認(rèn)為微信小程序是沒(méi)有必要維持session狀態(tài)的闸翅,就像我們?yōu)g覽器登錄之后會(huì)維護(hù)的一個(gè)會(huì)話狀態(tài),這個(gè)理解首先就是錯(cuò)誤的菊霜,試想:一個(gè)沒(méi)有登錄的用戶就可以隨意訪問(wèn)你后臺(tái)的api這是多么恐怖的一件事情坚冀。微信官方當(dāng)然也想到了這么一點(diǎn)所以提供非常完善的一套方案(詳見(jiàn)騰訊云小程序的解決方案)當(dāng)然窮苦的學(xué)生黨沒(méi)有使用那個(gè),是自己維護(hù)的這個(gè)狀態(tài)鉴逞,具體內(nèi)容如下:
####wx.login(OBJECT)

調(diào)用接口獲取登錄憑證(code)進(jìn)而換取用戶登錄態(tài)信息记某,包括用戶的唯一標(biāo)識(shí)(openid) 及本次登錄的 會(huì)話密鑰(session_key)等司训。用戶數(shù)據(jù)的加解密通訊需要依賴會(huì)話密鑰完成。
注:調(diào)用 login 會(huì)引起登錄態(tài)的刷新液南,之前的 sessionKey 可能會(huì)失效壳猜。

可能很多人都知道這個(gè),但是都沒(méi)有g(shù)et到核心就像一開(kāi)始的我也是一團(tuán)污水滑凉,https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html 其實(shí)官方文檔寫的非常的清楚统扳,按照我的理解梳理一遍:前端調(diào)用登錄接口,并且向后端發(fā)送code畅姊,后端接收到后再向微信小程序的服務(wù)端發(fā)起請(qǐng)求闪幽,獲取用戶的唯一標(biāo)識(shí)(openid) 及本次登錄的會(huì)話密鑰(session_key)這個(gè)就是我對(duì)官方登錄時(shí)序圖一個(gè)最通俗的最不嚴(yán)謹(jǐn)?shù)睦斫饬税蓗

當(dāng)然我們?nèi)绻苯影?code>session_key進(jìn)行傳遞是非常不理智的,官方也有相應(yīng)的要求涡匀,如下圖

image.png

跟官方略有不同,我采用的是jsonwebtoken溉知,根據(jù)openid在后臺(tái)生成一段校驗(yàn)碼傳回前端來(lái)維持登錄狀態(tài)陨瘩,每個(gè)子功能頁(yè)面加載的時(shí)候都對(duì)我的jwt驗(yàn)證碼進(jìn)行校驗(yàn),銷毀的時(shí)間設(shè)置成跟session_key一樣级乍,自己的jwtSecret隨意設(shè)置一下即可~

感覺(jué)我已經(jīng)說(shuō)清楚了舌劳,附上一些代碼供給大家參考吧。


前端代碼.png

后端代碼1.png

后端代碼2.png

ps:有時(shí)候會(huì)發(fā)生驗(yàn)證失敗的問(wèn)題玫荣,這很費(fèi)解甚淡,希望有嘗試過(guò)的朋友能一起交流一下

2. nodejs一些新get的插件吧

這里只寫了這次完成小程序新get的一些插件,一些常用必備的什么express捅厂,fs贯卦,moment,path我就不多說(shuō)了焙贷,雖然我后臺(tái)還是使用的express框架撵割,但是在學(xué)習(xí)途中順便了解了一下koa,官方實(shí)例用的是這個(gè)也很便捷辙芍,有機(jī)會(huì)可以用用這個(gè)

  • nodemon
    修改后臺(tái)代碼后可以自己?jiǎn)?dòng)
  • jsonwebtokon 生成驗(yàn)證碼的工具啡彬,之前說(shuō)過(guò)不重復(fù)了
  • mongoose
    第一次使用mongodb作為數(shù)據(jù)庫(kù)學(xué)習(xí)的,感覺(jué)還不錯(cuò)
  • axios
    發(fā)請(qǐng)求的工具

在windows下發(fā)請(qǐng)求傳遞中文時(shí)會(huì)出現(xiàn)編碼問(wèn)題故硅,挺坑的糾結(jié)了很久一直以為是自己代碼寫的有問(wèn)題庶灿,在ubuntu下就不會(huì)有這樣的問(wèn)題,解決的方式是let sign=encodeURI(req.query.sign);//轉(zhuǎn)成URL編碼即可 如果也遇到了這個(gè)問(wèn)題可以嘗試一下~

3.使用mongodb踩下的坑

說(shuō)起這個(gè)內(nèi)容感覺(jué)又是一段辛酸淚……在windows下使用這些的我就有些作死吃衅,不管是nodejs還是mongodb感覺(jué)還是跟mac或者ubuntu更搭配往踢,可是為什么微信開(kāi)發(fā)者工具沒(méi)有ubuntu版呢,qaq窮苦人民買不起mac捐晶,如果你不使用windows就沒(méi)必要看這個(gè)咯

  • window 安裝MongoDB 出現(xiàn)的exception:connect failed 異常的問(wèn)題
    說(shuō)實(shí)話這個(gè)解答在網(wǎng)上有很多很多菲语,當(dāng)然大部分是坑就是了Orz妄辩,我這里可以成功使用的方法http://blog.csdn.net/rudy24/article/details/78300907,必須碼咨缴稀眼耀!

  • 使用的圖形化界面NoSQLBooster for MongoDB方便好用值得擁有

  • mongoose使用
    第一次使用mongodb怎么說(shuō)還是滿坑的,不管是從一開(kāi)始表的設(shè)計(jì)佩憾,還是后來(lái)在文檔內(nèi)進(jìn)行查詢哮伟,都是在給自己設(shè)坑,簡(jiǎn)單記錄一下吧妄帘。

Mongose中楞黄,有三個(gè)比較重要的概念,分別是Schema抡驼、Model鬼廓、Entity。它們的關(guān)系是:Schema生成Model致盟,Model創(chuàng)造Document碎税,Model和Document都可對(duì)數(shù)據(jù)庫(kù)操作造成影響,但Model比Document更具操作性
Schema用于定義數(shù)據(jù)庫(kù)的結(jié)構(gòu)馏锡。類似創(chuàng)建表時(shí)的數(shù)據(jù)定義(不僅僅可以定義文檔的結(jié)構(gòu)和屬性雷蹂,還可以定義文檔的實(shí)例方法、靜態(tài)模型方法杯道、復(fù)合索引等)匪煌,每個(gè)Schema會(huì)映射到mongodb中的一個(gè)collection,Schema不具備操作數(shù)據(jù)庫(kù)的能力
Model是由Schema編譯而成的構(gòu)造器党巾,具有抽象屬性和行為萎庭,可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改。Model的每一個(gè)實(shí)例(instance)就是一個(gè)文檔document
Document是由Model創(chuàng)建的實(shí)體齿拂,它的操作也會(huì)影響數(shù)據(jù)庫(kù)

怎么說(shuō)以上也都是我搬來(lái)的擎椰,具體操作的來(lái)理解的話,就是在nodejs中創(chuàng)建model创肥,然后直接調(diào)用model進(jìn)行查詢非常便捷达舒,看網(wǎng)上的一些教程大家都有說(shuō)有點(diǎn)把nosql的數(shù)據(jù)庫(kù)轉(zhuǎn)化為關(guān)系型數(shù)據(jù)庫(kù)處理的味道

demo1.png

查詢操作.png

4.最后說(shuō)一下部署使用的natapp(內(nèi)網(wǎng)穿透)

非常的便捷和操作簡(jiǎn)單---->比起一些云來(lái)說(shuō)吧,畢竟微信小程序要求必須要https協(xié)議且有域名下才能發(fā)送request請(qǐng)求叹侄,這對(duì)真機(jī)調(diào)試或者演示都十分不方便巩搏,有了natapp就很快的解決這個(gè)問(wèn)題了具體操作大家看看官網(wǎng)的1分鐘教程,我就不多說(shuō)了~鏈接


差不多就這樣了趾代,之后想起來(lái)什么再補(bǔ)充吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贯底,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禽捆,老刑警劉巖笙什,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異胚想,居然都是意外死亡琐凭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門浊服,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)统屈,“玉大人,你說(shuō)我怎么就攤上這事牙躺〕钽荆” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵孽拷,是天一觀的道長(zhǎng)吨掌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脓恕,這世上最難降的妖魔是什么析砸? 我笑而不...
    開(kāi)封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任躯泰,我火速辦了婚禮灿意,結(jié)果婚禮上腔呜,老公的妹妹穿的比我還像新娘棉磨。我一直安慰自己江掩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布乘瓤。 她就那樣靜靜地躺著环形,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衙傀。 梳的紋絲不亂的頭發(fā)上抬吟,一...
    開(kāi)封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音统抬,去河邊找鬼火本。 笑死,一個(gè)胖子當(dāng)著我的面吹牛聪建,可吹牛的內(nèi)容都是我干的钙畔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼金麸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擎析!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起挥下,我...
    開(kāi)封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤揍魂,失蹤者是張志新(化名)和其女友劉穎桨醋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體现斋,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喜最,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了步责。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片返顺。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔓肯,靈堂內(nèi)的尸體忽然破棺而出遂鹊,到底是詐尸還是另有隱情,我是刑警寧澤蔗包,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布秉扑,位于F島的核電站,受9級(jí)特大地震影響调限,放射性物質(zhì)發(fā)生泄漏舟陆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一耻矮、第九天 我趴在偏房一處隱蔽的房頂上張望秦躯。 院中可真熱鬧,春花似錦裆装、人聲如沸踱承。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茎活。三九已至,卻和暖如春琢唾,著一層夾襖步出監(jiān)牢的瞬間载荔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工采桃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懒熙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓普办,卻偏偏與公主長(zhǎng)得像煌珊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泌豆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理定庵,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停蔬浙,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,184評(píng)論 22 257
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評(píng)論 6 342
  • 前幾天我加入了學(xué)校的輪滑社團(tuán)猪落,未曾請(qǐng)示爸媽就自己在淘寶上買了一雙輪滑鞋,昨天和爸媽打電話畴博,爸爸說(shuō)擔(dān)心你這么大...
    會(huì)飛di豬豬閱讀 218評(píng)論 0 0
  • 我曾經(jīng)因?yàn)橐蛔菒?ài)上了一個(gè)人笨忌,又因?yàn)橐粋€(gè)人放棄了一座城,人和城我都沒(méi)有再見(jiàn)到俱病,后來(lái)我大病一場(chǎng)官疲,忘記了那個(gè)人和那座城...
    深巷梨花閱讀 307評(píng)論 0 0