整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          2018 年,UX 設計有哪些好用的工具?

          2018 年,UX 設計有哪些好用的工具?

          者按:近來似乎涌現了大批優秀的設計軟件,關于“設計系統”的討論也越來越火,毋庸置疑,這個話題對設計師和公司來講至關重要。本文譯自Medium中原作者Chris Bam Harrison(tabcorp設計師)中原標題為"UX Design Tools for 2018 (For Mac AND PC)"的文章。

          我有幸與一個大型團隊的設計師、開發人員和商業人員共事。作為一名設計師,我接手了很多個性化、自由感十足的項目,這些項目在不同的設計工具和系統中有著不同的需求,所以了解什么作品適合什么樣的工具其實至關重要。

          由于我既用PC端也用Mac端,所以這兩個系統中的設計軟件個人大部分都接觸過,選擇性也比較寬泛,在其中發現了一些好的應用也希望能供你參考。本文的推薦都是本人親測好用的,絕不參雜任何商業利益。

          概念構思階段

          作為讀者,我知道你前來翻看這篇文章時抱著對新鮮應用推薦的極大期待,但開篇我還是不得不說,最好的應用就是——紙和筆。雖然這個答案看起來令人失望而草率,但以它們作為整篇文章的引子其實再合適不過。

          紙和筆能很好地保持設計師原生的靈感,并有益于設計師反復修改、磨合自己的作品,而不至于桎梏于一些不必要的細節中浪費時間。世界上沒有毫無缺憾的設計,因此將自己從數碼設計工具中解脫出來很大程度上意味著你不用再被無謂的細節拖沓進度。

          另外,我選擇筆還有一個原因,那就是:不要使用能夠被擦除的工具。當你被某一個部分絆住腳時不要停下來,繼續摸索向前走才能逐漸接近好的預期。這一條建議從前甚至改變了我的作品軌跡,我的筆記本開始保留很多構思時粗糙的線條,雖然混亂不堪,但使我變得更有效率也更富于創造力,也許不知哪一秒就在粗糙的線條中發現了自己的靈感。

          另一貫徹UX理念的概念就是用戶訪問,對此我十分鐘愛Whimsical。Whimsical的流程圖制作功能十分強大,而且視覺上一目了然。雖然每月收費10美元,但絕對物有所值,它一向以操作簡便快捷著稱。

          為了尋找靈感,我常去的兩個網站是Dribbble和Muzli。Dribbble很適合快捷地尋找一些新鮮的,富有創意的點子,尤其是當你尋找簡單的視覺沖擊感時非常好用,而在尋找系統性的產品邏輯線方面可能稍稍遜色。這個網站的方便之處在于你可以在上面粉一些你喜歡的設計師和作品,并和他們進行交流,隨時隨地保持關注動態,當然這也是一個監管非常良好的社區,很少會出現“三俗”創意污染環境。

          Muzli這個網站中最令我中意的就是它的每周精品匯總和UX互動交流會。這個網站會定期更新一些有好點子、非常精彩的文章,令人總能在里面發現點兒新的東西。

          合作共享與版本控制階段

          如果你正在團隊中進行一個項目,想要分享工作中的某些創意,拍成照片通過郵箱分享是一個辦法,但還有一個方法看起來更便捷,那就是——Zeplin(Mac,PC通用)。Zeplin是一個很酷的應用,它的特色非常鮮明。

          首先,分享工作創意和進程它非常拿手,你可以邀請合作伙伴共享視頻、下載私人文件并添加評論對某個設計品進行交流。

          其次,當你進行設計時,該軟件會生成樣式指南,便于設計師擷取十六進制值的顏色和樣式。

          最后Zeplin是一個完全以代碼形式傳播設計樣品的應用。這一點下面會有所提及。

          總之,Zeplin對版權持有者非常有價值,但倘若多個設計師一同合作怎么辦呢?這時每個人都需要版本控制。版本控制是一個日常中不常見的術語,指的是一種軟體工程技巧,籍以在開發過程中確保由不同人所編輯的同一檔案都得到更新,但這個問題Zeplin就很難解決了。

          為此Trunk(Mac端)能很好地解決這一問題。

          對設計師而言,Trunk是實打實的社交編程及代碼托管軟件。你可以在Trunk設置好需要關注的文檔,它會實時觀測它們的變化,當發生更改時,Trunk會記錄其中的變化,同時更改者也可以更新評論做出解釋,讓用戶知道為什么要這么做。

          Trunk的這一屬性對設計師合作團隊來說無疑是福音,因為再也不必擔心其中未知的改動而不知道緣由。設計師甚至可以以回滾的方式將文檔返回到變化前并重新處理其中矛盾的部分,這是其最大的魅力所在。

          注意:Trunk僅與Sketch和PS圖象處理軟件文件兼容。對于Figma用戶來說,Figma實際上內置了一些輕型版本控制功能。

          框架圖及初期設計階段

          在你的創意與團隊分享之后,大家都想見到該內容大體的情況,這時該用什么呢?

          在此我將分享一些基礎的框架圖制作軟件,這里的目的是大致描繪一下一些應用的用途,供讀者快速參考。

          在此又與我們的老朋友Whimsical見面了,它不僅有強大的流程圖制作功能,也有異想天開的框架圖設計功能。事實上,你可能并不需要一個專用的線框應用程序。在這個方向上,傳統的筆和紙會做得很好,像Sketch或Figma這樣的設計工具也能勝任。那么為什么要使用Whimsical呢——總結一句,那就是它干起來真的非???、非常有趣。

          Whimsical有一個內置的低保真度的組件庫:從按鈕、到復選框、到文本輸入框、到滑塊、到標簽條等等,一切都一目了然。所有組件都在智能向導上運行,有點兒像樂高拼圖。抓取幾個基本組件,把它們放在一起,很快就會有一個粗略的整體布局。這對于構建設計師的設計草圖和初期理念是一個非??旖?、保真的辦法。

          同時,Whimsical也支持社群共享活動,在此設計師可以將自己的作品發送給合作伙伴從而得到反饋。

          看到上面兩個圖標你是不是馬上熟悉起來了,沒錯,它們就是大名鼎鼎的Sketch君和Figma君。它們隨處可見,也許大家對它們的應用已經了如指掌了,但這里還是有一個很實用的小建議:制作(或下載)線框工具包。雖然線上的圖片已經很精美了,但總不如自己制作出來的有趣。我們稍后將詳述這兩個軟件,不過有一條恒定的標準來評價好用與不好用,那就是:簡單快捷。

          原型設計階段

          原型能夠很好地展示你的作品在早期應用時該如何操作及會出現什么問題。市場上的原型應用程序有很多,在此我將推薦幾款個人比較中意的。

          個人認為,Atomic是一個很偉大的發明。之所以如此認為,是因為一個特殊的理由:Atomic支持原創者將自己的設計邏輯編程入原型中,這意味著即使表面上看起來不像本來設計的樣子,但在運行中卻會完完全全地遵照設計師地本意。

          接下來要說的是 Flinto(Mac端),Flinto以“什么都會一點兒”而自薦,算是個“百事通”,但其中最厲害的就是交互動畫設計功能了。在Flinto中,滾動交互、復雜過渡和微交互的操作都十分便捷,該軟件同時也支持嵌入視頻或GIF,這樣設計師就可以在原型中使用現有的動畫資源。

          綜上,如果想要做出真正的高保真互動設計和動畫,那么Flinto算是再好不過的模擬器了。

          最后勉強提及一下InVision吧。我不是它的粉絲,因為個人感覺相對于產品設計支持,InVision把更多的精力投放在商業宣傳上。不過它在生成快速共享的HTML原型并進行即時修改方面還是非常強大的。

          InVision確有所長,但個人更偏愛Atomic。事實上,如果你不想使用Atomic,并且傾向于InVision,也可以考慮一下Figma或Sketch。首先,它們都支持基本的可點擊原型,這些原型可以與用戶共享并進行評論。其次,它們都不專長于滾動交互和高級動畫定制之類的操作,但對于制作一個簡單的原型來說也足矣。

          高保真設計階段

          這個部分比較籠統,我會盡可能簡潔地介紹,因為有些產品上文已經提到過了。

          Figma(Mac端,PC端)是我的必選之一,不為別的,就為它能在PC端使用。當然除了平臺效應,它還有很多其他優點。

          個人比較青睞Figma的鋼筆工具,它操作十分便捷,尤其是在我想以像素規模制圖時。Figma的組件覆蓋處理起來也非常得心應手,在對話框面板中,Figma呈現出的不是單一的文本框,而是支持快捷修改的圖層,并可將更改視為重寫,這個功能比Sketch更容易,操作起來也更富有變化性。

          最重要的是,Figma是一款很好的協作工具,有時甚至不僅僅是“工具”。在Figma中合作就像打開文件直接更改一樣簡單。因為它的操作是基于云的,文檔中的每個人都可以看到進行中的變化,而且能夠完全無縫對接。

          最后要說的是,Figma的原型搭建和共享工具對于編程而言十分出彩,由于原型基于HTML語言,所以設計師可以和任何人分享創意。更何況它還是免費的呢!

          重頭戲 Sketch(Mac端)終于登場了。至于Sketch為什么在屏幕設計中如此流行其實一點也不稀奇。當Bohemian推出該產品時,市場上根本沒有類似的精品。由于大量的插件和資源支持,Sketch是UX軟件中無可爭議的王者。

          近期,Sketch的開發進程確越來越緩慢,在其最近更新的版本中著重推出的原型搭建功能其實已經被InVision收入囊中了。此外多年來Sketch還是只有Mac端的版本,這使得PC端的用戶很苦惱啊。

          報告和文檔編繪階段

          如果你的點子背后有一些好的想法及一些不錯的藝術品作支撐,那么無論你是外包,還是在專業工作室工作,抑或是在大公司設計部門工作,下一步都是一樣的,那就是要推銷自己。

          不過很多設計師貌似都沒把這一點當回事兒,好像大多人認為總有人給介紹,或者自己的作品本身已經夠有說服力了。但實際上,好作品的創意只有設計師本人才能宣傳出來。

          為了進行適當炒作或者加大宣傳效果,我一般會選擇蘋果的Keynote工具(Mac端)。曾有大型公司內部人士告訴我:商業人士都喜歡幻燈片。

          Keynote與PowerPoint、谷歌幻燈片不同,它可以通過一些非常簡單、功能強大的動畫工具進行幻燈片放映。設計師可以利用這些優勢來真正地講述設計背后的故事。

          就像版本控制一樣,文檔在設計工作中也成了越來越常見的要求,它會記錄設計中所有必要的細節,無論是為了商業營銷還是為了供業內人士參考都尤為重要。

          在這一點上,我們團隊使用的是Atlassian公司的Confluence。它本質上是一個具有內部高級權限特性的wiki。設計者可以隨時查看界面屏幕和用戶流,業務團隊可以添加接受標準,開發人員可以使用頁面作為資源來進一步理解設計師的設計邏輯和意圖。

          但個人并不大喜歡這款軟件,因為笨拙的用戶界面和難用的導航令人體驗有點差。但無論如何,它確實在我們工作過程中扮演著重要的角色。

          當然說到文檔不得不提個人較為中意的Coda.io。Coda的任務是用一站式商店取代所有的文檔應用程序,可以支持豐富的文本文檔、公式、表格、圖表等操作。但個人認為一旦它退出了beta測試階段,將是一個巨大的打擊。

          對此,個人還想說的是,文檔是團隊合作中一個非常重要的部分。這意味著即使你不在討論現場,你的想法和理念也一直存在,這使得任務在與其他隊員的交接過程中也會產生較少的摩擦。當然,事在人為,盡管做成這件事的方法有一萬種,但最關鍵的還是要開始動手。

          開發者切換階段

          在項目度過了最艱難的孵化時期已經小有輪廓時,接下來合作商可能會問:什么時候能竣工拿到產品呢?

          為解決這個,我們還是得把目光拉回到Zeplin身上。在項目進行中,你的團隊可能使用Zeplin來進行一些操作,這是個能夠快速保持團隊風格的好去處,也是一個存儲和檢索關鍵資源的地方。

          如果你開始發掘Zeplin中更高級的開發屬性,它的閃光點就爆露出來了,比如導出設計資源的代碼片段,或者以多個分辨率導出資源,這些都能真正加快開發進程。這意味著開發人員不必追著你討要素材來搭建,一切都能馬上傳輸。

          為此我們還要再次提到InVision。InVision的運行比Zeplin更簡單,你可以簡單地突出或標明任何對象、組,InVision便能直接賦予它們屬性。這是一個確定大小、文字樣式和顏色的好方法。

          你也可以導出資源,但是導出設置需要事先在Sketch中指定(Zeplin也有同樣的限制)。此外,InVision還支持一些代碼導出功能,但如果想在這方面具體比較InVision和Zeplin,可能需要詢問開發人員。

          在這個問題上,Avocode很值得關注,因為它不僅僅支持Sketch,還支持Figma、Adobe XD和PS圖象處理軟件。它也是為了從設計中生成代碼而設計的。個人對Avocode的經驗很有限,但是如果開發者切換是你工作中的重頭,那么Avocode可能值得一試。

          結語

          恭喜你,到此我們走完了從早期概念到最終交付的整個設計過程。希望你已經發現了一些能以某種方式提升工作效率的應用程序。

          不過還是要說,本文最大的缺陷在于并沒有討論研究階段。因為個人在一個專業的設計團隊工作,有專門的研究員所以沒有包括這一步。但它是任何好的UX誕生中的一個非常非常重要的部分,特別是在設計和開發的早期階段。

          另一個要注意的問題是,這里列出的許多工具對私人而言都是免費的,但如果你與多個項目或團隊合作,就會變得非常昂貴。如果你有一些很棒的免費或者便宜的替代品,歡迎共同分享。

          原文鏈接:https://blog.prototypr.io/ux-design-tools-for-2018-for-mac-and-pc-320a7be230c9

          編譯組出品。編輯:郝鵬程

          ue

          https://cn.vuejs.org/index.html

          需要你做一下預習:https://cn.vuejs.org/v2/guide/index.html

          數據驅動。如果我們要改變頁面效果,不再需要直接操作dom元素,只需要改變數據就好。數據改變之后框架會自動的幫我們進行頁面更新。

          歷史

          js最初的出現就是為了解決一個頁面中彈出一個提示,或者做一個簡單的計算。當時的環境下,瀏覽器可用的內存很小,為了解決這些問題,js語言必須簡單、沒有太復雜的數據結構、占用內存小。

          但是隨著時間的發展,網頁的功能越來越復雜,需要的交互越來越多,js需要做的事情就更多。隨著時代的發展,瀏覽器的廠家也越來越多,每家瀏覽器對js語法的支持也不一樣。ECMA這個組織,建立一個統一的標準,在不停的制定一些語言語法的規范。

          語言在發展的過程中,會吸取或者借鑒一下同行的一些優勢,來完善自身。


          為了解決業務場景的復雜化,出現了很多框架或者開發模式:

          jQuery是前期出現的一個神級的插件,它提供了一個標準的元素選擇方案,讓我們可以快速的做元素選擇。選中之后做后序的各種操作。它統一了各個瀏覽器中js語法的差異,使用jQuery寫代碼就不需要考慮各個版本瀏覽器中語法的差別

          MVC框架Backbone,是早期經典的前端開發框架(jQuery+underscore.js+backbone.js+require.js);做SPA單頁面應用程序開發

          angular.js,是google的。分為兩類:angular.js和angular

          react.js,是facebook出的框架,目前是全球使用最廣泛的。國內十家公司的react可能有十種寫法

          vue.js,是一個個人項目,目前是國內使用比較廣泛的。國內十家公司的vue只能有一種寫法

          基礎api

          • v-model
          • 作用是實現頁面中表單元素和data數據的雙向綁定。是一個語法糖,相當于綁定了表單元素的input事件和value值。當輸入框的值變化的時候data中的數據跟著變化。實現的原理是Object.defineProperty
          • 可以添加修飾符:number(轉換為數字)、trim(去空格)
          • v-bind
          • 作用是綁定標簽的屬性,可以簡寫為:
          • 綁定樣式的時候可以為樣式寫成對象的形式:屬性名表示樣式名,屬性值為bool值,如果值為true表示這個樣式生效,否則這個樣式效果無效
          • v-html
          • 是綁定一個富文本內容,相當于設置innerHTML屬性
          • v-text
          • 相當于設置innerText屬性
          • v-on
          • 作用是事件綁定,可以簡寫為@符號。在vue中綁定事件的時候只寫事件名字就好
          • 處理鍵盤事件的時候可以加修飾符,具體的可用修飾符可以參考官網https://cn.vuejs.org/v2/guide/events.html#%E6%8C%89%E9%94%AE%E4%BF%AE%E9%A5%B0%E7%AC%A6
          • 最常用的一個按鍵修飾符是enter
          • v-for
          • 循環遍歷,展示數據。是以后用到的最多的一個指令
          • 可以對數組,數字,字符串,對象這些數據做循環
          • <ul>
            <!-- list表示需要循環的數據 item表示循環到的每一項,index表示索引;其中item和index是形參,叫什么都可以; 循環的時候建議為每一項設置一個唯一的key,他的作用是做節點替換時候性能優化使用 -->
            <li v-for="(item, index) in list" :key="item.id">{{index}}-{{item}}</li>
            </ul>
          • v-if
          • 是直接刪除或者插入標簽
          • v-show
          • 是控制標簽的display屬性
          • 在實際使用的時候v-show的性能更高一些,建議使用
          • filter
          • 過濾器,作用是對數據做過濾顯示
          • watch
          • 監聽數據的變化,數據改變之后會觸發一些列其他的操作
          • watch的應用場景:一個數據改變之后引起的一些列其他連鎖反應
          • computed
          • 當依賴的數據改變之后重新計算一個結果。計算屬性具有緩存功能,當依賴數據沒有改變的時候不會重新計算
          • 計算屬性和方法調用的區別:
          • 方法調用需要加括號,計算屬性不用
          • 方法調用每一次頁面更新的時候都會執行
          • 計算屬性只有在依賴的數據改變的時候才會執行
          • 有兩種寫法:
          • ...
            computed: {
            val1() {
            return 'xxx'
            },
            val2: {
            set(v) {

            },
            get() {
            return ......
            }
            }
            }
            ...
          • 計算屬性的應用場景:多個數據改變之后引起的一個計算結果
          • 組件
          • 組件是vue中很重要的一個東西,是vue項目的主要組成部分。組件可以理解為自定義標簽
            • 組件定義
            • 組件定義的時候有常見的兩種:局部組件和全局組件
              • 局部組件
              • 局部組件在使用的時候需要先進行注冊,使用components屬性進行注冊
              • const hello = {
                template: ``//....
                }
              • 全局組件
              • 可以直接使用不需要注冊
              • Vue.component('xx', {
                template: ''
                })
            • 組件嵌套
            • 組件中可以調用另一個組件。組件之間時可以相互嵌套的,在使用之前也是需要先注冊
            • 生命周期
            • 生命周期里面包含很重要的一個東西叫生命周期鉤子函數。就是在組件存在的周期中,在不同的時間點執行的函數

              • 生命周期鉤子函數
              • 分為四個階段
                • 創建
                  • beforeCreate
                  • created【重要】
                  • 組件創建成功之后執行,主要用來在這個鉤子函數中調接口取數據
                • 掛載
                  • beforeMount
                  • mounted【重要】
                  • 掛載成功之后執行,在這個鉤子函數中可以獲取組件的dom元素
                  • 可以使用$el屬性獲取當前組件的dom元素
                • 更新
                  • beforeUpdate
                  • updated
                • 銷毀
                  • beforeDestroy
                  • destroyed
              • 更新階段的鉤子函數是在組件存在的周期中重復執行的,其他六個都是只執行一次。在更新階段不能改變數據,數據改變會引起死循環。因為數據或者屬性改變的話組件會觸發更新階段的鉤子函數
              • 嵌套組件的生命周期函數執行順序
              • 在嵌套組件中,當執行到父組件的掛載之前的時候,會執行所有子組件的創建到掛載完成的鉤子函數。當子組件都掛載完成之后會執行父組件的掛載完成函數
              • keep-alive動態組件
              • activitedkeep-alive 專屬,組件被激活時調用,deactivatedkeep-alive 專屬,組件被銷毀時調用,
            • 傳參
            • 三種形式:
            • 父傳子(從外往內)
            • 屬性props
            • 子傳父(從內往外)
            • 事件派發,在vue中使用$on添加一個事件,使用$emit派發一個事件
            • 非相關組件(平行組件)
            • 事件總線或者vuex
            • 事件總線是一個開發思想或者一種開發模式。
            • 在vue中,定義一個空白的vue實例,它什么都不干,就做一件事情,事件派發和監聽
          • component動態組件
          • 是vue中的一個內置標簽,可以通過is屬性控制當前顯示的組件
          • slot插槽
          • 可以理解為占位符,這個位置我們先占了,放什么以后再說
          • 插槽分為一般插槽和具名(有名字的插槽,加了name屬性)插槽
          • <div id="app">
            <home>
            <template #end>
            <h2>你草率了,我才是最后一行</h2>
            </template>
            <h3>我是展示在slot中的內容</h3>
            <h2>我也是</h2>
            </home>
            </div>
            <script src="./libs/vue.js"></script>
            <script>
            // slot表示插槽,就是占位符,這個位置我們先占了,放什么以后再說
            const home = {
            template: `<div class="home">
            <h1>我是首頁</h1>
            <slot></slot>
            <p>我是一段文字介紹</p>
            <p>這里應該是最后了</p>
            <slot name="end"></slot>
            </div>`,
            };
            new Vue({
            el: '#app',
            components: { home },
            });
            </script>
          • keepalive
          • keepalive就是保證這個組件一直在不銷毀,只要組件創建了就不會被銷毀
            • include
            • 包含,為每一個組件設置一個name屬性。在include的時候寫上這個屬性值,表示keep-alive的時候包含這個組件。include表示包含,多個用,隔開
            • exclude
            • exclude表示不包含,多個用,隔開
          • 在設置了keep-alive的時候,頁面切換的場景下會觸發這兩個鉤子函數:activated和deactivated
          • 單文件組件
          • 我們在實際開發的時候vue中的組件都是被定義為一個一個單獨的文件的,每一個文件都是.vue結尾的,每一個.vue文件就是一個單獨的組件。每一個組件中包含有html、js、css他們都是獨立針對這個組件的。
          • <template>
            <div>
            <h1>這是一個組件</h1>
            </div>
            </template>
            <script>
            export defaule {
            ....
            }
            </script>
            <style scoped>
            /* scoped表示只在當前組件內有效 */
            </style>
          • 因為瀏覽器是只認識html、css和js文件的,不認識.vue文件,所以我們需要借助插件對vue文件進行編譯,生成js代碼。這個需要配合webpack和使用一個vue-loader的加載器。這些知識作為了解,知道就行。
          • webpack是一個前端自動化模塊打包工具

          腳手架

          https://cli.vuejs.org/zh/

          npm install -g @vue/cli # 全局安裝vue腳手架,希望你成功

          剛才我初始化項目時選擇的內容

          ? Please pick a preset: Manually select features
          ? Check the features needed for your project: Choose Vue version, Babel, CSS Pre-processors, Linter
          ? Choose a version of Vue.js that you want to start the project with 2.x
          ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with node-sass)
          ? Pick a linter / formatter config: Basic
          ? Pick additional lint features: Lint on save
          ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
          ? Save this as a preset for future projects? No

          翻譯之后的中文版本

          ? Please pick a preset: Manually select features(選擇使用手動方式創建項目)
          ? Check the features needed for your project: Choose Vue version, Babel, CSS Pre-processors, Linter(我現擇了四項:1. 手動選擇vue的版本【必選】,2.安裝babel【必選】,3.css預處理,后面可以選擇使用sass或者less等預處理語言,4.選擇了代碼規范性檢測,寫代碼不符合規范時報錯)
          ? Choose a version of Vue.js that you want to start the project with 2.x(選擇vue2)
          ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with node-sass)(選擇使用sass)
          ? Pick a linter / formatter config: Basic(選擇lint規范性檢測的基礎配置)
          ? Pick additional lint features: Lint on save(在保存的時候檢測代碼)
          ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files(把每一個插件的配置文件單獨放置)
          ? Save this as a preset for future projects? No(以后都不使用這種配置)

          npm的配置文件,路徑在windows的c:/users/你的用戶名/.npmrc

          registry=https://registry.npm.taobao.org/
          init.author.email=你的郵箱
          init.author.name=你的名字
          sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

          路由

          vue中的路由插件,路由的作用是實現頁面跳轉。簡單點理解就是再瀏覽器中訪問指定的地址的時候展示的組件或者頁面內容

          https://router.vuejs.org/zh/

          路由分兩種模式:hash和history

          區別:hash瀏覽器支持性好,不需要做額外的配置,可以直接使用;history模式再發布的時候需要做特殊的設置,在web服務器上做了配置之后才能使用;hash模式的路由,地址路徑中有#進行分割,#后面的表示路徑,history模式中沒有#

          安裝

          npm i vue-router # 安裝路由插件

          使用

          import Vue from 'vue'
          import VueRouter from 'vue-router'
          // 可以直接再組件中使用router-view和router-link等路由內置組件和對象($route和$router)
          Vue.use(VueRouter)
          const router=new VueRouter({
              routes: [] // 路由表,或者叫路由數據,就是我們網文指定地址時候展示的組件
          })
          • router-view,路由對應的組件展示的位置。相當于一個容器,用來展示路由地址對應的組件
          • router-link,生成跳轉鏈接
          • $route,就是路由數據對象
          • $router,就是路由對象,可以獲取路由上的屬性和方法,實現編程式跳轉

          路由傳參

          • query,query傳參是在url地址中傳遞參數,在url后面跟在?之后,頁面刷新之后參數還在
          • params,頁面刷新之后參數就沒了。如果想讓頁面刷新之后參數還在,需要在路由設置的時候配置占位符

          參數傳遞之后,在對應的頁面使用$route屬性可以直接獲取參數

          路由攔截和路由守衛

          https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E7%BB%84%E4%BB%B6%E5%86%85%E7%9A%84%E5%AE%88%E5%8D%AB,抽空了看看

          beforeEach

          afterEach

          路由嵌套

          children

          命名視圖

          在一個組件中放多個router-view,通過name屬性進行命名指定

          在定義路由的時候使用components屬性指定展示的組件,可以通過設置屬性名為router-view的name屬性,屬性值為對應的組件的方式實現

          new Router({
              routes: [{
                  path: '/demo',
                  name: 'Demo',
                  components: {
                      default: ()=>import('.....'),
                      first: ()=>import('...')
                  }
              }]
          })

          路由守衛其他的

          https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E7%BB%84%E4%BB%B6%E5%86%85%E7%9A%84%E5%AE%88%E5%8D%AB

          beforeRouteUpdate(to, from, next) {
              // 在當前路由改變,但是該組件被復用時調用
              // 舉例來說,對于一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候,
              // 由于會渲染同樣的 Foo 組件,因此組件實例會被復用。而這個鉤子就會在這個情況下被調用。
              // 可以訪問組件實例 `this`
          },

          vue中的其他API

          https://cn.vuejs.org/v2/api/#%E5%85%A8%E5%B1%80-API

          • $refs
          • 獲取所有設置了ref屬性的標簽
          • 我們可以通過它獲取子組件中的數據和方法
          • $el
          • 可以獲取組件的dom元素
          • $root
          • 表示根組件
          • $nextTick
          • dom元素更新成功之后的回調函數
          • vue中的dom更新是異步的

          ui組件庫

          • vant
          • https://vant-contrib.gitee.io/vant/#/zh-CN/
          • npm i vant -S # 安裝依賴項import Vue from 'vue';
            import Vant from 'vant';
            import 'vant/lib/index.css';

            Vue.use(Vant);
          • element-ui
          • npm i element-ui # 安裝依賴
          • 使用
          • import Vue from 'vue';
            import ElementUI from 'element-ui';
            import 'element-ui/lib/theme-chalk/index.css';
            import App from './App.vue';

            Vue.use(ElementUI);

            new Vue({
            el: '#app',
            render: h=> h(App)
            });
          • https://github.com/PanJiaChen/vue-admin-template 管理后臺模板
          • 解決node-sass安裝失敗的問題
          • # 設置node-sass的下載路徑
            npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/

          vuex

          https://vuex.vuejs.org/zh/

          vuex是vue中的一個狀態管理插件,通俗的講就是一個全局的數據管理工具。作用是實現項目中數據的集中式管理。

          vuex是遵循單向數據流機制的:就是數據是單向流動的,分為三部分(view,state,action)

          • view表示視圖
          • state表示數據
          • action表示行為

          在view視圖中,通過dispatch派發一個action改變數據,數據改變之后view視圖重新渲染


          vuex中的核心模塊

          • state
          • 數據,所有的數據存儲的地方
          • mutations
          • 改變數據的地址,所有的數據改變都在這里進行。每一次數據的變化都會被vue-devtools記錄下來
          • actions
          • 行為,用來處理異步操作。在actions中,也能改變數據,但是不建議這樣做。因為所有的數據改變都是需要可以追蹤到,就是被記錄下來。所以必須在mutations中改變數據
          • modules
          • 模塊拆分
          • getters
          • 相當于計算屬性

          vuex中的數據流向:在組件中通過dispatch派發一個action,在action中獲取數據,然后通過commit提交一個mutation改變數據,數據改變之后組件重新渲染

          api

          他們可以接收的參數為:

          mapXxx('命名空間', [數組])
          mapXxx('命名空間', {對象})
          如果沒有命名空間空間參數,表示獲取根節點上的內容
          • mapState
          • 作用是把state數據映射到組件的計算屬性上
          • mapMutations
          • 作用是把mutation數據映射到組件的methods上
          • mapActions
          • 作用是吧action數據映射到組件的methods上

          你有沒有用過vuex?

          兩種回答方式:

          1. 用過,給他講講單向數據流和vuex中的數據流向
          2. 沒有,我們項目中用不上。跨組件傳參我們使用事件總線

          vuex不是項目開發的時候必選的一個插件,但是在需要用的時候你要知道它的存在,它的作用就是顯示數據在不同的組件之間進行共享的。

          項目

          手機app

          管理后臺

          面試題和其他內容

          https://lurongtao.gitee.io/felixbooks-interview2/

          插件

          • animate.css
          • https://animate.style/
          • 動畫庫
          • moment
          • 日期格式化插件
          • http://momentjs.cn/
          • nprogress
          • 進度條插件
          • swiper
          • 輪播圖
          • https://swiperjs.com/
          • https://www.swiper.com.cn/
          • wangEditor
          • 富文本編輯器
          • https://www.wangeditor.com/
          • https://github.com/wangeditor-team/wangEditor
          • awesome-vue
          • vue的各種資源匯總
          • https://github.com/vuejs/awesome-vue
          • vue-clipboard2
          • 復制到剪切板
          • echarts
          • 數據可視化,圖表插件
          • https://echarts.apache.org/zh/index.html
          • https://v-charts.js.org/#/ (echarts的vue封裝),v-charts目前不支持echarts5,需要重新安裝4.x的echarts
          • datav
          • 數據可視化的圖表插件
          • http://datav.jiaminghi.com/

          vue配置優化

          vue.config.js,所有的相關配置信息都在vue-cli的官網上:https://cli.vuejs.org/zh/config/#vue-config-js

          https://webpack.docschina.org/ webpack官網,作為了解

          module.exports={
            publicPath: "./", // 表示打包之后資源文件的加載路徑
            // 再做性能優化的時候,需要做到
            /**
             * 1. 路由文件的懶加載,使用 ()=> import('xxx')的方式引入,可以把路由組件單獨打包成js文件,在需要使用的時候再引入
             * 2. 使用cdn的方式引入第三方資源庫
             *
             * **/
            // configureWebpack,對webpack工具做額外的設置
            configureWebpack: {
              externals: {
                // 屬性名是js源代碼中引入的時候使用的包名,屬性值是引入js文件后再瀏覽器中可以直接使用的名字
                vue: "Vue",
                vuex: "Vuex",
                "vue-router": "VueRouter",
                axios: "axios",
                "element-ui": "ELEMENT",
              },
            },
            // 腳手架內置了一個node的開發服務器,可以直接讓我們通過網絡路徑訪問代碼
            devServer: {
              // port: 998, // 改變開發服務器的端口號
              proxy: {
                // 訪問以/api開頭的地址時做一個代理轉發
                // 代理只有再開發的時候有用,打包之后就沒用了
                "/api": {
                  target: "https://papi.jiemian.com/page/api", // 目標服務器
                  ws: true, // 開啟ws
                  changeOrigin: true, // 改變origin
                  pathRewrite: { "^/api": "" }, // 路徑重寫,把/api替換成空白
                },
              },
            },
          };
          

          nuxt

          是一個基于vue語法的服務器端渲染(SSR)框架。使用vue語法編寫多頁面應用程序,就是每一次路由跳轉打開的都是一個新的html文件。它解決了SPA單頁面應用程序的一個通病(最怕刷新)。

          https://www.nuxtjs.cn/

          yarn

          yarn是facebook出的一款包管理工具,和npm一樣的功能

          https://yarnpkg.com/

          安裝使用

          npm i yarn -g # 全局安裝yarn
          yarn add xx # 安裝模塊,相當于 npm i xx
          yarn remove xx # 刪除模塊,相當于 npm uninstall xx

          nuxt上線

          .nuxt打包文件、nuxt.config.js配置文件、package.json依賴配置文件、static靜態文件放在服務器

          見的css樣式操作

          單行文本溢出掩藏


          語法:white-space: nowrap| pre | pre-wrap | pre-line | inherit
          1. nowrap:單行文本不換行,文本顯示一行;
          2. pre: 保留空白(在游覽器顯示時,保留空格);
          3. pre-wrap: 保留空白序列,正常換行;
          4. pre-line: 合并空白符序列,但是保留換行符;
          5. inherit: 繼承父級元素white-space 屬性的值;
          語法:text-overflow:clip | ellipsis | string
          1. clip: 裁剪文本;
          2. ellipsis:省略號的形式替代被裁剪的文本;
          3. string: 使用制定的字符來替代被裁剪的字符(且支持火狐瀏覽器);
          div {
              white-space: 'nowrap'; 
              overflow: hidden; 
              text-overflow: ellipsis;
          }

          我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。

          多行文本溢出掩藏


          語法:display: -webkit-box ,將對象作為彈性伸縮盒子模型顯示;
          語法:-webkit-line-clamp:number

          -webkit-line-clamp:限制一個塊元素顯示文本的行數(number)

          語法:-webkit-box-orient:horizontal | vertical | inline-axis | block-axis

          設置或檢索伸縮盒對象的子元素的排列方式:

          1. horizontal: 盒子水平布局其內容;
          2. vertical:盒子垂直布局其內容;
          3. inline-axis:盒子沿內聯軸展示其子元素;
          4. block-axis:盒子沿塊軸展示其子元素;
          div {
              overflow: hidden;  
              text-overflow: ellipsis;  
              display: -webkit-box;  
              -webkit-line-clamp: 2;  
              -webkit-box-orient: vertical;
          }

          實現三角形的效果(向上)


          transparent:表示設置為透明
          .triangle {  
              width: 0;  
              height: 0;  
              border-right: 20px solid transparent;  
              border-left: 20px solid transparent;  
              border-bottom: 20px solid red;  
          }

          css3 實現垂直居中


          語法:display:flex,justify-content:center, align-items: center
          1. display:flex,設置彈性布局顯示;
          2. justify-content: center, 設置子元素水平居中;
          3. align-items: center, 設置子元素垂直居中;
          div {
              display: flex;  
              justify-content: center;  
              align-items: center;
          }

          css3 實現陰影效果


          語法:box-shadow: h-shadow v-shadow blur spread color inset;
          1. h-shadow:水平陰影位置(必選),允許負值;
          2. v-shadow: 垂直陰影的位置(必選),允許負值;
          3. blur:模糊距離(選填);
          4. spread: 陰影大小(選填);
          5. color:陰影顏色(選填);
          6. inset: 從外層的陰影(開始時)改變陰影內側陰影(選填),默認是外陰影;
          div {
            box-shadow: 2px 2px 2px 2px #f00 inset;
          }

          css3 實現圓角效果


          語法:border-radius: number px; number 為數字

          border-radius可設置多個值;
          一個值:表示四個圓角都相同;
          二個值:第一個值為右上和左下圓角的值,第二個值為右下和左上圓角的值;
          三個值:第一個值為左上圓角的值,第二個值為右上和左下圓角的值,第三個值為右下的值;
          四個個值:第一個值為左上圓角的值,第二個值為右上,第三個值為右下的值,第四個為左下圓角的值;

          div {
             border-radius: 30px; 
             /*border-radius: 10px 30px*/
             /*border-radius: 10px 20px 30px*/
             /*border-radius: 10px 20px 30px 40px*/
          }

          css3 實現文本效果


          語法:text-shadow: h-shadow v-shadow blur color;
          1. h-shadow:必需。水平陰影的位置。允許負值;
          2. v-shadow:必需。垂直陰影的位置。允許負值;
          3. blur: 可選。模糊的距離;
          4. color:可選。陰影顏色;
          div {
              text-shadow: 2px 2px 2px #F00;
          }

          css 偽類first-letter


          語法: first-letter表示向段落文本第一個字符添加特殊樣式
          div:first-letter{
              font-size: 50px;
              color:#f00;
              ........
          }

          css 偽類first-line


          語法: first-line表示向文本的首行添加特殊樣式
          div:first-line {
              font-size: 50px;
              color:#f00;
              ........
          }

          css 跨游覽器透明


          兼容IE8及以下版本

          div{
              width: 200px;  
              height: 200px;  
              background: #00B7FF;  
              opacity: 0.5; /*標準游覽器*/  
              filter: alpha(opacity=50);/*IE低版本 8*/
          }

          css3 圖片裁剪


          語法:object-fit: contain | cover | fill | none | scale-down
          1. contain: 縮放內容,保持內容的寬高比;
          2. cover: 填充整個內容框,保持內容寬高比,如果對象的寬高比與內容框不匹配,該對象將裁剪以適應內容寬;
          3. fill: 填充整個內容框(默認值),不保持原有比例;
          4. none: 保持圖片寬高不變;
          5. scale-down: 當圖片實際寬高小于所設置的圖片寬高時,顯示效果與none一致;否則,顯示效果與contain一致;
          div img {
              width:100%;
              height:100%;
              object-fit: cover;
          }

          設置 input placeholder 的顏色


          div::-webkit-input-placeholder {color: #999} 
          div:-moz-placeholder { color: #999} 
          div::-moz-placeholder {color: #999} 
          div:-ms-input-placeholder {  color: #999}

          模糊濾鏡效果


          語法: filter:blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url()
          1. blur(px): 設置高斯模糊,使用px為單位;
          2. brightness(%): 設置圖像明暗,使用%為單位,值越大越亮;
          3. contrast(%): 調整圖像的對比度。
          4. drop-shadow(h-shadow v-shadow blur spread color): 給圖像設置一個陰影效果,參考box-shadow;
          5. grayscale(%): 將圖像轉換為灰度圖像,使用%為單位;
          6. hue-rotate(deg): 給圖像應用色相旋轉,使用deg為單位;
          7. invert(%): 設置反轉輸入圖像,值為0-100%;
          8. opacity(0.5): 設置透明程度,值為0-1;
          9. saturate(%): 設置圖像飽和度;
          10. sepia(%): 將圖像轉換為深褐色,值為0-100%;
          11. url(): URL函數接受一個XML文件,該文件設置了 一個SVG濾鏡,且可以包含一個錨點來指定一個具體的濾鏡元素
          div{
              filter: blur(1px);
          }



          原文鏈接:https://segmentfault.com/a/1190000021509364

          作者:FishStudy520


          主站蜘蛛池模板: 色国产在线视频一区| 久久精品一区二区东京热| 久久久无码一区二区三区| 手机看片福利一区二区三区 | 精品一区二区三区在线视频| 中文字幕一区二区三| 久久久无码精品国产一区| 精品三级AV无码一区| 日韩一区二区三区电影在线观看| 午夜精品一区二区三区在线视 | 久久精品无码一区二区三区免费 | 波多野结衣在线观看一区| 日本一区二区三区在线观看视频 | 亚洲男人的天堂一区二区| 久久精品人妻一区二区三区| 国产激情无码一区二区app| 99精品一区二区三区无码吞精| 成人精品一区二区激情| 一级毛片完整版免费播放一区| 中文字幕AV一区中文字幕天堂 | 国模无码视频一区二区三区| 亚洲av无一区二区三区| 日本精品夜色视频一区二区| 手机看片一区二区| 麻豆一区二区三区精品视频| 国产在线精品一区二区在线观看 | 无码人妻一区二区三区在线视频| 国产精品合集一区二区三区| 精品一区二区三区免费毛片| 亚洲AV综合色一区二区三区 | 蜜桃视频一区二区| 亚洲电影唐人社一区二区| 内射白浆一区二区在线观看| 亚洲国产精品自在线一区二区| 国产色欲AV一区二区三区| 久久91精品国产一区二区| 精品日韩一区二区| 精品视频无码一区二区三区| 色一情一乱一伦一区二区三区日本| 久久久久无码国产精品一区| 日本一区二区三区中文字幕|