<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 首頁

          酷炫的 FUI 圖形設(shè)計

          前端達(dá)人

          作者通過以進(jìn)度條的設(shè)計深入淺出的講解關(guān)于FUI的設(shè)計思路。雖然FUI設(shè)計看起來很復(fù)雜,只要找準(zhǔn)規(guī)律,從一些作品中總結(jié)分析細(xì)節(jié),再運(yùn)用到我們的設(shè)計中。想要了解的小伙伴可以嘗試一下。

          前言

          看到上期小伙伴想了解一下 FUI 的設(shè)計教程,所以這次再次和大家聊一下關(guān)于 FUI 的設(shè)計風(fēng)格,我們以“進(jìn)度條”的設(shè)計教程為例,深入淺出的聊一下關(guān)于 FUI 的設(shè)計思路,因?yàn)橹饕O(shè)計思路的延展,所以不會出現(xiàn)具體的數(shù)據(jù)參數(shù),小伙伴們要諒解啊。

          目錄

          1.風(fēng)格介紹

          2.設(shè)計思路

          3.總結(jié)

          1.風(fēng)格介紹

          關(guān)于 FUI 的定義,閱讀過我上一篇文章的小伙伴可能對 FUI 的定義有了一個較為清晰的定義,即 FUI 是:虛構(gòu)的、未來的、幻想的用戶界面。

          1.png



          我們仔細(xì)閱讀關(guān)鍵詞:“虛構(gòu)的、未來的、幻想的。”從對 FUI 關(guān)鍵詞上我們進(jìn)行粗略的分析可以得出這么一條簡單的結(jié)論:FUI 的設(shè)計不依據(jù)現(xiàn)實(shí)為基礎(chǔ)的界面設(shè)計,為設(shè)計師留有巨大的想象空間。所以朋友們,請把腦洞開大一點(diǎn)吧,不受到當(dāng)前的技術(shù)和硬件載體的制約,F(xiàn)UI 本身就是一種創(chuàng)新發(fā)明。

          2.png




          接下來我會向大家簡單介紹一下 FUI 主要的兩大設(shè)計風(fēng)格:軍事風(fēng)格和機(jī)甲風(fēng)格(也可以叫做機(jī)械風(fēng)格)。 


          1.軍事風(fēng)格

          軍事風(fēng)格的特點(diǎn)在于:“直接明了”。因?yàn)樵跉埧岬膽?zhàn)爭中時間就是生命,士兵必須保證“快速、準(zhǔn)確、直接”才能保證戰(zhàn)斗的勝利,所以會盡量避免與操作業(yè)務(wù)無關(guān)的。你也可以理解為當(dāng)下最前沿的的設(shè)計理念“l(fā)ess is more。”例如下圖,在界面設(shè)計中幾乎都是利用簡單的幾何設(shè)計語言完成。

          3.png




          軍事風(fēng)格成為 FUI 的主流設(shè)計形式有著必然的原因。首先簡單的從我們熟知的影視作品中來講,在諸多科幻動作為主的故事題材的影視作品中,正義的一方都有軍隊(duì)的支持,其中不可避免的會出現(xiàn)的許多設(shè)備的界面;再則隨著科技的發(fā)展,許多高科技都會用運(yùn)用到軍事設(shè)備的研發(fā)上,精密的結(jié)構(gòu)線和反復(fù)數(shù)據(jù)讓我們覺得其中的科技含量很高。


          4.png




          2.機(jī)甲風(fēng)格

          機(jī)甲風(fēng)格相對于軍事風(fēng)格的最大特點(diǎn)就是:“具有一定的裝飾圖形元素,或多或少。”機(jī)甲風(fēng)格最大的特點(diǎn)便是具有機(jī)械或者機(jī)甲風(fēng)格的裝飾元素,其中多為異形元素。其靈感來源于工業(yè)設(shè)計,從機(jī)械和機(jī)甲的工業(yè)設(shè)計語言中提取圖形元素,在運(yùn)用到界面設(shè)計上。如下圖,異形的機(jī)甲風(fēng)格讓機(jī)器人的頭部設(shè)計顯得更加統(tǒng)一,如果換成當(dāng)前流行的扁平化設(shè)計,可能就顯得有點(diǎn)奇怪了。

          5.png

          機(jī)甲風(fēng)格的發(fā)展歸功于科幻題材故事的發(fā)展,為人們打開腦洞,暢想更多的可能性。在設(shè)計上激發(fā)了 FUI 的誕生,無論是賽博朋克、廢土題材、還是漫威、DC宇宙中的科幻影視作品中我們都能看到機(jī)甲風(fēng)格的界面設(shè)計。

          6.png



          2.設(shè)計思路

          設(shè)計樣式 – 軍事風(fēng)格

          我們從以上的設(shè)計風(fēng)格中抓去我們需要的關(guān)鍵詞進(jìn)行示例設(shè)計,首先我們看軍事風(fēng)格的關(guān)鍵詞是“直接明了、快速、準(zhǔn)確、直接,”我們轉(zhuǎn)換成我們平時的設(shè)計語言就是:“極簡風(fēng)格,”這樣是不是更好理解了。例如圖例中,頁面整體十分統(tǒng)計,利用簡潔幾何語言進(jìn)行設(shè)計。

          7.png




          接下來我們做一個簡單的軍事風(fēng)格的進(jìn)度條:第一步,找參考!!!這一步很重要,很多同學(xué)都很容易就忽視這一點(diǎn),一心一意的閉門造車,絕不借鑒學(xué)習(xí)其它優(yōu)秀作品。這里向大家推薦 HUDS + GUIS 設(shè)計公司,這里有我們許多我們耳熟能詳?shù)挠耙曌髌分械?nbsp;FUI 設(shè)計。

          第二步,臨摹,臨摹可以說是學(xué)習(xí)他人技巧的最快方式,從中我們可以學(xué)習(xí)到許多設(shè)計中的細(xì)節(jié),日后我們可以運(yùn)用到自己的設(shè)計當(dāng)中。我借鑒臨摹了下面的進(jìn)度條樣式。


          8.png



          第三部,修改細(xì)節(jié),舉一反三。臨摹就一定是是抄襲么?當(dāng)然不是!創(chuàng)意設(shè)計,是把再簡單不過的東西或想法不斷延伸給予的另一種表現(xiàn)方式(百度百科),所以我們可以通過對設(shè)計組件內(nèi)部進(jìn)行重新組合或者修改其中的細(xì)節(jié)參數(shù)來達(dá)到自己在設(shè)計的目的。通過總結(jié)分析,我選用了最簡單直白的結(jié)合圖形作為設(shè)計元素進(jìn)行設(shè)計,如下圖:

          9.png


          我們可以放入界面當(dāng)中感受一下視覺效果:

          10.png



          設(shè)計樣式 – 機(jī)甲風(fēng)格

          我們再來進(jìn)階一下,設(shè)計一個機(jī)甲元素的的進(jìn)度條。

          機(jī)甲風(fēng)格看似裝飾圖形復(fù)雜,設(shè)計難度復(fù)雜,但其實(shí)我們只需要掌握好 – “提煉元素”這項(xiàng)技能就能完美應(yīng)對機(jī)甲風(fēng)格的設(shè)計。

          我們再回顧對創(chuàng)意設(shè)計的定義:是把再簡單不過的東西或想法不斷延伸給予的另一種表現(xiàn)方式。這里我們可以理解為將機(jī)甲元素進(jìn)行提煉總結(jié),延伸到彈框設(shè)計當(dāng)中。例如下圖,漂亮的小姐姐一秒鐘變機(jī)械美女,就是通過對機(jī)械元素延展到模特身上。

          11.png12.png13.png

          第一步,照一張你喜歡的不錯的參考,這里你可以找成熟的界面設(shè)計作品,也可以找一張不錯的關(guān)于機(jī)甲風(fēng)格的參考,以便于自己進(jìn)行元素提取。這里我們以大家熟悉的高達(dá)為例:

          14.png



          第二部就是元素組合,我們需要提取了我們可能需要的元素,就像我們設(shè)計時面對自己手機(jī)素材一樣,這個時候我們不要急于立馬去設(shè)計,要仔細(xì)思考其設(shè)計形式,元素的位置安排。我們還是以以高達(dá)為例,途中我圈出了我可能用到的圖形元素。


          15.png



          我們從中提取我們需要的圖形,如下圖:


          16.png

          最后我們我們需要仔細(xì)思考將圖形進(jìn)行組合,多嘗試幾次他們的組合方式。這里我對提取的元素進(jìn)行了二次加工,將圖形一和圖形四進(jìn)行了結(jié)合,打破固有的組合規(guī)律,讓圖形看起來更加生動。

          17.png

          最后我們可以放入界面當(dāng)中感受一下視覺效果:

          18.png



          3.總結(jié)

          FUI 的設(shè)計看起來復(fù)雜,難以下手,但其實(shí)也是有規(guī)律可循,我們可以從作品中理性的去分析其中的設(shè)計細(xì)節(jié),提煉總結(jié),最終再落實(shí)到實(shí)際的設(shè)計作品當(dāng)中。當(dāng)然最好你能先了解一下它的設(shè)計理念以及發(fā)展,就像 FUI 是“虛構(gòu)的、未來的、幻想的界面設(shè)計”一樣。

          ---來自姜正


          轉(zhuǎn)載自簡書

          作者:極創(chuàng)設(shè)計

          鏈接:https://www.jianshu.com/p/77665c771153

          來源:簡書

          著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。



          藍(lán)藍(lán)設(shè)計www.sdgs6788.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計、 網(wǎng)站建設(shè) 平面設(shè)計服務(wù)


          九宮格方式上傳圖片(預(yù)覽并刪除)

          前端達(dá)人

          <view class="gallery">

              <view class="item" wx:for="{{images}}" wx:key="">

                  <image src="{{item}}" data-src="{{item}}" bindtap="previewImage" mode="aspectFill" />



                  <!-- 刪除按鈕 -->

                  <view class="delete" bindtap="delete" data-index="{{index}}">X</view>

              </view>

              <view class="item" bindtap="chooseImage">

                  <view class='addIcon'>+</view>

              </view>

          </view>

          <button type="primary" bindtap="submit">提交</button>

          ————————————————



          /* pages/index/index.wxss */
          /*畫廊*/
          .gallery {    
            width:630rpx;
            margin: 0 auto;
            display: flex;    
            justify-content: flex-start;    
            flex-wrap: wrap;
          }
          /*每張圖片所占容器*/
          .item {    
            position: relative;    
            margin:10rpx 5rpx;
            width: 200rpx;
            height: 200rpx;
          }
          .item image{
            width: 100%;
            height: 100%;
          }
          /*add按鈕*/
          .item .addIcon{
            position:relative;
            width:200rpx;
            height:200rpx;
            text-align:center;
            line-height:200rpx;
            font-size:80rpx;
            background: #f2f2f2;
            color: #555;
          }
          /*刪除按鈕*/
          .delete {    
            position:absolute;
            right:0;
            top:0;
            /* background:#ccc; */
            opacity:1;
            height: 36rpx;
            font-size:22rpx;
            font-weight:700;
            padding:0 8rpx 0 10rpx;
          }
          ————————————————


          var that;
          Page({
            data: {
              images: [],
              uploadedImages: [],
              //imageWidth: getApp().screenWidth / 4 - 10
            },
            onLoad: function (options) {
              that = this; var objectId = options.objectId; console.log(objectId);
            },
            chooseImage: function () {
              // 選擇圖片
              wx.chooseImage({
                count: 3, // 默認(rèn)9
                sizeType: ['compressed'],
                sourceType: ['album', 'camera'],
                // 可以指定來源是相冊還是相機(jī),默認(rèn)二者都有
                success: function (res) {
                  // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
                  var tempFilePaths = res.tempFilePaths;
                  console.log(tempFilePaths);
                  that.setData({
                    images: that.data.images.concat(tempFilePaths)
                  });
                }
              })
            },
            // 圖片預(yù)覽
            previewImage: function (e) {
              //console.log(this.data.images);
              var current = e.target.dataset.src
              wx.previewImage({
                current: current,
                urls: this.data.images
              })
            },
            // submit: function () {        
            //   // 提交圖片,事先遍歷圖集數(shù)組
            //   that.data.images.forEach(function (tempFilePath) {
            //     new AV.File('file-name', {
            //       blob: {
            //         uri: tempFilePath,
            //       },
            //     }).save().then(                
            //       // file => console.log(file.url())
            //     function (file) {                    
            //       // 先讀取
            //       var uploadedImages = that.data.uploadedImages;
            //       uploadedImages.push(file.url());                    
            //       // 再寫入
            //       that.setData({
            //         uploadedImages: uploadedImages
            //       }); console.log(uploadedImages);
            //     }
            //     ).catch(console.error);
            //   });
            //   wx.showToast({
            //     title: '評價成功', success: function () {
            //       wx.navigateBack();
            //     }
            //   });
            // }, 
            delete: function (e) {
              var index = e.currentTarget.dataset.index; var images = that.data.images;
              images.splice(index, 1);
              that.setData({
                images: images
              });
            }
          })
          ————————————————


          微信小程序轉(zhuǎn)發(fā)/分享功能 小卡片設(shè)置

          前端達(dá)人

          <button data-name="shareBtn" open-type="share" plain="true">轉(zhuǎn)發(fā)</button>

          添加plain=”true”后button的邊框樣式可自定義 ↓ ↓


          button[plain]{ border:0


           //轉(zhuǎn)發(fā)
            onShareAppMessage: function (options) {
                var that = this;
                // 設(shè)置菜單中的轉(zhuǎn)發(fā)按鈕觸發(fā)轉(zhuǎn)發(fā)事件時的轉(zhuǎn)發(fā)內(nèi)容
                var shareObj = {
                    title: "這是一個標(biāo)題!",        // 默認(rèn)是小程序的名稱(可以寫slogan等)
                    //path: '/page/index/index/user?id=123',        // 默認(rèn)是當(dāng)前頁面,必須是以‘/’開頭的完整路徑
                    imageUrl: '../../img/xiaochengxu-share.jpg',     //自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑,支持PNG及JPG,不傳入 imageUrl 則使用默認(rèn)截圖。顯示圖片長寬比是 5:4
                    success: function (res) {
                        // 轉(zhuǎn)發(fā)成功之后的回調(diào)
                        if (res.errMsg == 'shareAppMessage:ok') {
                        }
                    },
                    fail: function (res) {
                        // 轉(zhuǎn)發(fā)失敗之后的回調(diào)
                        if (res.errMsg == 'shareAppMessage:fail cancel') {
                            // 用戶取消轉(zhuǎn)發(fā)
                                 console.log("用戶取消轉(zhuǎn)發(fā)");
                        } else if (res.errMsg == 'shareAppMessage:fail') {
                            // 轉(zhuǎn)發(fā)失敗,其中 detail message 為詳細(xì)失敗信息
                        }
                    },
                      complete: function(){
                        // 轉(zhuǎn)發(fā)結(jié)束之后的回調(diào)(轉(zhuǎn)發(fā)成不成功都會執(zhí)行)
                    },
              };
              // 來自頁面內(nèi)的按鈕的轉(zhuǎn)發(fā)
              if(options.from == 'button') {
                  var eData = options.target.dataset;
                  console.log(eData.name);     // shareBtn
                  // 此處可以修改 shareObj 中的內(nèi)容
                  //shareObj.path = '/pages/btnname/btnname?btn_name=' + eData.name;
              }
          // 返回shareObj
          return shareObj;
          ————————————————



          微信小程序輪播功能

          前端達(dá)人

          <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" circular="{{duration}}" current="{{swiperCurrent}}" bindchange="swiperChange" class="swiper">

            <block wx:for="{{imgUrls}}" wx:key="unique">

              <swiper-item>

                <image src="{{item}}" class="img" bindtap="swipclick" />

              </swiper-item>

            </block>

          </swiper>

          ————————————————


          /* swiper {
              height: 421.5rpx;
          } */
          swiper-item image {
              width: 100%;
              height: 100%;
          }
          .swiper-container{
            width: 100%;
            position: relative;
          }
          .swiper-container .swiper{
            height: 300rpx;
          }
          .swiper-container .swiper .img{
            width: 100%;
            height: 100%;
          }
          ————————————————


          const app = getApp()
          Page({
            data: {
              swiperCurrent: 0,
              indicatorDots: true,
              autoplay: true,
              interval: 3000,//自動切換時間間隔
              duration: 800,//滑動動畫時長
              circular: true,//是否采用銜接滑動
              imgUrls: [
                '../../img/index/1.jpeg',
                '../../img/index/2.jpeg',
                '../../img/index/3.jpeg'
              ]
            },
            //輪播圖的切換事件
            swiperChange: function (e) {
              this.setData({
                swiperCurrent: e.detail.current
              })
              //console.log(e.detail.current);
            },
            //點(diǎn)擊指示點(diǎn)切換
            chuangEvent: function (e) {
              this.setData({
                swiperCurrent: e.currentTarget.id
              })
            },
            //點(diǎn)擊圖片觸發(fā)事件
            swipclick: function (e) {
              console.log(this.data.swiperCurrent);
              wx.switchTab({
                url: this.data.links[this.data.swiperCurrent]
              })
            },
          })
          ————————————————



          真機(jī)預(yù)覽本地頁面方式-簡單快捷(精簡大法Node)

          前端達(dá)人

          前提:真機(jī)和PC端在同一個局域網(wǎng)內(nèi)。

          1、安裝nodejs環(huán)境 (node -v 查看版本號)



          2、在所在的項(xiàng)目下輸入命令:npm install anywhere -g



          3、直接輸入命令:anywhere,這里瀏覽器自動打開所有項(xiàng)目的根目錄,點(diǎn)擊就可以看到,同一網(wǎng)段下,然后手機(jī)直接預(yù)覽這個地址就可以

          ————————————————


          小程序單張圖片 和 九宮格圖片上傳、預(yù)覽、刪除示例

          前端達(dá)人

          <view class="gallery">

            <view class='tipTitle'>

              快去上傳自己的照片吧

            </view>

            <view class='item-ot'>

              <view class="item">

                <!-- 添加按鈕 -->

                <view class="addIcon" bindtap="chooseImage" wx:if="{{imgBoolean}}">

                    <view class=''>+</view>

                </view>

                <!-- 上傳的圖 -->

                <view class='itemImg' >

                  <image src="{{item}}" data-src="{{item}}" bindtap="previewImage"  mode="aspectFill" />

                  <!-- 刪除按鈕 -->

                  <view class="delete" bindtap="deleteImg" data-index="{{index}}">X</view>

                </view>

                <view class='boxStyle'></view>

              </view>

              <view class='itemTxt'>正面照</view>

            </view>

            <view class='uploadFinish'>

              <a class="uploadFinishBtn" href="javasctipt:;"  bindtap="submit">提  交</a>

            </view> 

          </view>


          /*畫廊*/
          .gallery {    
            width:100%;
            margin: 0 auto;
            display: flex;    
            justify-content: flex-start;    
            flex-wrap: wrap;
            background: #fffaf0;
          }
          /*每張圖片所占容器*/
          .item-ot{
            margin:0 auto;
            width: 100%;
            height: 100%;
          }
          .item {    
            position:relative;
            margin:0 auto;
            width:370rpx;
            height:490rpx;
            background:#eee;
            border:2rpx solid #f9c4c2;
            /* overflow:hidden; */
          }
          .itemImg{
            position: absolute;
            left: 0;
            top:0; 
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index:1;
          }
          .itemImg image{
            width: 100%;
            height: 100%;
          }
          /*add按鈕*/
           .addIcon{
             position:absolute;
            left: 0;
            top: 0; 
            width: 100%;
            height: 100%;
            text-align:center;
            line-height:490rpx;
            font-size:80rpx;
            background: #fff;
            color: #999;
            z-index:2;
          }
          /*刪除按鈕*/
          .delete {    
            position:absolute;
            right:0;
            top:0;
            /* background:#ccc; */
            opacity:1;
            height: 36rpx;
            font-size:22rpx;
            font-weight:700;
            padding:0 8rpx 0 10rpx;
            color: #999;
          }
          .itemTxt{
            text-align: center;
            font-size: 30rpx;
            color: #999;
            margin-top: 50rpx;
            margin-bottom:  70rpx;
            font-weight: 700;
          }
          .uploadFinish{
            width: 100%;
            height: 100%;
            padding: 0 30rpx;
            box-sizing: border-box;
          }
          .uploadFinishBtn{
            background: #ff6666;
            color: #fff;
            display: block;
            width: 100%;
            padding: 26rpx 0;
            text-align: center;
            font-size: 36rpx;
            border-radius: 10rpx;
            margin-bottom: 40rpx;
          }
          .tipTitle{
            text-align: center;
            font-size: 30rpx;
            color: #f6a29d;
            font-weight: 700;
            width: 100%;
            margin: 50rpx 0;
          }
          .boxStyle{
            width:300rpx;
            height:100rpx;
            position:absolute;
            bottom:-1rpx;
            border-radius:50%;
            box-shadow:0rpx 10rpx 100rpx #fddbd9;
            margin-left:35rpx;
          }


          Page({
            data: {
              uploadedImages: [],
              imgBoolean: true,
            },
            onLoad: function (options) {
              var that = this;
            },
            chooseImage: function () {
              var that = this;
              // 選擇圖片
              wx.chooseImage({
                count: 1, // 默認(rèn)9
                sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
                sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機(jī),默認(rèn)二者都有
                success: function (res) {
                  // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
                  var tempFilePaths = res.tempFilePaths
                  that.setData({
                    item: tempFilePaths[0],
                    imgBoolean: false
                  });
                }
              })
            },
            // 圖片預(yù)覽
            previewImage: function (e) {
              var current = e.target.dataset.src
              wx.previewImage({
                current: current,
                urls: [current]
              })
              console.log("這是1" + current);
            },
            //刪除圖片
            deleteImg: function (e) {
              var that = this;
              var images = that.data.uploadedImages;
              that.setData({
                uploadedImages: images,
                imgBoolean: true
              });
            },
            // submit: function () {        

            // }, 
          })


          charts柱狀圖的X軸Y軸加單位的寫法

          前端達(dá)人

        •         {
        •             type : 'value',
        •             axisLabel:{formatter:'{value} %'}
        •         }
        •     ],

        • 如果想控制百分比最大到100% 可添加


        • yAxis : [
           
                  {
                      type : 'value',
                      max:100,//Y軸最大值 不寫的話自動調(diào)節(jié)
                      axisLabel:{formatter:'{value} %'}
                  }
           
              ],
          > max:100,//Y軸最大值 不寫的話自動

        • table點(diǎn)擊實(shí)現(xiàn)可編輯文本

          前端達(dá)人

          table點(diǎn)擊實(shí)現(xiàn)可編輯文

          一個簡單的例子,直接添加contentEditable=”true”標(biāo)簽屬性即可

          <table>
              <tr>
                  <td>姓名:</td>
                  <td contentEditable="true"></td>
              </tr>
              <tr>
                  <td>密碼:</td>
                  <td contentEditable="true"></td>
              </tr>
          </table>

          VeeValidator

          前端達(dá)人

          VeeValidator

          語言設(shè)置

          校驗(yàn)消息默認(rèn)是英文的,定義中文或其他語言的錯誤提示消息

          
          
          1. import VeeValidate from 'vee-validate';
          2. import Vue from 'vue'
          3. Vue.use(VeeValidate)
          4. var dict = {
          5. zh_CN: {
          6. messages: {
          7. required: function(field){
          8. return field + '不能為空!';
          9. },
          10. between: function(field){
          11. return field + '輸入不符合設(shè)定規(guī)則!';
          12. },
          13. min : function (field,leng) {
          14. return field + '長度不能小于'+leng+'位';
          15. }
          16. }
          17. }
          18. };
          19. VeeValidate.Validator.localize('zh_CN', dict.zh_CN);

          校驗(yàn)的時候需要設(shè)置語言

          this.$validator.localize('zh_CN');

          錯誤消息顯示

          顯示指定字段的第一個錯誤

          this.$validator.first('fieldname')

          顯示所有字段的第一個錯誤消息

          this.$validator.errors.all()

          Mock.js

          配置

          路由攔截配置不需要修改之前的代碼,匹配的url請求會直接通過mock而不是請求服務(wù)器

          
          
          1. const handler = req => {
          2. return {mock數(shù)據(jù)};
          3. }
          4. Mock.mock('url攔截規(guī)則,正則表達(dá)式',handler)

          配置延遲時間

          模擬服務(wù)器請求的異步特性

          
          
          1. Mock.setup({
          2. timeout:1000
          3. })

          Vuex

          模塊化

          多人協(xié)作,或者中大型的項(xiàng)目需要把store分為模塊

          
          
          1. const a = {
          2. state : {foo:1},
          3. mutations : {hello(state)=> {}},
          4. modules : {
          5. ...嵌套
          6. }
          7. }
          8. const b = {}
          9. const store = {
          10. state : {},
          11. mutations : {},
          12. actions : {},
          13. modules : {
          14. module_name_a:a,
          15. module_name_b:b
          16. }
          17. }

          在調(diào)用的時候,state 有命名空間的,而mutation和actions都與父模塊共用同樣的命名空間所以不能定義與父模塊同名的mutation 或 action

          獲取模塊的state

           this.$store.state.module_name_a.foo

          調(diào)用模塊的mutation

          this.$store.commit('hello')

          namespace

          定義了namespace ,mutations 和 action 會帶上模塊的命名: module_name/muation

          
          
          1. const store = {
          2. modules : {
          3. namespace : true,
          4. a: {
          5. muations : {
          6. test(state) => {...}
          7. }
          8. }
          9. }
          10. }

          這時候調(diào)模塊內(nèi)的mutation

          this.$store.commit('a/test')

          vuejs-datepicker

          日期選擇控件

          設(shè)置默認(rèn)值

           <datepicker v-model="mydate" </datepicker> 

          日期格式化

          <datepicker :format="'yyyy-MM-dd'"> </datepicker> 

          語言選擇(默認(rèn)是英文)

          導(dǎo)入語言資源文件,然后再設(shè)置:language

          設(shè)置成中文

          
          

          日歷

          鏈接

          個人資料

          藍(lán)藍(lán)設(shè)計的小編 http://www.sdgs6788.com

          存檔

          麻豆一区二区99久久久久| 国产成人无码精品久久久久免费| 99久久久精品| 四虎久久影院| 韩国免费A级毛片久久| 久久伊人五月天论坛| 国内精品久久久久影院日本| 色综合久久中文字幕综合网| 狠狠干狠狠久久| 亚洲伊人久久大香线蕉综合图片| 精品久久久久久无码国产| 亚洲第一极品精品无码久久| 色8激情欧美成人久久综合电| 中文精品久久久久国产网址 | 亚洲精品无码久久久久久| 国产亚洲精午夜久久久久久| 久久亚洲精品国产精品| 国产69精品久久久久观看软件| yellow中文字幕久久网| 国产精品久久永久免费| 日韩精品久久无码人妻中文字幕 | 亚洲综合精品香蕉久久网| 日本高清无卡码一区二区久久| 久久久精品免费国产四虎| 精品无码久久久久久尤物| 亚洲av伊人久久综合密臀性色| 欧美黑人激情性久久| 色青青草原桃花久久综合| 亚洲国产成人精品女人久久久| 国产精品久久久99| 久久线看观看精品香蕉国产| 国产成人久久精品激情| 久久无码人妻一区二区三区| 伊人久久综合精品无码AV专区| 中文字幕久久亚洲一区| 久久无码AV一区二区三区| 无码任你躁久久久久久老妇App| 超级97碰碰碰碰久久久久最新| 久久亚洲AV成人无码| 亚洲AV无码久久寂寞少妇| 欧美一区二区三区久久综|