欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

手把手教你搭建vue3.0項(xiàng)目架構(gòu)

 更新時(shí)間:2021年11月22日 17:25:20   作者:Mr.聶  
這篇文章手把手教你搭建vue3.0項(xiàng)目架構(gòu),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言:

GitHub上我開(kāi)源了vue-cli、vue-cli3兩個(gè)庫(kù),文章末尾會(huì)附上GitHub倉(cāng)庫(kù)地址。這次把2.0的重新寫了一遍,優(yōu)化了一下。然后按照2.0的功能和代碼,按照vue3.0的語(yǔ)法,完全重寫了一遍。雖然名字叫cli,其實(shí)兩個(gè)庫(kù)都是基于vue-cli創(chuàng)建的。做這個(gè)的目的是為了工作中快速啟動(dòng)項(xiàng)目,畢竟切片打包、less、axios、vuex、router、UI框架、基礎(chǔ)文件目錄、權(quán)限,這些都是基操,當(dāng)然項(xiàng)目不同,還是要做些調(diào)整的。這兩個(gè)項(xiàng)目的master分支都是最基礎(chǔ)的東西,里面還包含了幾個(gè)自定義的組件。vue-cli3 單獨(dú)切出來(lái)一個(gè)app分支,這個(gè)分支會(huì)不定時(shí)的添加一些功能,比如hightCharts的甘特圖,three.js,用戶可以自定義的大屏展示等等一些功能,現(xiàn)在還啥都沒(méi)有,看時(shí)間吧,有時(shí)間就會(huì)更新,會(huì)優(yōu)先寫vue3.0 的,2.0 的再說(shuō)吧。也希望大家能幫我完善這個(gè)庫(kù),畢竟為了快速啟動(dòng)項(xiàng)目才搭建的,自然越優(yōu)秀越好。app分支也是希望能有一些好的功能模塊案例,為大家拓展思路。

一、用 vue-cli 創(chuàng)建項(xiàng)目

npm uninstall vue-cli -g           卸載老版本cli
npm i @vue/cli -g                  安裝新版本cli
npm install -g @vue/cli-init       安裝cli  
vue -V                             查看cli的版本號(hào),注意大小寫
vue create vue-cli                 創(chuàng)建vue3.0項(xiàng)目, 記得選擇vue3

按上述步驟操作即可,我的vue-cli版本號(hào)是 4.5.11。這里注意一下,創(chuàng)建項(xiàng)目的的時(shí)候需要手動(dòng)選擇創(chuàng)建2.0還是3.0的項(xiàng)目,默認(rèn)是2.0,腳手架是向下兼容的。

二、安裝路由

npm install vue-router@4             安裝路由,4.0版本的

我的路由版本是4.0.12

三、完善目錄結(jié)構(gòu),創(chuàng)建配置文件vue.config.js

目錄和vue.config.js都貼了一下,具體的還是去GitHub直接看源碼,這里不多占用篇幅了。這里app.less設(shè)置了顏色變量,統(tǒng)一了整個(gè)系統(tǒng)的顏色,后期如果做主題,也方便維護(hù)。其中antd、vuex等后面再說(shuō)。

四、安裝ant-design-vue,安裝less、安裝dayjs

npm i --save ant-design-vue@next   安裝 antd3.x的版本  3.0還在不斷更新的階段
npm install babel-plugin-import --save-dev    引入babel, 配置 babel.config 文件,antd組件的按需加載
npm install --save @ant-design/icons-vue  需要的話,引入antd的icon
npm install less --save  引入less
npm i less-loader@4.1.0   注意版本號(hào)
npm i style-resources-loader vue-cli-plugin-style-resources-loader -D  安裝插件,vue.config.js 文件,增加less文件全局配置,主要配置全局變量
npm install dayjs --save 并全局配置下 dayjs, 如果報(bào)錯(cuò),重裝一下ant-design-vue,dayjs比moment更加輕量

UI框架我用了ant-design-vue,這個(gè)大家隨意根據(jù)自己需求和喜好來(lái)。但是要提醒一下,antd目前2.0版本做了對(duì)vue3的支持,而且是穩(wěn)定的,現(xiàn)在正在做3.0版本的升級(jí),項(xiàng)目中用的都是是3.0的寫法,穩(wěn)定性有待考究。再就是因?yàn)閍ntd需要dayjs,這里也用了dayjs,用法大同小異,但是他非常小。項(xiàng)目中用了antd的按需加載,不用的組件還是不要引入的好,有需要的在antdUse.js文件引入即可。按需加載的方法官方文檔有詳述,需要修改babel.config.js。antd3的icon變成了通過(guò)組件的形式引入,使用起來(lái)有點(diǎn)繁瑣,也需要注意。

安裝less的babel時(shí),注意版本號(hào),高版本的會(huì)報(bào)錯(cuò)。我這里定義了全局的less變量,統(tǒng)一項(xiàng)目的各級(jí)別字體大小、各種顏色等等

五、安裝vuex、axios

npm install vuex@next --save   安裝vuex,并配置
npm install axios   安裝 axios,并做統(tǒng)一配置

axios沒(méi)有什么變化。vuex建議詳細(xì)看一下官方文檔3.0到4.0的遷移文檔。這里我簡(jiǎn)單列幾個(gè)重要的,新版本中,用 createStore創(chuàng)建實(shí)例;通過(guò) useStore 獲取當(dāng)前的vuex實(shí)例。具體寫法看代碼。

六、vue3的一些新語(yǔ)法

vue3參考了react hooks的實(shí)現(xiàn)方式,所以寫法和編程思路很像,這里非常建議看一下尤雨溪大佬的這篇文章,點(diǎn)我跳轉(zhuǎn)這里他對(duì)自己升級(jí)的前因后果做了很詳細(xì)闡述,看完會(huì)對(duì)這次升級(jí)有比較清晰的認(rèn)知。這次更新主要是對(duì)組件公共邏輯的提取復(fù)用和對(duì)單一組件邏輯組織做了很大的改動(dòng),當(dāng)然根本動(dòng)力還是對(duì)typescript的支持。ts是大勢(shì)所趨。從我個(gè)人而言,這次改動(dòng)很大,使vue3對(duì)新手來(lái)說(shuō),上手難度非常高。對(duì)程序員要求也提高了很多。很容易出現(xiàn)代碼一鍋粥,邏輯混亂的情況。呃 ...還有就是.value 和 props. 的寫法太啰嗦,我是不是要求有點(diǎn)高了,手動(dòng)狗頭,哈哈。

但是,用多了之后你會(huì)這很好用、很方便。vue3.0數(shù)據(jù)流向很清晰、還保留了數(shù)據(jù)響應(yīng)式的老優(yōu)點(diǎn)。巴適得很啊。博主最開(kāi)始是用react的,剛開(kāi)始轉(zhuǎn)用vue的時(shí)候很不習(xí)慣,有寫法的原因,最大的還是數(shù)據(jù)不清晰,所有數(shù)據(jù)都綁定在this上,可讀性低了好多。

。。。扯遠(yuǎn)了,回歸正題,直接說(shuō)說(shuō)按照我的理解,vue3有哪些變化,應(yīng)該怎么去用。

首先,vue3支持typescript了,鼓掌、撒花。。。建議學(xué)習(xí)一下,當(dāng)然用不用都行,毫無(wú)影響。只能說(shuō)ts作為js的超集,徹底斬?cái)嗔薺s的放蕩不羈愛(ài)自由,變得中規(guī)中矩起來(lái)。也讓代碼更加規(guī)范,更加可掌控。不過(guò)很有意思的是,vue3徹底斬?cái)嗔藇ue2的條條框框,徹底釋放自由了,變量、方法直接在setup里面定義,邏輯也都在里面編寫,再也不需要像以前那樣在規(guī)定的地方聲明監(jiān)聽(tīng)屬性、聲明方法了。這個(gè)項(xiàng)目都是用js寫的,我的ts水平也一般,再就是怕大家看不習(xí)慣,畢竟現(xiàn)階段ts的普及還是有點(diǎn)低的。

下面會(huì)列舉一些變化,有源代碼,有注釋,直接拉項(xiàng)目跑一下的好,這里只是簡(jiǎn)單提一些關(guān)鍵的變化。

main.js文件。通過(guò) createApp方法創(chuàng)建vue實(shí)例,通過(guò)app.config.globalProperties.實(shí)例原型上添加全局屬性??蓜?chuàng)建多實(shí)例,也不怕污染。

report.js文件。通過(guò) defineComponent聲明組件,配合 setup這個(gè)組合函數(shù)完成組件邏輯的開(kāi)發(fā),具體寫法看源碼report.js這個(gè)文件。

setup(props, context)這個(gè)組合函數(shù),直接替代了vue2.0 computed watch 生命周期 methods等整一套寫法。所有的邏輯,都在這個(gè)函數(shù)里面實(shí)現(xiàn)。所以,建議統(tǒng)一寫法,雖然以前的寫法也是支持的,個(gè)人建議要么之前那套,要么一點(diǎn)都不要。不要出現(xiàn)setup和methods同時(shí)出現(xiàn)的情況。

  1. setup beforeCreate和created已經(jīng)不需要了,setup的觸發(fā)時(shí)機(jī)其實(shí)就是在beforeCreate之前。他僅在實(shí)例初始化的時(shí)候運(yùn)行一次,以后再不會(huì)執(zhí)行,setup是同步。
  2. 兩個(gè)參數(shù),props是父級(jí)組件傳遞的數(shù)據(jù),實(shí)時(shí)更新。不可以解構(gòu),會(huì)丟失監(jiān)聽(tīng)??梢杂胻orefs將props轉(zhuǎn)為組件內(nèi)部的監(jiān)聽(tīng)數(shù)據(jù)。但是我個(gè)人感覺(jué)這不是個(gè)好方法,我還是喜歡 props. 的形式使用,這樣代碼一目了然,很清楚你用的數(shù)據(jù)到底是props傳遞的還是當(dāng)前組件聲明的。數(shù)據(jù)流向很清晰; context是個(gè)對(duì)象,可以解構(gòu)使用,包含emit等屬性,沒(méi)什么好說(shuō)的,看看文檔就好。
  3. setupthis是沒(méi)用的,因?yàn)檫€沒(méi)return呢,所以各依賴包為了支持這一特性,都做了相應(yīng)的更新 router vuex 都有專門的方法,通過(guò)引入的方式獲取到實(shí)例??梢钥匆幌孪聢D的代碼。
  4. 計(jì)算屬性、監(jiān)聽(tīng)屬性、生命周期。這些都是以方法的形式注入到組件中,生命周期的名字變了一些,功能方面并沒(méi)有變化,監(jiān)聽(tīng)屬性也是,寫法變化了。文檔寫的很清楚,這里,我就不多做贅述了。其次還增加了一些新的api。ref reactive聲明響應(yīng)式變量;provide / inject 父子組件互通;watchEffect自動(dòng)監(jiān)聽(tīng),不太推薦,他會(huì)自動(dòng)監(jiān)聽(tīng)所有的響應(yīng)式變量,任何有變化了都會(huì)觸發(fā)回調(diào),有點(diǎn)類似于update。當(dāng)然也會(huì)導(dǎo)致頻繁執(zhí)行的問(wèn)題。一些簡(jiǎn)單的頁(yè)面可以用,其他情況還是用watch手動(dòng)標(biāo)記需要監(jiān)聽(tīng)的變量最好。

七、總結(jié)

Vue3的新屬性非常多,多研究看文檔。不過(guò)目前社區(qū)還不是很完善,個(gè)人感覺(jué)到2022年的年底,應(yīng)該會(huì)改善很多,大部分依賴都會(huì)支持。

最后,如果大家覺(jué)得這個(gè)項(xiàng)目寫的還可以的,給個(gè)star,對(duì)代碼有問(wèn)題,也希望大佬們能修正一下,有好的組件或者效果都可以分享一下。萬(wàn)一項(xiàng)目有需求就用上了呢,哈哈。

vue-cli地址

vue-cli3地址

到此這篇關(guān)于手把手教你搭建vue3.0項(xiàng)目架構(gòu)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue?Router中Matcher的初始化流程

    Vue?Router中Matcher的初始化流程

    這篇文章主要介紹了Vue?Router中Matcher的初始化流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue自定義指令實(shí)現(xiàn)僅支持輸入數(shù)字和浮點(diǎn)型的示例

    vue自定義指令實(shí)現(xiàn)僅支持輸入數(shù)字和浮點(diǎn)型的示例

    今天小編就為大家分享一篇vue自定義指令實(shí)現(xiàn)僅支持輸入數(shù)字和浮點(diǎn)型的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例

    ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例

    這篇文章主要介紹了ant design中upload組件上傳大文件,顯示進(jìn)度條進(jìn)度的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題

    解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題

    這篇文章主要介紹了解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-01-01
  • vue實(shí)現(xiàn)整屏滾動(dòng)切換

    vue實(shí)現(xiàn)整屏滾動(dòng)切換

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)整屏滾動(dòng)切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果

    vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果

    這篇文章主要為大家詳細(xì)介紹了vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)的方法(前后端分離)

    vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)的方法(前后端分離)

    這篇文章主要介紹了vue項(xiàng)目使用node連接數(shù)據(jù)庫(kù)(前后端分離),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Vue全局事件總線和訂閱與發(fā)布使用案例分析講解

    Vue全局事件總線和訂閱與發(fā)布使用案例分析講解

    在?vue?里我們可以通過(guò)全局事件總線來(lái)實(shí)現(xiàn)任意組件之間通信,它的原理是給?Vue?的原型對(duì)象上面添加一個(gè)屬性。這樣的話我所有組件的都可以訪問(wèn)到這個(gè)屬性,然后可以通過(guò)這個(gè)屬性來(lái)訪問(wèn)其他組件給這個(gè)屬性上面綁定的一些方法,從而去傳遞數(shù)據(jù)
    2022-08-08
  • 關(guān)于Vue?監(jiān)控?cái)?shù)組的問(wèn)題

    關(guān)于Vue?監(jiān)控?cái)?shù)組的問(wèn)題

    這篇文章主要介紹了Vue?監(jiān)控?cái)?shù)組的示例,主要包括Vue?是如何追蹤數(shù)據(jù)發(fā)生變化,Vue?如何更新數(shù)組以及為什么有些數(shù)組的數(shù)據(jù)變更不能被?Vue?監(jiān)測(cè)到,對(duì)vue監(jiān)控?cái)?shù)組知識(shí)是面試比較常見(jiàn)的問(wèn)題,感興趣的朋友一起看看吧
    2022-05-05
  • vue2中插槽(slot)的基本使用規(guī)范

    vue2中插槽(slot)的基本使用規(guī)范

    插槽(Slot)是Vue提出來(lái)的一個(gè)概念,正如名字一樣,插槽用于決定將所攜帶的內(nèi)容,插入到指定的某個(gè)位置,從而使模板分塊,具有模塊化的特質(zhì)和更大的重用性,下面這篇文章主要給大家介紹了關(guān)于vue2中插槽(slot)的基本使用規(guī)范的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評(píng)論