Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久久久视频精品网,国产97公开成人免费视频,欧美激情精品久久久久久大尺度

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          uni-app: 使用Vue.js需要注意哪些問題?

          擊右上方紅色按鈕關(guān)注“web秀”,讓你真正秀起來

          前言

          uni-app 在發(fā)布到 H5 時(shí),是支持所有 vue 的語法的。但是發(fā)布到App或者小程序時(shí),由于各個(gè)平臺等限制,無法實(shí)現(xiàn)全部 vue 語法,本文將詳細(xì)講解差異。

          相比Web平臺, Vue.js 在 uni-app 中使用差異主要集中在兩個(gè)方面:

          新增:uni-app除了支持Vue實(shí)例的生命周期,還支持應(yīng)用啟動、頁面顯示等生命周期

          受限:相比web平臺,在小程序和App端部分功能受限,具體見下。

          生命周期

          uni-app 在支持完整 Vue 實(shí)例的生命周期上,同時(shí)還新增 應(yīng)用生命周期 及 頁面生命周期。

          應(yīng)用生命周期包括下列函數(shù)

          1、onLaunch當(dāng)uni-app 初始化完成時(shí)觸發(fā)(全局只觸發(fā)一次)

          2、onShow當(dāng) uni-app 啟動,或從后臺進(jìn)入前臺顯示

          3、onHide當(dāng) uni-app 從前臺進(jìn)入后臺

          4、onUniNViewMessage對 nvue 頁面發(fā)送的數(shù)據(jù)進(jìn)行監(jiān)聽

          注意

          (1)、應(yīng)用生命周期僅可在App.vue中監(jiān)聽,在其它頁面監(jiān)聽無效。

          (2)、onlaunch里進(jìn)行頁面跳轉(zhuǎn),可能遇白屏報(bào)錯(cuò),可以去官方查找解決方案。

          頁面生命周期

          注意

          (1)、onTabItemTap常用于點(diǎn)擊當(dāng)前tabitem,滾動或刷新當(dāng)前頁面。如果是點(diǎn)擊不同的tabitem,一定會觸發(fā)頁面切換。

          (2)、如果想在App端實(shí)現(xiàn)點(diǎn)擊某個(gè)tabitem不跳轉(zhuǎn)頁面,不能使用onTabItemTap,可以使用plus.nativeObj.view放一個(gè)區(qū)塊蓋住原先的tabitem,并攔截點(diǎn)擊事件。

          (3)、onTabItemTap在App端,從HBuilderX 1.9 的自定義組件編譯模式開始支持。

          語法支持

          支持的 vue 語法

          1、支持過濾器 filter

          2、支持比較復(fù)雜的 JavaScript 渲染表達(dá)式

          3、支持在 template 內(nèi)使用 methods 中的函數(shù)

          4、支持 v-html (同 rich-text 的解析)

          5、支持 v-slot 新語法

          6、支持解構(gòu)插槽 Prop 設(shè)置默認(rèn)值

          7、支持 slot 后備內(nèi)容

          8、組件支持原生事件綁定,如:@tap.native

          不支持的 vue 語法

          1、class不支持綁定Obejct變量(使用字符串的形式綁定)

          2、不支持事件修飾符:prevent、passive(在App與小程序平臺,使用stop修飾符,既可以阻止冒泡也能阻止默認(rèn)行為)

          3、不支持render、inline-template、X-Templates、keep-alive、transition

          4、不支持使用 Vue.use 的方式注冊全局組件(在main.js使用Vue.component的方式引入)

          列表渲染

          1、在H5平臺 使用 v-for 循環(huán)整數(shù)時(shí)和其他平臺存在差異,如 v-for="(ite`m, index) in 10" 中,在H5平臺 item 從 1 開始,其他平臺 item 從 0 開始,可使用第二個(gè)參數(shù) index 來保持一致。

          2、在非H5平臺 循環(huán)對象時(shí)不支持第三個(gè)參數(shù),如 v-for="(value, name, index) in object" 中,index 參數(shù)是不支持的。

          事件處理

          幾乎全支持 事件處理器

          // 事件映射表,左側(cè)為 WEB 事件,右側(cè)為 ``uni-app`` 對應(yīng)事件
          {
           click: 'tap',
           touchstart: 'touchstart',
           touchmove: 'touchmove',
           touchcancel: 'touchcancel',
           touchend: 'touchend',
           tap: 'tap',
           longtap: 'longtap',
           input: 'input',
           change: 'change',
           submit: 'submit',
           blur: 'blur',
           focus: 'focus',
           reset: 'reset',
           confirm: 'confirm',
           columnchange: 'columnchange',
           linechange: 'linechange',
           error: 'error',
           scrolltoupper: 'scrolltoupper',
           scrolltolower: 'scrolltolower',
           scroll: 'scroll'
          }
          

          注意:

          1、為兼容各端,事件需使用 v-on 或 @ 的方式綁定,請勿使用小程序端的bind 和 catch 進(jìn)行事件綁定。

          2、事件修飾符

          .stop:各平臺均支持, 使用時(shí)會阻止事件冒泡,在非 H5 端同時(shí)也會阻止事件的默認(rèn)行為

          .prevent 僅在 H5 平臺支持

          .self:僅在 H5 平臺支持

          .once:僅在 H5 平臺支持

          .capture:僅在 H5 平臺支持

          .passive:僅在 H5 平臺支持

          3、若需要禁止蒙版下的頁面滾動,可使用 @touchmove.stop.prevent="moveHandle",moveHandle 可以用來處理 touchmove 的事件,也可以是一個(gè)空函數(shù)。

          <view class="mask" @touchmove.stop.prevent="moveHandle"></view>
          

          4、按鍵修飾符:uni-app運(yùn)行在手機(jī)端,沒有鍵盤事件,所以不支持按鍵修飾符。

          命名限制

          在 uni-app 中以下這些作為保留關(guān)鍵字,不可作為組件名。

          a, canvas, cell, content, countdown, datepicker, div, element, embed, header, image, img, indicator, input, link, list, loading-indicator, loading, marquee, meta, refresh, richtext, script, scrollable, scroller, select, slider-neighbor, slider, slot, span, spinner, style, svg, switch, tabbar, tabheader, template, text, textarea, timepicker, trisition-group, trisition, video, view, web

          除以上列表中的名稱外,標(biāo)準(zhǔn)的 HTML 及 SVG 標(biāo)簽名也不能作為組件名。

          其他疑難雜癥

          1、如何獲取上個(gè)頁面?zhèn)鬟f的數(shù)據(jù)

          在 onLoad 里得到,onLoad 的參數(shù)是其他頁面打開當(dāng)前頁面所傳遞的數(shù)據(jù)。

          2、如何捕獲 app 的 onError

          由于 onError 并不是完整意義的生命周期,所以只提供一個(gè)捕獲錯(cuò)誤的方法,在 app 的根組件上添加名為 onError 的回調(diào)函數(shù)即可。如下:

          export default {
           // 只有 app 才會有 onLaunch 的生命周期
           onLaunch () {
           // ...
           },
           // 捕獲 app error
           onError (err) {
           console.log(err)
           }
          }
          

          3、組件屬性設(shè)置不生效解決辦法

          當(dāng)重復(fù)設(shè)置某些屬性為相同的值時(shí),不會同步到view層。 例如:每次將scroll-view組件的scroll-top屬性值設(shè)置為0,只有第一次能順利返回頂部。 這和props的單向數(shù)據(jù)流特性有關(guān),組件內(nèi)部scroll-top的實(shí)際值改動后,其綁定的屬性并不會一同變化。

          解決辦法有兩種(以scroll-view組件為例):

          (1)、監(jiān)聽scroll事件,記錄組件內(nèi)部變化的值,在設(shè)置新值之前先設(shè)置為記錄的當(dāng)前值

          <scroll-view :scroll-top="scrollTop" scroll-y="true" @scroll="scroll">
          <script>
          export default {
           data() {
           return {
           scrollTop: 0,
           old: {
           scrollTop: 0
           }
           }
           },
           methods: {
           scroll: function(e) {
           this.old.scrollTop = e.detail.scrollTop
           },
           goTop: function(e) {
           this.scrollTop = this.old.scrollTop
           this.$nextTick(function() {
           this.scrollTop = 0
           });
           }
           }
          }
          </script>
          

          (2)、監(jiān)聽scroll事件,獲取組件內(nèi)部變化的值,實(shí)時(shí)更新其綁定值

          <scroll-view :scroll-top="scrollTop" scroll-y="true" @scroll="scroll">
          <script>
          export default {
           data() {
           return {
           scrollTop: 0,
           }
           },
           methods: {
           scroll: function(e) {
           this.scrollTop = e.detail.scrollTop
           },
           goTop: function(e) {
           this.scrollTop = 0
           }
           }
          }
          </script>
          

          第二種解決方式在某些組件可能造成抖動,推薦第一種解決方式。

          喜歡小編或者覺得小編文章對你有幫助的,可以點(diǎn)擊一波關(guān)注哦!同時(shí),要源碼的小伙伴可以點(diǎn)擊下方“了解更多”。

          最后推薦一個(gè)專欄文章,感謝小伙伴們多多支持,謝謝大家!

          時(shí)做移動開發(fā)很少接觸css,最近在寫uni-app要用到css所以少不了學(xué)習(xí)這方面的知識。

          今天的筆記也是一些基礎(chǔ)知識,關(guān)于盒子模型當(dāng)中的一些比較不錯(cuò)的屬性,也是常用屬性。

          在 CSS 盒子模型的默認(rèn)定義里,你對一個(gè)元素所設(shè)置的 width 與 height 只會應(yīng)用到這個(gè)元素的內(nèi)容區(qū)。如果這個(gè)元素有任何的 border 或 padding ,繪制到屏幕上時(shí)的盒子寬度和高度會加上設(shè)置的邊框和內(nèi)邊距值。這意味著當(dāng)你調(diào)整一個(gè)元素的寬度和高度時(shí)需要時(shí)刻注意到這個(gè)元素的邊框和內(nèi)邊距。當(dāng)我們實(shí)現(xiàn)響應(yīng)式布局時(shí),這個(gè)特點(diǎn)尤其煩人。

          box-sizing 兩個(gè)取值如下:

          • content-box 是默認(rèn)值。如果你設(shè)置一個(gè)元素的寬為100px,那么這個(gè)元素的內(nèi)容區(qū)會有100px 寬,并且任何邊框和內(nèi)邊距的寬度都會被增加到最后繪制出來的元素寬度中。
          • border-box 告訴瀏覽器:你想要設(shè)置的邊框和內(nèi)邊距的值是包含在width內(nèi)的。也就是說,如果你將一個(gè)元素的width設(shè)為100px,那么這100px會包含它的border和padding,內(nèi)容區(qū)的實(shí)際寬度是width減去(border + padding)的值。大多數(shù)情況下,這使得我們更容易地設(shè)定一個(gè)元素的寬高。
          <html>
             <head>
                <style>
                   .div1 {
                      width: 300px;
                      height: 100px;
                      border: 1px solid blue;
                      box-sizing: border-box;
                   }
                   .div2 {
                      width: 300px;
                      height: 100px;
                      padding: 50px;
                      border: 1px solid red;
                      box-sizing: border-box;
                   }
                </style>
             </head>
          
             <body>
                <div class = "div1">TutorialsPoint.com</div><br />
                <div class = "div2">TutorialsPoint.com</div>
             </body>
          </html>

          上面代碼對呀的效果如下:

          發(fā)環(huán)境

          1、Android Studio下載地址:https://developer.android.google.cn/studio/index.html

          2、HBuilderX(開發(fā)工具,地址https://www.dcloud.io/hbuilderx.html)

          3、App離線SDK下載:最新android平臺SDK下載

          (https://nativesupport.dcloud.net.cn/AppDocs/download/android)

          注意:HBuilderX版本要跟SDK版本一致。


          SDK目錄說明

              |-- HBuilder-Hello                App離線打包演示應(yīng)用
              |-- HBuilder-Integrate-AS         集成uni-app或5+ app的最簡示例
              |-- SDK                           SDK庫文件目錄
              |-- Feature-Android.xls           Android平臺各擴(kuò)展Feature API對應(yīng)的詳細(xì)配置
              |-- readme                        版本說明文件及注意事項(xiàng)
              |-- UniPlugin-Hello-AS            uni原生插件開發(fā)示例


          準(zhǔn)備工程

          1、安裝android Studio并解壓SDK下載包;

          2、運(yùn)行android studio,選擇導(dǎo)入項(xiàng)目HBuilder-Hello;

          3、導(dǎo)入項(xiàng)目后,按提示安裝所需即可;安裝完成后,項(xiàng)目會重新rebuild,等待結(jié)束,運(yùn)行項(xiàng)目到測試機(jī),可以看到傳感器,音頻,二維碼等應(yīng)用示例;

          4、打開 HBuilderX 寫好的項(xiàng)目,點(diǎn)擊 發(fā)行 > 原生app-本地打包 > 生成本地打包資源,打包完成后,HBuilderX 控制臺會輸出打包信息和打包路徑;

          5、打開 android studio 切換項(xiàng)目到project目錄,依次打開 HBuilder-Hello > app > src > main > assets,能看到 apps.HelloH5.www 和 data 兩個(gè)文件夾;

          6、刪除 android studio 的 apps 文件夾內(nèi)容后,將 HBuilderX 剛才打包路徑下的 resources 文件夾內(nèi)容替換;

          7、復(fù)制 www > manifest.json 中的id,替換 data > dcloud_control.xml 中的 appid;

          8、點(diǎn)擊運(yùn)行項(xiàng)目,如果運(yùn)行后測試機(jī)所顯示的內(nèi)容和HBuilderX項(xiàng)目中所展示一致,則表示替換成功;

          補(bǔ)充一些打包過程遇到問題的解決方法:

          1)運(yùn)行APP提示“當(dāng)前運(yùn)行環(huán)境無法運(yùn)行啟用“自定義組件模式”的uni-app引用”,只需要在“app-libs”引入文件“ uniapp-release.aar”(該文件在SDK下載包的路徑“SDK\libs”下)即可解決);

          2)報(bào)錯(cuò)“Entry name 'assets/SDK_Default_Route_Texture_Gray_Arrow.png' collided”,刪除文件“HBuilder-Hello\app\build”下的所有數(shù)據(jù),重新生成就沒問題;

          3)uniApp引入“vconsole.min.js”會導(dǎo)致打包運(yùn)行后,只顯示底部菜單,內(nèi)容區(qū)域顯示空白;

          4)工程增加package.json,并執(zhí)行“npm install”后,打包App運(yùn)行后會導(dǎo)致引用組件的頁面無法跳轉(zhuǎn);

          5)uniapp調(diào)用接口使用了Promise,打包App運(yùn)行后會導(dǎo)致打開調(diào)用接口的頁面一直加載中。


          發(fā)布版本

          1、android studio > build > Generate Signed Bundle / APK,創(chuàng)建新的 jks文件或選擇原有jks,一路下一步,直至完成;

          2、把文件app-debug.apk發(fā)送到手機(jī),安裝并使用。


          主站蜘蛛池模板: 亚洲AV福利天堂一区二区三| 国产在线精品一区二区三区直播| 亚洲色无码专区一区| 日韩人妻无码一区二区三区久久| 欧洲精品无码一区二区三区在线播放| 亚洲视频一区二区| 日韩av无码一区二区三区| 精品在线一区二区| 久久国产一区二区三区| 国产视频福利一区| 麻豆国产一区二区在线观看| 日韩精品一区二区午夜成人版| 3d动漫精品啪啪一区二区中文| 日本亚洲国产一区二区三区| 亚洲性无码一区二区三区| 无码国产精品一区二区免费vr| 日本国产一区二区三区在线观看| 伊人激情AV一区二区三区| 波多野结衣一区在线观看| 秋霞午夜一区二区| 日本亚洲成高清一区二区三区| 一区二区免费国产在线观看| 无码人妻av一区二区三区蜜臀| 久久人妻内射无码一区三区| 中文字幕永久一区二区三区在线观看 | 亚洲国产一区视频| 一区二区在线视频免费观看| 国产亚洲综合精品一区二区三区 | 国产精品一区二区三区99| 国产大秀视频一区二区三区| 日韩精品一区二区三区在线观看l| 国产91久久精品一区二区| 无码av人妻一区二区三区四区| 一区二区无码免费视频网站| 色窝窝免费一区二区三区| 国产福利在线观看一区二区| 日韩精品中文字幕视频一区| 亚洲综合激情五月色一区| 国产成人高清亚洲一区久久| 日韩一区二区三区电影在线观看| 亚洲日本中文字幕一区二区三区|