uni項(xiàng)目實(shí)踐

寫在有道筆記上贾漏,uni項(xiàng)目實(shí)踐,轉(zhuǎn)過來格式不太好看藕筋,先做此記錄吧纵散。

  1. 看了uniapp多端開發(fā),感覺不錯,還有模板商城伍掀,直接拿過來用
  2. 用過vue就看一下不支持的部分
  3. 用upx掰茶,750upx為全屏寬度;如同小程序的rpx
  4. 電商模板 更新下單流程硕盹、分類符匾、列表
clipboard.png
  1. npm i -g @vue/cli@latest

  2. 沒有webpack的那些配置文件,那如果要修改怎么改瘩例,應(yīng)該是hbuilderx內(nèi)置了

  3. 沒有設(shè)置router的文件額

  4. 看了下url是pages/component/text/text

  5. 應(yīng)該是直接對應(yīng)的文件夾目錄與文件名啊胶;那后面就會有蛋疼的

  6. 就像是原來的xx.html 文件url

  7. components 下的顯示不出來,components和pages的垛贤。vue文件沒有啥區(qū)別

  8. 哦哦哦 原來是用page.json來注冊的

  9. 每個可顯示的頁面焰坪,都必須在 pages.json 中注冊。如果你開發(fā)過小程序聘惦,那么pages.json類似app.json某饰。如果你熟悉vue,這里沒有vue的路由善绎,都是在pages.json里管理黔漂。

  10. 但是貌似也不能修改router額

  11. 2019年5月6日15:56:38 總結(jié)

  12. 通過代碼中的 if else 來區(qū)分不同端的代碼,如果一開始只有web的代碼的話禀酱,那就沒啥負(fù)擔(dān)炬守,以后要改造為小程序的時候也比較方便;就是代碼就比較臃腫混亂了

  13. 寫法基本和vue差不多剂跟,但是很多標(biāo)簽和跳轉(zhuǎn)方法是和小程序差不多的减途,如果沒有寫過小程序的話上手還是會有障礙

  14. 不知道能不能自定義路由;暫時未找到

  15. 以及webpack等配置文件集成到了編輯器中曹洽,修改的話和之前的方式不同

  16. 想著cli版本的應(yīng)該會差不多鳍置,但由于下載cli3.0折騰了十分鐘沒下成功,就先擱置了

  17. 再怕的一點(diǎn)就是 出了問題不好找答案送淆;不過想想之前的wepy用的人更少税产,還不是這樣寫出來了

  18. 再就是以后的維護(hù)了,新的人來接手的話偷崩,如果沒用過uni辟拷;那就要會vue和小程序

  19. 新的項(xiàng)目是否值得一試呢?這個項(xiàng)目比較小环凿、比較簡單可以一試

  20. 看到能直接用的模板梧兼,想到vue的項(xiàng)目的話也可以找找這些模板吧放吩,都不用設(shè)計(jì)頁面了

  21. 云打包后返回的鏈接下載不了智听,說是啥key不存在

  22. Dcloud,hbuilderX開發(fā)uni-app第一天踩坑記錄

  23. 可能有些人以為js等于瀏覽器里的js。其實(shí)js是ECMAScript組織管理的,瀏覽器中的js是w3c組織基于js規(guī)范補(bǔ)充了window到推、document考赛、navigator、location等專用對象莉测。

  24. 選擇器有2個變化:*選擇器不支持颜骤;元素選擇器里沒有body,改為了page捣卤。微信小程序即是如此忍抽。

  25. 基于下載的那個商城的模板做的測試;生成的h5代碼放到服務(wù)器可以訪問(pom.js不寫vue或者gulp就是直接把文件丟過去)http://192.168.119.120:9720/#/董朝,在本機(jī)的web服務(wù)器不能鸠项,我想是因?yàn)槟J(rèn)的那些css、js路徑是從根目錄開始的
    [圖片上傳中...(clipboard (1).png-fafa6c-1560844459769-0)]

  26. publicPath String 引用資源的地址前綴子姜,僅發(fā)布時生效祟绊。參考:publicPath

  27. https://uniapp.dcloud.io/collocation/manifest?id=h5

  28. 果然加了這個本機(jī)也能運(yùn)行了

manifest.json "h5":{ "publicPath":"./" }

  1. 但是代碼中引入的圖片居然都是/static的;現(xiàn)在是改為../../static了哥捕,可是生成后的代碼層級關(guān)系不一樣了呀牧抽,難怪用那個遥赚;不知道能不能用@符號
  2. 回憶一下vue的做法扬舒,圖片都在assets里打包的時候做處理然后放到static里
  • 下面一步就是要試試之前vue上的插件,方不方便用過來
  • 又到了糾結(jié)的時候鸽捻,用還是不用
  1. 也就是 一個請求的封裝呼巴、store的管理
  2. 用的好處有學(xué)習(xí)的新的技術(shù),小程序的開發(fā)御蒲,以及之后可能的多端衣赶,ios和android;由于要考慮多端厚满,而不得不面對不熟的小程序等問題府瞄,這將是導(dǎo)致煩躁的一大問題,再就是如果現(xiàn)在先不管小程序碘箍,但是如果以后要轉(zhuǎn)的話也是蛋疼遵馆,不過肯定不重新開發(fā)小程序要輕松,如果是以小程序開發(fā)為主的話丰榴,那肯定要用這個货邓;但是現(xiàn)在是以h5開發(fā)為主,小程序只是計(jì)劃想要四濒,現(xiàn)在所增加的負(fù)擔(dān)就感覺沒必要换况;
  3. 代價就是职辨,不同的寫法等學(xué)習(xí)成本,原來代碼不能復(fù)用戈二,以后有沒有人維護(hù)
  4. 不要想著一下子就做的很規(guī)范完美舒裤,先用這個項(xiàng)目練練手,能做出來再說
  5. 這種小眾的技術(shù)就是怕無法和其他的項(xiàng)目一起維護(hù)觉吭,但是vue對于之前的jq項(xiàng)目也是一樣的呀腾供;、這個的技術(shù)棧就是vue和小程序鲜滩,以后也肯定是找會小程序的人維護(hù)伴鳖;
  6. 以后的項(xiàng)目是否都用uni來開發(fā),如果只有一個的話徙硅,不怕黎侈,之前的wepy也是只有一個啊
  • uni-app 內(nèi)置了常用的樣式變量,采用 scss 預(yù)處理方式闷游,文件名為 uni.scss峻汉,在代碼中無需 import 這個文件即可使用這些樣式變量。
  • pages.json格式化之后脐往,在ios微信上頂部搜索欄的背景色就恢復(fù)不了半透明狀態(tài)了休吠;后發(fā)現(xiàn)原來的代碼也有這個問題,當(dāng)滑動很多然后滾回頂部的時候就不會到半透明业簿;這個是pages.json>app-plus>titleNView>"type": "transparent",設(shè)置的
  • onReachBottom 這個方法是頁面自帶的瘤礁,參考這里
  • dcloud的搜索做的還不錯梅尤,很多問題直接在這搜就行
  • 用的熟練后應(yīng)該會比較順手柜思,現(xiàn)在是切換的陣痛期吧
  • 雖然不推薦使用HTML標(biāo)簽,但實(shí)際上如果開發(fā)者寫了div等標(biāo)簽巷燥,也會被編譯器轉(zhuǎn)換為view標(biāo)簽赡盘,類似的還是有span轉(zhuǎn)text、a轉(zhuǎn)navigator等缰揪。
  • vue文件里的style沒有scoped 但是生成的css上帶有了組件特有的標(biāo)識陨享,應(yīng)該是默認(rèn)支持了
  • uni-app的H5版使用注意事項(xiàng)

具體技術(shù)細(xì)節(jié)備忘

  1. 點(diǎn)擊態(tài)用 hover-class="common-hover";原來就是點(diǎn)擊的時候添加的這個類名钝腺,樣式是在app.vue下面的定義的抛姑;默認(rèn)類名是button-hover
  2. 狀態(tài)欄40px 標(biāo)題欄88px 一共128px;但我頁面不用管默認(rèn)的狀態(tài)欄

onPageScroll(e){ //兼容iOS端下拉時頂部漂移 if(e.scrollTop>=0){ this.headerPosition = "fixed"; }else{ this.headerPosition = "absolute"; } }, //下拉刷新 onPullDownRefresh(){ this.loadData('refresh'); }, //加載更多 onReachBottom(){ this.loadData(); },

  1. 很多變量名可以借鑒

  2. seckill-section 秒殺專區(qū)

  3. VScroll 記得是加overflow: hidden; 不是auto艳狐;以及再套一層div;better-scroll 在小程序里無效定硝,可以直接用原生的滾動,不會有沖突

  4. 盡量使用 scroll-view來滾動吧毫目,兼容下小程序的樣式蔬啡,但是它會加很多層div唁毒,所以高度就不要寫在 scroll-view標(biāo)簽上了,就寫到內(nèi)部的元素上

  5. better-scroll 需要 添加listenScroll或者 :listenScroll="true" @scroll="xx'來接受 :probeType="3" 要選這個星爪,在它自己彈性滾動的時候也會觸發(fā)

  6. 組件里使用 slot 嵌套的其他組件時不支持 v-for

  7. 我擦 導(dǎo)致在小程序上 分類頁面不能滾動

  8. 首頁現(xiàn)在沒有v-for;不不我看了還是有的啊粉私,為啥可以顽腾,哦 因?yàn)槭醉撝挥幸粋€滾動區(qū)域,有時候也會有問題

  9. 反正 分類頁面就先用if來判斷小程序诺核,單獨(dú)的代碼吧抄肖,就不混在vscroll上了

  10. 小程序首頁的dom沒有被scroll-view包裹

  11. 小程序的組件并沒有把組件標(biāo)簽去掉,這會導(dǎo)致很多類名樣式上的問題

  12. this.$emit('update:tabCur', index);子組件還可以這樣更新父組件變量啊

  13. better-scroll swiper 滾動觸發(fā)點(diǎn)擊

  14. swipe組件滑動時會觸發(fā)item內(nèi)的點(diǎn)擊事件

  15. 組件里面不能用 onload窖杀;用created mounted

  16. 跳轉(zhuǎn)

uni.navigateTo({ url: /pages/product/product?id=${id} })

  1. 自從H5設(shè)置了devServer的proxy漓摩,就在一直練websocket,不明原因入客,并沒有使用websocket
clipboard (1).png
  1. uni-app能用什么UI框架管毙?http插件 axios?

  2. 如何加百度統(tǒng)計(jì)呢;這個沒有router桌硫,不能監(jiān)聽路由的變化啊

  3. 他自帶的登錄https://dev.dcloud.net.cn 可查看 uni-app 在微信小程序夭咬、原生App不同平臺的統(tǒng)計(jì)數(shù)據(jù),比如新增用戶铆隘、日活用戶卓舵、留存等。

  4. 沒有h5啊

  5. 在 H5 平臺組件特有的 class 屬性生效的辦法 input的沒試膀钠,但是我自己組件想沒有scoped 的效果 >>> 不行啊掏湾,是寫法問題?

.input >>> .custom-placeholder-class { color: #FF3333; }

  1. 刷新頁面會 頁面全部出棧肿嘲,只留下新的頁面融击,就沒有歷史記錄返回了,只能返回首頁

  2. 用了 onPageScroll 后有時會報(bào)錯[system] Not Found:Page雳窟;應(yīng)該也是和刷新頁面有關(guān)系砚嘴,

  3. 刷新有onPageScroll 的當(dāng)前頁,然后點(diǎn)擊某個按鈕跳轉(zhuǎn)下個頁面涩拙,還是會觸發(fā)一次际长,如果是從上一個頁面進(jìn)來然后再點(diǎn)擊就不會;蛋疼兴泥;為了兼容可能的小程序就還是用onPageScroll 這個方法來監(jiān)聽頁面滾動吧工育,就不用window的方法了

  4. // 返回不會執(zhí)行onHide,前進(jìn)不會執(zhí)行onUnload搓彻、destroyed

  5. 觸底事件就用onReachBottom

  6. betterScroll與swiper如绸,滾動的沖突嘱朽;誤觸發(fā)點(diǎn)擊事件,換了swiper-vue版本的怔接,解決了小的banner圖滑動觸發(fā)點(diǎn)擊的問題搪泳,但是新的問題是大的頁面的滑動也會觸發(fā);

  7. swiper 第二頁開始扼脐,滑動結(jié)束會觸發(fā)點(diǎn)擊事件導(dǎo)致跳商品詳情了

  8. 和是什么頁面沒有關(guān)系岸军,用同樣的頁面還是會第二個開始有問題

  9. 后來想用一個頁面fixed到最頂層,然后再swiper的各種事件的時候控制其顯示和隱藏來控制頁面能否點(diǎn)擊瓦侮,但是在

  10. 解決方案:通過provide / inject艰赞,將首頁的isSwiper變量傳到VGoods商品組件,為true時候不讓其跳轉(zhuǎn)肚吏,

swiper的設(shè)置 on: { // 在切換開始的時候設(shè)置為true slideChangeTransitionStart: () => { this.isSwiper = true }, // 動畫結(jié)束的設(shè)為false方妖,在頁面沒滾動過去,回彈回來也會觸發(fā)罚攀,條件寬一點(diǎn)党觅,讓其更多少能設(shè)為false transitionEnd: () => { setTimeout(() => { this.isSwiper = false }, 100) } }

  1. 可以跳轉(zhuǎn)其他ip的所有頁面

// 由于uni對location.href限制,故做如下處理 href(url) { /* * 同源tabBar頁面未刷新的跳轉(zhuǎn)是己;由于未刷新后面的reload還是會執(zhí)行;處理后刷新跳轉(zhuǎn)又兵,且加了一個歷史記錄,需要返回兩下卒废; * 同源非tabBar頁面不跳轉(zhuǎn)沛厨;處理后刷新跳轉(zhuǎn) * 非同源所有頁面正常刷新跳轉(zhuǎn) * * 最好還是要刷新跳轉(zhuǎn),防止store里的登錄信息沒有更新到頁面 * 理論上應(yīng)該都是同源的鏈接 * */ // 由于uni對與同源的非tabbar的鏈接不跳轉(zhuǎn)摔认,故通過pushState設(shè)置后再reload location.href = url; // 新URL必須與當(dāng)前URL同源逆皮,否則 pushState() 會拋出一個異常。 history.pushState({}, "", url); location.reload() }

  • 應(yīng)該是自帶的 loading 與網(wǎng)絡(luò)不給力参袱,點(diǎn)擊屏幕重試电谣;我就是說那個頂部的loading是哪來的,應(yīng)該是和網(wǎng)絡(luò)請求有關(guān)

<div class="uni-async-error"> 網(wǎng)絡(luò)不給力抹蚀,點(diǎn)擊屏幕重試 </div>

  1. 組件內(nèi)(頁面除外)不支持onLoad生命周期剿牺。
  2. 單頁應(yīng)用跟蹤 ,要開啟环壤,只支持history模式; uni改為了history模式晒来,測試服務(wù)器用node做的容器,我就加上了 connect-history-api-fallback,就好了

<script src="https://unpkg.com/alloylever"></script> <script> try { //vconsole 手機(jī)上模擬的控制臺 AlloyLever.config({ cdn: 'https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js', entry: ".header-title,.tit,.uni-page-head,.vconsole" //點(diǎn)擊這個DOM元素6次 彈出控制臺 }) } catch (e) { console.log(e) } </script>

  1. 設(shè)置頁面title郑现,頁面關(guān)閉不會觸發(fā)onHide湃崩,返回按鈕的時候沒有觸發(fā)onHide荧降,觸發(fā)了onUnload,不寫onUnload的時候攒读,返回title也會變回去朵诫,但是再點(diǎn)進(jìn)新手攻略,onShow觸發(fā)了薄扁,但是title沒有變剪返,不知為啥,反正加上onUnload就好了

onShow(){ document.title="新手攻略" }, onHide(){ document.title="淘多多" }, onUnload(){ document.title="淘多多" },

  1. uni-app 為 iOS(iPhoneX)底部安全區(qū)適配

  2. "safearea": { //安全區(qū)域配置泌辫,僅iOS平臺生效 我丟

  3. 不管什么屏幕寬度,底部tabbar高度固定為50px九默,頂部page-head固定為44px震放;所以這里不要用upx

  4. CSS內(nèi)使用vh單位的時候注意100vh包含導(dǎo)航欄,使用時需要減去導(dǎo)航欄和tabBar高度驼修,部分瀏覽器還包含瀏覽器操作欄高度殿遂,使用時請注意。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乙各,一起剝皮案震驚了整個濱河市墨礁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耳峦,老刑警劉巖恩静,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹲坷,居然都是意外死亡驶乾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門循签,熙熙樓的掌柜王于貴愁眉苦臉地迎上來级乐,“玉大人,你說我怎么就攤上這事县匠》缈疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵乞旦,是天一觀的道長贼穆。 經(jīng)常有香客問我,道長兰粉,這世上最難降的妖魔是什么扮惦? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮亲桦,結(jié)果婚禮上崖蜜,老公的妹妹穿的比我還像新娘浊仆。我一直安慰自己,他們只是感情好豫领,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布抡柿。 她就那樣靜靜地躺著,像睡著了一般等恐。 火紅的嫁衣襯著肌膚如雪洲劣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天课蔬,我揣著相機(jī)與錄音囱稽,去河邊找鬼。 笑死二跋,一個胖子當(dāng)著我的面吹牛战惊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扎即,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼吞获,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谚鄙?” 一聲冷哼從身側(cè)響起各拷,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闷营,沒想到半個月后烤黍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡傻盟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年蚊荣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莫杈。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡互例,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筝闹,到底是詐尸還是另有隱情媳叨,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布关顷,位于F島的核電站糊秆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏议双。R本人自食惡果不足惜痘番,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汞舱,春花似錦伍纫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泌神,卻和暖如春良漱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欢际。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工母市, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人损趋。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓患久,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舶沿。 傳聞我的和親對象是個殘疾皇子墙杯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359