首先,隨著移動(dòng)互聯(lián)網(wǎng)的普及和技術(shù)的不斷發(fā)展,UI設(shè)計(jì)師的職業(yè)發(fā)展路徑將更加廣泛和多樣化
UI設(shè)計(jì)在賦能產(chǎn)品方面具有重要作用。通過提升用戶體驗(yàn)、增強(qiáng)品牌識別度、優(yōu)化信息架構(gòu)、促進(jìn)交互操作、提高可定制性、降低學(xué)習(xí)成本以及傳遞情感價(jià)值等方面,UI設(shè)計(jì)可以幫助產(chǎn)品更好地滿足用戶需求,提升產(chǎn)品的競爭力。
對用戶講解自己的UI設(shè)計(jì)方案時(shí),需要將專業(yè)術(shù)語轉(zhuǎn)化為用戶易于理解的語言,并著重強(qiáng)調(diào)設(shè)計(jì)方案如何提升用戶體驗(yàn)。
確認(rèn)UI設(shè)計(jì)的設(shè)計(jì)風(fēng)格需要綜合考慮主色調(diào)選擇、產(chǎn)品特性分析、圖標(biāo)和字體選擇、排版設(shè)計(jì)、品牌識別、用戶需求和習(xí)慣、設(shè)計(jì)的一致性、簡潔與清晰以及創(chuàng)新性等方面。通過這些方面的考慮和應(yīng)用,可以設(shè)計(jì)出符合品牌形象、用戶期望和產(chǎn)品特點(diǎn)的優(yōu)秀UI界面。
作者:山中
人機(jī)交互界面經(jīng)過幾十年的發(fā)展,人與機(jī)器間的交互變得越來越容易,隨著ChatGPT等大語言模型的出現(xiàn),一種我們既熟悉又陌生的交互方式再次進(jìn)入大眾視野,它就是自然語言界面(NLI)。
那么什么是自然語言界面,它又會為人機(jī)交互帶來哪些新的變化,它會成為下一代主流的用戶界面嗎?本文將從計(jì)算機(jī)UI的發(fā)展簡史出發(fā),對比自然語言界面與傳統(tǒng)圖形界面的差異,帶你了解自然語言界面的應(yīng)用場景和發(fā)展方向。
一、計(jì)算機(jī)UI發(fā)展簡史
首先讓我們回顧一下過去幾十年計(jì)算機(jī)UI的發(fā)展階段。
1、穿孔紙帶(Punched tape)
1940-1960年代,早期的計(jì)算機(jī)通過穿孔紙向計(jì)算機(jī)輸入指令,帶孔為1,無孔為0,經(jīng)過光電輸入機(jī)將數(shù)據(jù)輸入計(jì)算機(jī)。由于需要輸入二進(jìn)制的機(jī)器語言,計(jì)算機(jī)在這個(gè)階段只被少數(shù)專家應(yīng)用于專業(yè)領(lǐng)域。
2、命令行界面(CLI)
20世紀(jì)60年代中期,命令行界面( CLI )作為穿孔紙帶的友好替代方案出現(xiàn)在計(jì)算機(jī)上。命令行界面是一種通過輸入被稱為命令行的文本行與計(jì)算機(jī)程序交互的方法,雖然它與人類語言有較大差異,但還是大幅降低了計(jì)算機(jī)的使用門檻,個(gè)人計(jì)算機(jī)(PC)隨之出現(xiàn)。
3、圖形用戶界面(GUI)
命令行界面通常需要用戶記憶操作的命令,這對于普通用戶仍然是很困難的。GUI的出現(xiàn)正是為了解決這個(gè)問題:既然人類很難記住各種命令,那就讓機(jī)器提供可能的選項(xiàng),人類只需要通過圖形元素進(jìn)行選擇。最早的圖像界面出現(xiàn)在1970年代,隨后蘋果和微軟讓GUI普及,短短二三十年,使用GUI交互的計(jì)算機(jī)和各類消費(fèi)電子產(chǎn)品已經(jīng)成為我們工作生活中不可缺少的一部分。
二、自然語言界面(NLI)的爆發(fā)
什么是自然語言界面?
W3C是這樣定義的:自然語言界面是用戶與系統(tǒng)通過自然語言進(jìn)行通信的用戶界面。用戶通過語音或某種其他方法提供輸入,并且系統(tǒng)以通過語音、文本或某種其他方法傳遞的話語的形式生成響應(yīng)。
自然語言界面是什么時(shí)候出現(xiàn)的?
最早的自然語言界面可以追溯到 20 世紀(jì) 60 年代。ELIZA是一個(gè)早期的自然語言處理計(jì)算機(jī)程序,由麻省理工學(xué)院的Joseph Weizenbaum教授于1964 年至 1967 年開發(fā),旨在探索人類和機(jī)器之間的溝通方法。ELIZA 通過模式匹配和替換來模擬對話,也就是說它通過檢測用戶輸入的內(nèi)容中是否包含某些關(guān)鍵詞來做出響應(yīng),雖然它能做出的反應(yīng)有限,更不能真正理解人類的語言,但這是人類第一次嘗試通過自然語言進(jìn)行人機(jī)交互,也是后續(xù)自然語言處理(NLP)技術(shù)研究的一個(gè)里程碑。
語音用戶界面(VUI)
自然語言處理(NLP)技術(shù)經(jīng)過幾十年的發(fā)展,終于在2010年代迎來第一波應(yīng)用爆發(fā)。2011年 Siri 作為 iOS 功能由 Apple 發(fā)布,隨后各家手機(jī)語音助手、智能音箱等VUI產(chǎn)品紛紛出現(xiàn)。但隨之出現(xiàn)了一個(gè)新的網(wǎng)絡(luò)名詞-“人工智障”。雖然 Siri 相比 ELIZA 能做的事情更多了,但它們在體驗(yàn)上仍沒有本質(zhì)區(qū)別,Siri等產(chǎn)品依然需要用戶遵循特定的表述方式才能做出正確響應(yīng),可能換一個(gè)表述方式它們就聽不懂了,所以這個(gè)階段的自然語言界面更多是作為一種輔助交互方式。
大語言模型(LLM)
ChatGPT 于2022年底開放測試,不到一年時(shí)間大語言模型(LLM)與AIGC應(yīng)用已經(jīng)遍地開花。大語言模型實(shí)現(xiàn)了NLP技術(shù)的階段性跨越,AI對自然語言的理解能力大幅提升,不僅能模仿人類對話,還具備文案寫作和問題分析等能力,并且這些能力還在飛速進(jìn)步中,相信自然語言界面即將迎來第二次應(yīng)用爆發(fā)。
三、自然語言界面的優(yōu)勢
那么,自然語言界面相比傳統(tǒng)圖形界面又有什么優(yōu)勢呢?
1、低門檻
刻在我們DNA里的交互方式
語言是我們與他人交互的主要“界面”,智人的言語出現(xiàn)于 50,000 至 200 萬年前,所以說這是刻在我們DNA里的交互方式。我們從小就學(xué)習(xí)閱讀、寫作和說話,因此通過自然語言界面與計(jì)算機(jī)交互幾乎不需要學(xué)習(xí)。
2、高效率
GUI的思路是機(jī)器提供可能的選項(xiàng),讓人類進(jìn)行選擇。但復(fù)雜產(chǎn)品可能有幾百上千個(gè)選項(xiàng),即便設(shè)計(jì)師努力按照最合理的邏輯整理、收納這些選項(xiàng),用戶仍需要花大量時(shí)間精力尋找、理解、記憶這些選項(xiàng)。
酷家樂用戶問題
酷家樂用戶聯(lián)系客服的問題中較多是工具使用問題:怎么添加門把手、怎么把門翻轉(zhuǎn)、怎么顯示柜體尺寸。在幾十上百個(gè)功能中找到那一個(gè)功能都如此困難,對于需要用到多個(gè)“選項(xiàng)”組合操作才能實(shí)現(xiàn)的效果,那確實(shí)難以要求普通用戶做到。
但如果酷家樂支持自然語言交互,我只需要告訴它我們的訴求:“添加門把手”、“把門翻轉(zhuǎn)”、”顯示柜體尺寸“,軟件便會直接實(shí)現(xiàn)這些的效果。
通過自然語言輸入,用戶便可以忘記各家軟件各種復(fù)雜的交互邏輯,設(shè)計(jì)師也無需煞費(fèi)苦心設(shè)計(jì)復(fù)雜的用戶引導(dǎo)和幫助系統(tǒng),隨之客服人力成本也將大幅降低。
Tome
目前已經(jīng)有一些產(chǎn)品在這么做了,Tome是一款制作提案PPT的產(chǎn)品,它可以通過自然語言輸入實(shí)現(xiàn)大部分操作,并且支持AI直接生成內(nèi)容。
3、不設(shè)限
早期計(jì)算機(jī)的輸入輸出完全靠機(jī)器語言,門檻很高。后來,普通用戶借助圖形界面和開發(fā)好的程序,也能輕松使用計(jì)算機(jī),但同時(shí)我們也被其限制了。
美間站點(diǎn)
以”美間“為例,美間站點(diǎn)有大量的海報(bào)模板,可以按用途、風(fēng)格維度進(jìn)行篩選,但用戶也只能按這兩個(gè)維度篩選。如果我想找出10月份用戶點(diǎn)擊最高的10個(gè)節(jié)氣海報(bào)模板,那對不起,辦不到,不是因?yàn)槲覀儧]有這個(gè)數(shù)據(jù),而是我們沒有提供個(gè)“選項(xiàng)”,通過SQL或者其他語言查詢數(shù)據(jù)庫就可以獲取到。
但如果美間的數(shù)據(jù)庫接入了大語言模型,那么直接問它,就能得到任何數(shù)據(jù)庫能提供的內(nèi)容,因?yàn)楝F(xiàn)在LLM已經(jīng)會自己寫代碼做數(shù)據(jù)分析工作了。通過自然語言界面,我們可以最大程度發(fā)揮計(jì)算機(jī)和數(shù)據(jù)庫的價(jià)值。
四、自然語言會不會取代圖形界面?
自然語言界面這么強(qiáng)大,那它會不會取代圖形界面呢?答案是不會,受限于AI能力發(fā)展現(xiàn)狀和自然語言自身的局限性,自然語言界面有其適用范圍。
1、AI能力仍有限
理想情況是AI能完全理解我們的訴求、且能力能夠覆蓋,但現(xiàn)在還做不到。用戶隨便輸入一個(gè)需求,產(chǎn)品很可能做不到,這就需要我們通過GUI進(jìn)行提示和引導(dǎo)。
2、額外的處理時(shí)間
相比通過GUI直接對程序發(fā)出指令,用戶輸入自然語言LLM普遍需要幾秒鐘的處理時(shí)間,帶來更高的試錯(cuò)成本,某些場景下我們使用GUI操作更加快捷。
3、自然語言表達(dá)不夠精準(zhǔn)
人與人的交流也常常存在歧義,更別說跟機(jī)器交流了,所以自然語言界面不適合做非常精細(xì)的操作。
美間提案PPT
以美間提案PPT為例,如果我通過自然語言輸入:“把標(biāo)題改成紅色”,那AI可能會反問:”哪個(gè)標(biāo)題?哪種紅色?“。試想一下,如果要通過自然語言描述這些信息,是不是還不如通過鼠標(biāo)選擇來的簡單。
4、自然語言輸入也存在成本
自然語言輸入,用戶需要把需求組織成語言,然后打字或講出。也就是說用戶需要?jiǎng)幽X子,這顯然與我們追求的”Dot let me think“原則相違背。
美間海報(bào)
以美間海報(bào)場景為例,美間支持”AI生成“和”模板再創(chuàng)作“兩種海報(bào)創(chuàng)作方式。這兩種方式分別有各自的使用場景。如果用戶需要一張?jiān)┳8:?bào),對于目標(biāo)明確的用戶,他可以通過詳細(xì)描述畫面需求,生成個(gè)性化的海報(bào)方案。例如:”生成一張?jiān)┕?jié)日海報(bào),主題為:群核科技祝您元旦快樂,畫面要喜慶,插畫風(fēng)格,包含煙花、燈籠、熱鬧的人群等元素“
但對于更多用戶來說,描述一個(gè)海報(bào)畫面是困難的,大部分用戶只需要一個(gè)通用的模板改改字就足夠了,這樣不但更輕松,而且得到的海報(bào)質(zhì)量也更高。
五、NLI與GUI融合互補(bǔ)
所以,自然語言界面不會取代圖形界面,它們更多會融合互補(bǔ),在各自的擅長領(lǐng)域發(fā)光發(fā)熱。
未來常見的用戶工作流將會是:NLI發(fā)散-GUI收斂,先使用NLI得到一個(gè)大概結(jié)果,再通過GUI完成確認(rèn)或調(diào)整。
美間AI海報(bào)
美間AI海報(bào)就是這樣的設(shè)計(jì)思路:基于自然語言輸入生成若干結(jié)果,選擇一個(gè)滿意的方案再二次編輯。
六、NLI還有哪些應(yīng)用場景?
自然語言界面還有哪些應(yīng)用場景?微軟表示:萬物皆可“Copilot”。
Copilot是微軟發(fā)布的依托于大語音模型的AI助手(AI Agent)。11月15日的微軟Ignite大會上,CEO納德拉向我們展示了Copilot最新的形態(tài):一個(gè)入口連接無限可能。
Copilot可以連接各種應(yīng)用和數(shù)據(jù)源,用戶只需要把需求告訴Copilot,Copilot就能自動(dòng)完成全部應(yīng)用和數(shù)據(jù)操作,甚至是跨應(yīng)用和跨數(shù)據(jù)源的。
Copilot Studio
Copilot Studio是微軟面向B端用戶推出的AI助手,支持用戶自定義專屬的Copilot,以滿足行業(yè)、部門、角色等內(nèi)外部場景的定制化需求。讓Copilot鏈接企業(yè)財(cái)務(wù)系統(tǒng),你可以隨時(shí)問它各類財(cái)務(wù)預(yù)算的開支和剩余情況;Copilot還能雙向打通CRM、ERP等SAAS產(chǎn)品,自動(dòng)化執(zhí)行復(fù)雜的業(yè)務(wù)流程,比如辦理新員工入職、費(fèi)用報(bào)銷等。
數(shù)據(jù)分析
Excel擁有強(qiáng)大的數(shù)據(jù)分析能力,但我們大部分人只用過Excel來制作表格,因?yàn)楦唠A的函數(shù)、宏等功能對于普通用戶來說學(xué)習(xí)成本太高?,F(xiàn)在,Copilot與Excel結(jié)合,便可以實(shí)現(xiàn)通過自然語言寫代碼執(zhí)行復(fù)雜的數(shù)據(jù)分析工作。
AIGC
AIGC是當(dāng)前最熱門的AI應(yīng)用領(lǐng)域之一,除了常見的文案生成、圖片生成,傳統(tǒng)的內(nèi)容創(chuàng)作軟件結(jié)合AIGC能力也可以發(fā)揮出巨大的潛力。Copilot加持下的PPT,只需一句話,Copilot將自動(dòng)幫你完成PPT的文案、配圖、排版等工作。
七、展望
未來自然語言界面將重塑現(xiàn)有產(chǎn)品的交互方式, 但自然語言也只是一種交互方式,未來隨著AI能力和硬件技術(shù)的發(fā)展,人類與機(jī)器間的交互成本還將進(jìn)一步降低。
微軟在Ignite大會上演示了未來 AI+MR 設(shè)備的應(yīng)用場景,借助MR設(shè)備AI可以看到、聽到、解釋、理解我們的意圖和我們周圍的世界,我們只需要極少的輸入就能得到需要的結(jié)果。以現(xiàn)在AI技術(shù)的發(fā)展速度,相信這些看似科幻電影中的場景用不了多久便會成為現(xiàn)實(shí)。
藍(lán)藍(lán)設(shè)計(jì)(www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計(jì)、B端界面設(shè)計(jì)、桌面端界面設(shè)計(jì)、APP界面設(shè)計(jì)、圖標(biāo)定制、用戶體驗(yàn)設(shè)計(jì)、交互設(shè)計(jì)、UI咨詢、高端網(wǎng)站設(shè)計(jì)、平面設(shè)計(jì),以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計(jì)服務(wù)公司、軟件界面設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、用戶體驗(yàn)公司、高端網(wǎng)站設(shè)計(jì)公司
銀行金融軟件UI界面設(shè)計(jì)、能源及監(jiān)控軟件UI界面設(shè)計(jì)、氣象行業(yè)UI界面設(shè)計(jì)、軌道交通界面設(shè)計(jì)、地理信息系統(tǒng)GIS UI界面設(shè)計(jì)、航天軍工軟件UI界面設(shè)計(jì)、醫(yī)療行業(yè)軟件UI界面設(shè)計(jì)、教育行業(yè)軟件UI界面設(shè)計(jì)、企業(yè)信息化UI界面設(shè)計(jì)、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
html代碼塊:
js代碼塊:
前端展示(輸入內(nèi)容后顯示為空消失):
解決方法:是<el-form-item>標(biāo)簽加入prop="數(shù)組內(nèi)要驗(yàn)證的屬性"或者<el-input>標(biāo)簽中加入type="數(shù)組內(nèi)要驗(yàn)證的屬性".
解決方法:給<el-form>綁定整個(gè)數(shù)組.v-model="newName".
如此種情況,無論輸入什么都會提示為空.
解決方法:將綁定驗(yàn)證內(nèi)容變成數(shù)組【也可以把表單驗(yàn)證寫在data里面】
此情況一般報(bào)錯(cuò)為兩個(gè):
Element-ui官方樣式表單提交函數(shù)功能是這樣展示的:
我們可以看到方法是this.$refs[數(shù)組名].validate(() =>{})或者this.$refs.數(shù)組名.validate(() =>{})這樣一個(gè)函數(shù).
如果你用的html5或者是其他不顯示參數(shù)的集成工具,代碼是這樣的:
并不知道這個(gè)this.$refs有沒有真正的請求到,如果你用的顯示參數(shù)的集成工具(如phpstorm),如果你的代碼正確,會這樣顯示:
我們看到會多顯示一個(gè)callback,這就說明this.$refs生效了.
所以不管你使用說明軟件寫的代碼,如果出現(xiàn)表單驗(yàn)證提交錯(cuò)誤.也就是現(xiàn)實(shí)開頭那兩個(gè)錯(cuò)誤.你就先輸入console.log(this.$ref.newName)[此處的newName是你自己綁定的數(shù)組]
看看輸出是一個(gè)對象還是undefine.顯示這個(gè)對象說明this.$refs.newName請求成功.
如果顯示undefine,可以這樣改正:
[注:Element-ui的表單驗(yàn)證一定是綁定的數(shù)組類型]
藍(lán)藍(lán)設(shè)計(jì)(www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計(jì)、B端界面設(shè)計(jì)、桌面端界面設(shè)計(jì)、APP界面設(shè)計(jì)、圖標(biāo)定制、用戶體驗(yàn)設(shè)計(jì)、交互設(shè)計(jì)、UI咨詢、高端網(wǎng)站設(shè)計(jì)、平面設(shè)計(jì),以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計(jì)服務(wù)公司、軟件界面設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、用戶體驗(yàn)公司、高端網(wǎng)站設(shè)計(jì)公司
銀行金融軟件UI界面設(shè)計(jì)、能源及監(jiān)控軟件UI界面設(shè)計(jì)、氣象行業(yè)UI界面設(shè)計(jì)、軌道交通界面設(shè)計(jì)、地理信息系統(tǒng)GIS UI界面設(shè)計(jì)、航天軍工軟件UI界面設(shè)計(jì)、醫(yī)療行業(yè)軟件UI界面設(shè)計(jì)、教育行業(yè)軟件UI界面設(shè)計(jì)、企業(yè)信息化UI界面設(shè)計(jì)、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
一般我們可以通過下面的代碼判斷分辨率
復(fù)制代碼 代碼如下:
<script language="JavaScript">
<!-- Begin
function redirectPage() {
var wjb51=screen.width;
var hjb51=screen.height;
alert("經(jīng)系統(tǒng)檢測,你的屏幕分辨率為 " + wjb51+"*"+ hjb51 + "by 腳本之家17jquery.com");
}
// End -->
</script>
js判斷瀏覽器分辨率
復(fù)制代碼 代碼如下:
<script>
function ScreenWidth(){
if (screen.width == 1440){
alert("1440*900");
}else if (screen.width == 800){
alert("800*600");
}else if (screen.width == 1152){
alert("1152*864");
}else {
alert("do not know!");
}
}
</script>
<input type="button" name="" value="fenbianli " οnclick=" ScreenWidth()"/>
內(nèi)容來自17jquery
說明:這段js代碼可改造一下,改為screen.width>=1024 screen.width=800兩種情況
所以我選擇使用下面的代碼:
復(fù)制代碼 代碼如下:
if(screen.width>=1440){
alert('寬屏幕可以加載廣告了');
//一些廣告代碼
}
用JS判斷不同分辨率調(diào)用不同的CSS樣式文件
最近看一個(gè)網(wǎng)站,發(fā)現(xiàn)顯示器不同的分辨率,樣式文件調(diào)用的也不一樣,今天寫了一個(gè)例子研究一下,
復(fù)制代碼 代碼如下:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>無標(biāo)題文檔</title>
<link rel="stylesheet" id="sc" type="text/css" href="css/c1.css"/>
<script type="text/javascript">
window.οnlοad=function(){
var sc=document.getElementById("sc");
var d=document.getElementById("d");
if(screen.width>1024) //獲取屏幕的的寬度
{
sc.setAttribute("href","css/c2.css"); //設(shè)置css引入樣式表的路徑
d.innerHTML = "你的電腦屏幕寬度大于1024,我的寬度是 1200px, 背景色現(xiàn)在是紅色。";
}
else{
sc.setAttribute("href","css/c1.css"); 17jquery.com
d.innerHTML = "你的電腦屏幕寬度小于或是等于1024,我的寬度是 960px, 背景色現(xiàn)在是藍(lán)色。";
}
}
</script>
</head>
<body>
<div id="d"></div>
</body>
</html>
c1.css里面的內(nèi)容
復(fù)制代碼 代碼如下:
*{ margin:0; padding:0;}
div{ width:960px; height:400px; margin:0 auto; background:blue; color:#ffffff;}
c2.css里面的內(nèi)容
*{ margin:0; padding:0;}
div{ width:1200px; height:400px; margin:0 auto; background:red; color:#fff;}
藍(lán)藍(lán)設(shè)計(jì)(www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計(jì)、B端界面設(shè)計(jì)、桌面端界面設(shè)計(jì)、APP界面設(shè)計(jì)、圖標(biāo)定制、用戶體驗(yàn)設(shè)計(jì)、交互設(shè)計(jì)、UI咨詢、高端網(wǎng)站設(shè)計(jì)、平面設(shè)計(jì),以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計(jì)服務(wù)公司、軟件界面設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、用戶體驗(yàn)公司、高端網(wǎng)站設(shè)計(jì)公司
銀行金融軟件UI界面設(shè)計(jì)、能源及監(jiān)控軟件UI界面設(shè)計(jì)、氣象行業(yè)UI界面設(shè)計(jì)、軌道交通界面設(shè)計(jì)、地理信息系統(tǒng)GIS UI界面設(shè)計(jì)、航天軍工軟件UI界面設(shè)計(jì)、醫(yī)療行業(yè)軟件UI界面設(shè)計(jì)、教育行業(yè)軟件UI界面設(shè)計(jì)、企業(yè)信息化UI界面設(shè)計(jì)、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
babel:js編輯器
typeScript:超集js【需要指定數(shù)據(jù)類型】
PWA:離線可用
Linter/Formatter:約束代碼規(guī)范,配合eslint
unit/e2e testing:測試
node_modules:放置項(xiàng)目依賴的地方
public:一般放置一些共用的靜態(tài)資源,包括頁簽圖標(biāo)、index.html,打包上線的時(shí)候,public文件夾里面資源原封不動(dòng)打包到dist文件夾里面;<%= BASE_URL %>是public所在路徑,使用絕對路徑
腳手架目錄public和assets區(qū)別:參考鏈接
src:程序員源代碼文件夾
補(bǔ)充:通過 vue.config.js 可以修改 webpack 的默認(rèn)配置
a. 瀏覽器自動(dòng)打開html,vue-cli-service serve --open
在package.json文件中
"scripts": {
"serve": "vue-cli-service serve --open",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
b.關(guān)閉eslint校驗(yàn)工具
創(chuàng)建vue.config.js文件:需要對外暴露
module.exports = {
lintOnSave:false,
}
c. src文件夾的別名的設(shè)置 【@表示src文件夾,@在"node_modules","dist"不能用】
創(chuàng)建jsconfig.json文件
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": [
"src/*"
]
}
},
"exclude": [
"node_modules",
"dist"
]
}
新建routes.js放路由規(guī)則
npm run build -- --report
chainWebpack: config => {
config.when(process.env.NODE_ENV === 'production',config=>{
config.entry('app').clear().add('./src/main-prod.js')
})
config.when(process.env.NODE_ENV === 'development',config=>{
config.entry('app').clear().add('./src/main-dev.js')
})
}
第一步:vue.config.js——>配置externals節(jié)點(diǎn)
//配置后的vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
lintOnSave:false,
// 通過 chainWebpack 為開發(fā)模式與發(fā)布模式指定不同的打包入口
chainWebpack: config => {
// 發(fā)布模式
config.when(process.env.NODE_ENV === 'production',config=>{
config.entry('app').clear().add('./src/main-prod.js')
<span class="token comment">// 通過externals 加載外部 CDN 資源</span>
config<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token string">'externals'</span><span class="token punctuation">,</span><span class="token punctuation">{</span>
<span class="token literal-property property">vpe</span> <span class="token operator">:</span> <span class="token string">' Vue '</span><span class="token punctuation">,</span>
<span class="token string-property property">'vue-router'</span><span class="token operator">:</span> <span class="token string">'VueRouter'</span><span class="token punctuation">,</span>
<span class="token literal-property property">axios</span><span class="token operator">:</span> <span class="token string">'axios'</span><span class="token punctuation">,</span>
<span class="token literal-property property">lodash</span><span class="token operator">:</span> <span class="token string">'_'</span><span class="token punctuation">,</span>
<span class="token literal-property property">echarts</span><span class="token operator">:</span> <span class="token string">'echarts'</span><span class="token punctuation">,</span>
<span class="token literal-property property">nprogress</span><span class="token operator">:</span><span class="token string">'NProgress'</span><span class="token punctuation">,</span>
<span class="token string-property property">'vue-quill-editor'</span><span class="token operator">:</span> <span class="token string">'VueQuillEditor'</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
config<span class="token punctuation">.</span><span class="token function">when</span><span class="token punctuation">(</span>process<span class="token punctuation">.</span>env<span class="token punctuation">.</span><span class="token constant">NODE_ENV</span> <span class="token operator">===</span> <span class="token string">'development'</span><span class="token punctuation">,</span><span class="token parameter">config</span><span class="token operator">=></span><span class="token punctuation">{</span>
config<span class="token punctuation">.</span><span class="token function">entry</span><span class="token punctuation">(</span><span class="token string">'app'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'./src/main-dev.js'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
}
})
第二步:導(dǎo)入的樣式表也會被導(dǎo)入到輸出文件中,導(dǎo)致體積大;臨時(shí)注釋掉main.prod.js中的import的VueQuillEditor樣式表;進(jìn)行如下配置;【注意版本號】
進(jìn)一步添加js文件的CDN引用:
<!-- 富文本編輯器樣式表文件 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.core.min.css"/>
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.snow.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.bubble.min.css"/>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/vue/2.6.14/vue.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token operator">--</span> <span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/vue-router/3.5.1/vue-router.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span> <span class="token operator">--</span><span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/axios/1.3.4/axios.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/echarts/5.4.1/echarts.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token operator">--</span> 富文本編輯器的 js 文件 <span class="token operator">--</span><span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/quill/1.3.7/quill.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.6/dist/vue-quill-editor.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
第一步:
<!-- element-ui的樣表文件-->
<link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.13/theme-chalk/index.css" />
<!-- element-ui的 js 又件-->
<script src="https://cdn.staticfile.org/element-ui/2.15.13/index.js"></script>
第二步:臨時(shí)注釋掉
// 引入自定義插件 (封裝element按需引入模塊)
// import element from ‘./plugins/element’
第一步:對vue.config.js中chainWebpack的屬性進(jìn)行調(diào)整:
// 通過 chainWebpack 為開發(fā)模式與發(fā)布模式指定不同的打包入口
chainWebpack: config => {
// 1、發(fā)布模式
config.when(process.env.NODE_ENV === 'production',config=>{
config.entry('app').clear().add('./src/main-prod.js')
<span class="token comment">// 通過externals 加載外部 CDN 資源</span>
config<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token string">'externals'</span><span class="token punctuation">,</span><span class="token punctuation">{</span>
<span class="token literal-property property">vue</span> <span class="token operator">:</span> <span class="token string">' Vue '</span><span class="token punctuation">,</span>
<span class="token string-property property">'vue-router'</span><span class="token operator">:</span> <span class="token string">'VueRouter'</span><span class="token punctuation">,</span>
<span class="token literal-property property">axios</span><span class="token operator">:</span> <span class="token string">'axios'</span><span class="token punctuation">,</span>
<span class="token literal-property property">lodash</span><span class="token operator">:</span> <span class="token string">'_'</span><span class="token punctuation">,</span>
<span class="token literal-property property">echarts</span><span class="token operator">:</span> <span class="token string">'echarts'</span><span class="token punctuation">,</span>
<span class="token string-property property">'vue-quill-editor'</span><span class="token operator">:</span> <span class="token string">'VueQuillEditor'</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token comment">// 不同的打包環(huán)境下,首頁內(nèi)容可能會有所不同</span>
<span class="token comment">// 我們可以通過插件的方式進(jìn)行定制,根據(jù)isProd的值,來決定如何染頁面結(jié)構(gòu),發(fā)布模式插件配置如下:</span>
config<span class="token punctuation">.</span><span class="token function">plugin</span><span class="token punctuation">(</span><span class="token string">'html'</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">tap</span><span class="token punctuation">(</span><span class="token parameter">args</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
args<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>isProd <span class="token operator">=</span> <span class="token boolean">true</span>
<span class="token keyword">return</span> args
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token comment">// 2、開發(fā)模式</span>
config<span class="token punctuation">.</span><span class="token function">when</span><span class="token punctuation">(</span>process<span class="token punctuation">.</span>env<span class="token punctuation">.</span><span class="token constant">NODE_ENV</span> <span class="token operator">===</span> <span class="token string">'development'</span><span class="token punctuation">,</span><span class="token parameter">config</span><span class="token operator">=></span><span class="token punctuation">{</span>
config<span class="token punctuation">.</span><span class="token function">entry</span><span class="token punctuation">(</span><span class="token string">'app'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'./src/main-dev.js'</span><span class="token punctuation">)</span>
<span class="token comment">// 不同的打包環(huán)境下,首頁內(nèi)容可能會有所不同</span>
<span class="token comment">// 我們可以通過插件的方式進(jìn)行定制,根據(jù)isProd的值,來決定如何染頁面結(jié)構(gòu),開發(fā)模式插件配置如下:</span>
config<span class="token punctuation">.</span><span class="token function">plugin</span><span class="token punctuation">(</span><span class="token string">'html'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">tap</span><span class="token punctuation">(</span><span class="token parameter">args</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
args<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>isProd <span class="token operator">=</span> <span class="token boolean">false</span>
<span class="token keyword">return</span> args
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
}
第二步:在public/index.html首頁中,可以根據(jù)isProd的值,來決定如何染頁面結(jié)構(gòu)
<title><%=htmlWebpackPlugin.options.isProd?'':'dev-' %>電商后臺管理系統(tǒng)</title>
<!-- 在production模式下isProd = true,會獲取CDN里的依賴資源,development模式下isProd = false,用本地下載的依賴 -->
<% if(htmlWebpackPlugin.options.isProd){ %>
前面CDN引入的依賴資源(富文本編輯器+elemen-ui)
<% } %>
前面CDN引入的依賴資源(富文本編輯器+elemen-ui),代碼如下:
<!-- 富文本編輯器樣式表文件 -->
<link rel="stylesheet" href="/>
<link rel="stylesheet" href=" />
<link rel="stylesheet" href="/>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/vue/2.6.14/vue.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/vue-router/3.5.1/vue-router.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/axios/1.3.4/axios.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/echarts/5.4.1/echarts.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token operator">--</span> 富文本編輯器的 js 文件 <span class="token operator">--</span><span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/quill/1.3.7/quill.min.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.6/dist/vue-quill-editor.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token operator">--</span> element<span class="token operator">-</span>ui的樣表文件<span class="token operator">--</span><span class="token operator">></span>
<span class="token operator"><</span>link rel<span class="token operator">=</span><span class="token string">"stylesheet"</span> href<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/element-ui/2.15.13/theme-chalk/index.css"</span> <span class="token operator">/</span><span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">!</span><span class="token operator">--</span> element<span class="token operator">-</span>ui的 js 又件<span class="token operator">--</span><span class="token operator">></span>
<span class="token operator"><</span>script src<span class="token operator">=</span><span class="token string">"https://cdn.staticfile.org/element-ui/2.15.13/index.js"</span><span class="token operator">></span><span class="token operator"><</span><span class="token operator">/</span>script<span class="token operator">></span>
第三步:由于對首頁內(nèi)容根據(jù)production模式和development模式進(jìn)行了定制,需要將前面注釋掉的富文本編輯器樣式,以及element-ui樣式引入取消注釋,最終項(xiàng)目會根據(jù)不同模式展示首頁
7. 路由懶加載
當(dāng)打包構(gòu)建應(yīng)用時(shí),JavaScript 包會變得非常大,影響頁面加載。如果我們能把不同路由對應(yīng)的組件分割成不同的代碼塊,然后**[當(dāng)路由被訪問的時(shí)候才加載對應(yīng)組件**],這樣就會更加高效。
簡化:
不需要在route.js文件 import UserDetails from ‘./views/UserDetails.vue’;直接路由懶加載
{
name:‘search’, //商品搜索
path:‘/search’,
component:()=>import(‘@/pages/Search’), [路由被訪問才加載組件]
藍(lán)藍(lán)設(shè)計(jì)(www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計(jì)、B端界面設(shè)計(jì)、桌面端界面設(shè)計(jì)、APP界面設(shè)計(jì)、圖標(biāo)定制、用戶體驗(yàn)設(shè)計(jì)、交互設(shè)計(jì)、UI咨詢、高端網(wǎng)站設(shè)計(jì)、平面設(shè)計(jì),以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計(jì)服務(wù)公司、軟件界面設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、用戶體驗(yàn)公司、高端網(wǎng)站設(shè)計(jì)公司
銀行金融軟件UI界面設(shè)計(jì)、能源及監(jiān)控軟件UI界面設(shè)計(jì)、氣象行業(yè)UI界面設(shè)計(jì)、軌道交通界面設(shè)計(jì)、地理信息系統(tǒng)GIS UI界面設(shè)計(jì)、航天軍工軟件UI界面設(shè)計(jì)、醫(yī)療行業(yè)軟件UI界面設(shè)計(jì)、教育行業(yè)軟件UI界面設(shè)計(jì)、企業(yè)信息化UI界面設(shè)計(jì)、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
(轉(zhuǎn)自csdn)
目錄
如果你需要取消上一次的 Git 提交,有幾個(gè)不同的方法可以實(shí)現(xiàn)。其中包括撤消提交、提交到新的分支、使用 Git 回滾等等。
下面介紹三種方法:
使用 Git reset 命令來取消上一次提交:
git reset HEAD~1
這會把 HEAD 指針移回上一個(gè)提交(HEAD~1),并清除最后一次提交的內(nèi)容。
或
git reset HEAD^
撤回兩次或者n次
git reset HEAD~2
使用 Git revert 命令來撤消上一次提交并創(chuàng)建一個(gè)新的提交來撤消原來的提交:
git revert HEAD
這會創(chuàng)建一個(gè)新的提交來撤消提交之前的更改。在命令行中輸入該命令后,你需要編輯撤消的提交信息,以便 Git 創(chuàng)建一個(gè)新的提交。
還可以使用 Git checkout 命令來將工作樹恢復(fù)到上一次提交的狀態(tài)。這將清除所有未提交的更改,所以請確保你有一個(gè)備份:
git checkout HEAD~1
這會將工作樹恢復(fù)到上一次提交的狀態(tài),也就是你上一次提交之前的狀態(tài)。請注意,這里的修改都將被丟棄。
無論你使用的是哪種方法,請確保在撤消提交之前首先備份你的工作。這可以幫助你避免在操作過程中意外刪除無法恢復(fù)的內(nèi)容。
如果你已經(jīng)push了代碼,并且想要撤回這個(gè)commit,可以通過以下步驟實(shí)現(xiàn):
首先,在使用git push
命令時(shí),需要加上--force
參數(shù),強(qiáng)制覆蓋遠(yuǎn)程倉庫上已經(jīng)存在的commit。命令如下:
git push --force origin <branch_name>
其中,<branch_name>
表示你要撤銷的分支名稱。
如果在本地倉庫沒有回到該commit的上一個(gè)狀態(tài),需要使用git reflog
命令找到該commit的SHA-1值。命令如下:
git reflog
該命令會列出整個(gè)Git倉庫的提交歷史記錄,包括HEAD指針?biāo)赶虻奶峤缓鸵呀?jīng)被廢棄的提交。
找到要回到的某個(gè)commit的SHA-1值,然后使用如下命令回到該commit的狀態(tài):
git reset --hard <commit_SHA-1>
其中,<commit_SHA-1>
表示要回到的commit的SHA-1值。
然后使用之前的推送命令進(jìn)行推送,添加--force
參數(shù),覆蓋遠(yuǎn)程倉庫的歷史提交記錄。命令如下:
git push --force origin <branch_name>
提醒:使用git push --force
命令可能會導(dǎo)致遠(yuǎn)程倉庫、其他成員的倉庫和歷史版本產(chǎn)生不可逆的影響,因此操作時(shí)需要謹(jǐn)慎。一般情況下,在工作流中使用git revert
命令回滾某個(gè)commit,以保證版本控制的完整性和可維護(hù)性。
git log 查看提交日志
不刪除工作空間改動(dòng)代碼,撤銷 commit,并撤銷 git add . 操作
git reset --mixed HEAD^ 效果等同 git reset HEAD^
不刪除工作空間改動(dòng)代碼,撤銷commit,不撤銷git add .
刪除工作空間改動(dòng)代碼,撤銷commit,撤銷git add .
修改注釋, 進(jìn)入vim編輯器, 改完:wq即可
藍(lán)藍(lán)設(shè)計(jì)(www.teruid.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計(jì)、B端界面設(shè)計(jì)、桌面端界面設(shè)計(jì)、APP界面設(shè)計(jì)、圖標(biāo)定制、用戶體驗(yàn)設(shè)計(jì)、交互設(shè)計(jì)、UI咨詢、高端網(wǎng)站設(shè)計(jì)、平面設(shè)計(jì),以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計(jì)服務(wù)公司、軟件界面設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、用戶體驗(yàn)公司、高端網(wǎng)站設(shè)計(jì)公司
銀行金融軟件UI界面設(shè)計(jì)、能源及監(jiān)控軟件UI界面設(shè)計(jì)、氣象行業(yè)UI界面設(shè)計(jì)、軌道交通界面設(shè)計(jì)、地理信息系統(tǒng)GIS UI界面設(shè)計(jì)、航天軍工軟件UI界面設(shè)計(jì)、醫(yī)療行業(yè)軟件UI界面設(shè)計(jì)、教育行業(yè)軟件UI界面設(shè)計(jì)、企業(yè)信息化UI界面設(shè)計(jì)、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.teruid.com