Vue全家桶音樂專案整理--文件分析篇
最近參考IMOOC基於Vue的音樂實戰專案,自己模仿的寫了一遍,整體來說收穫很多。
接下來我會對整個專案進行簡單的整理分析,希望能更深入理解,更深刻的掌握。因為涉及到知識點比較多,所以我打算分成四個模組來分析。
- 專案結構
- 目錄分析
檔案篇
一、專案結構
專案由vue官方釋出的腳手架vue-cli快速搭建
專案目錄如下:
專案:
│ .babelrc
│ .editorconfig
│ .gitignore
│ .postcssrc.js
│ index.html
│ package.json
│ README.md
│
├─build
│ build.js
│ check-versions.js
│ dev-client.js
│ dev-server.js
│ utils.js
│ vue-loader.conf.js
│ webpack.base.conf.js
│ webpack.dev.conf.js
│ webpack.prod.conf.js
│
├─config
│ dev.env.js
│ index.js
│ prod.env.js
│
├─node_modules
│ ├─.bin
│
├─src
│ │ App.vue
│ │ main.js
│ │
│ ├─api
│ │ .gitkeep
│ │ singer.js
│ │
│ ├─common
│ │ │ .gitkeep
│ │ │
│ │ ├─fonts
│ │ │
│ │ ├─image
│ │ │ default.png
│ │ │
│ │ ├─js
│ │ │ utils.js
│ │ │
│ │ └─stylus
│ │ base.styl
│ │ index.styl
│ │ mixin.styl
│ │ reset.styl
│ │ variable.styl
│ │
│ ├─components
│ │ ├─b-listView
│ │ │ listView.vue
│ │ │
│ │ └─v-header
│ │ header.vue
│ │ logo@2x.png
│ │ logo@3x.png
│ │
│ ├─router
│ │ index.js
│ │
│ └─store
│ actions.js
│ getters.js
│ index.js
│ mutation-types.js
│ mutations.js
│ state.js
│
└─static
.gitkeep
二、目錄分析
1. babelrc
介紹
babelrc下一代javascript語法編譯器。
由於瀏覽器版本和相容性,導致es6語法並不能完全可用,因此babel誕生;babel可以讓你放心使用大部分的JavaScript的新的標準的語法,然後編譯成相容絕大多數的主流瀏覽器的程式碼。
- presets(預設),也就是一堆plugins的預設,起到方便的作用。
- env
- es2015/es2016/es2017/latest
- react
- stage-x(stage-0/1/2/3/4)
- plugins(外掛)
最佳實踐
{
"presets": [
"es2015",
"stage-0"
],
"plugins": ["transform-runtime"]
}
2. editorconfig
介紹
讓使用不同編輯器的開發者在共同開發一個專案時“無痛”地遵循編碼規範
使用 EditorConfig 來解決上面的問題。只需兩步
- 在專案根建立一個名為 .editorconfig 的檔案。該檔案的內容定義該專案的編碼規範。EditorConfig 支援的編碼規範在後文會有詳細的介紹。
- 安裝與編輯器對應的 EditorConfig 外掛。
當你在編碼時,EditorConfig 外掛會去查詢當前編輯檔案的所在資料夾或其上級資料夾中是否有 .editorconfig 檔案。如果有,則編輯器的行為會與 .editorconfig 檔案中定義的一致,並且其優先順序高於編輯器自身的設定。
最佳實踐
root = true
# 對所有檔案生效
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# 對字尾名為 md 的檔案生效
[*.md]
trim_trailing_whitespace = false
3.gitignore
介紹
git為我們提供了一個.gitignore檔案只要在這個檔案中申明那些檔案你不希望新增到git中去,這樣當你使用git add .的時候這些檔案就會被自動忽略掉。
最佳實踐
- a.忽略指定檔案/目錄
# 忽略指定檔案
HelloWrold.class
# 忽略指定資料夾
bin/
bin/gen/
- b.萬用字元忽略規則
# 忽略.class的所有檔案
*.class
# 忽略名稱中末尾為ignore的資料夾
*ignore/
# 忽略名稱中間包含ignore的資料夾
*ignore*/
4.postcssrc.js
介紹
post-loader的外掛配置檔案
5.package.json
介紹
每個專案的根目錄下面,一般都有一個package.json檔案,定義了這個專案所需要的各種模組,以及專案的配置資訊(比如名稱、版本、許可證等後設資料)。npm install命令根據這個配置檔案,自動下載所需的模組,也就是配置專案所需的執行和開發環境。
scripts
指定了執行指令碼命令的npm命令列縮寫,比如start指定了執行npm run start時,所要執行的命令。
dependencies
欄位指定了專案執行所依賴的模組。
devDependencies
指定專案開發所需要的模組。
它們都指向一個物件。該物件的各個成員,分別由模組名和對應的版本要求組成,表示依賴的模組及其版本範圍。
6.build/config
介紹
vue-cli自帶的webpack配置
- build - 編譯任務的程式碼
- config - webpack 的配置檔案
具體程式碼分析
詳見參考文件:
7.src目錄
介紹
專案的開發目錄,是整個專案最重要部分;包括開發程式碼以及靜態資原始檔(字型等)
-
api
自定義資料夾,存放所有介面呼叫,暴露響應函式 -
common
公共目錄,存放公用js/css/images/fonts等-
stylus
存放所有公用樣式,reset/variable/base等
-
-
components
元件目錄,包括基礎元件和業務元件 -
router
配置路由,Vue.use(Router)
且暴露給外面 -
store
存放Vuex相關檔案,下面會詳細分析 -
App.vue
專案根元件 -
main.js
專案主入口
8.src/common/stylus目錄
介紹
存放所有公用樣式,切割成單獨作用的樣式檔案
- reset 樣式重置
- icon 圖示字型
- base 基礎設定,整個專案都使用
- index 主入口,引入reset、icon、base;在main.js中引入
- mixin 混合(清浮動等方法),哪裡需要哪裡引用
- variable 樣式規範(顏色,字型),哪裡需要哪裡引用
9.src/store目錄
介紹
存放Vuex相關檔案
-
actions
類似於 mutation,提交的是 mutation,而不是直接變更狀態。Action 可以包含任意非同步操作。 -
getters
從store中的 state 中派生出一些狀態,用於外部獲取state相關狀態 -
index
Vuex的主入口,暴露Store -
mutation
更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation -
state
用一個物件就包含了全部的應用層級狀態。至此它便作為一個『唯一資料來源(SSOT)』而存在
最佳實踐
import { mapGetters, mapMutations, mapActions } from 'vuex';
//computed 中使用mapGetters語法糖(... 是es6的物件擴充套件)
//state中currentIndex變化,響應式引起getters中對應currentIndex變化
//從而引起computed中currentIndex的變化,最後對映到DOM中
computed:{
...mapGetters([
'currentIndex',
'fullScreen',
...
])
}
//mapMutations/mapActions語法糖和物件擴充套件,將SET_PLAYING_STATE擴充套件到methods
//呼叫this.SET_FULL_SCREEN方法,改變state中對應狀態,響應到getters中
methods:{
...mapMutations({
setFullScreen: 'SET_FULL_SCREEN',
setPlayingState: 'SET_PLAYING_STATE',
...
}),
}
相關文章
- Vue 全家桶實現網易雲音樂 WebAppVueWebAPP
- vue全家桶上手小專案Vue
- 基於vue全家桶的移動端音樂web appVueWebAPP
- Vue全家桶打造自適應 web 音樂播放器VueWeb播放器
- vue全家桶 仿小紅書開源專案Vue
- vue全家桶 ---vue-router路由篇Vue路由
- vue全家桶 ---建立一個新的vue專案Vue
- React全家桶專案React
- 網易雲音樂介面+vue全家桶開發一款移動端音樂webAppVueWebAPP
- vue全家桶Vue
- React全家桶開發仿QQ音樂WebAppReactWebAPP
- 搭建vue全家桶Vue
- React全家桶構建一款Web音樂App實戰(一):專案準備ReactWebAPP
- 「Angular7+NgRx+SSR全家桶」開發QQ音樂Angular
- Vue3.x全家桶+vite+TS-搭建Vue3.x專案VueVite
- Vue全家桶學習(二)Vue
- ⚡ vue3 全家桶體驗Vue
- VUE全家桶之vuex的使用Vue
- Vue3 全家桶,從 0 到 1 實戰專案,新手有福了Vue
- Vue全家桶高仿網易雲音樂mac客戶端版(可能是西湖區最精美的web pc音樂播放器)VueMac客戶端Web播放器
- 高仿網易雲音樂 Vue前端專案Vue前端
- VUE 全家桶 vue-cli 2 | vue-cli 3Vue
- Vue2.x全家桶WebAppVueWebAPP
- Vue 3.0 全家桶搶先體驗Vue
- 可能是 GitHub 上第一款 Vue 全家桶 + TypeScript 的完整專案GithubVueTypeScript
- VUE全家桶之vuex核心原理解析Vue
- vue全家桶實現一個小商城Vue
- SwnoRabbit全家桶
- 基於vue-cli@3+vue全家桶仿小米商城Vue
- React全家桶構建一款Web音樂App實戰(四):專輯頁開發及其動畫實現ReactWebAPP動畫
- react全家桶實現招聘app-專案準備(一)ReactAPP
- React全家桶構建一款Web音樂App實戰(九):皮膚切換ReactWebAPP
- vue2.0全家桶實現vivo商城 shopVue
- Vue全家桶模仿閒魚移動端AppVueAPP
- 一個簡單的假vue全家桶(vue+vue-router+require)VueUI
- React全家桶構建一款Web音樂App實戰(八):搜尋功能開發ReactWebAPP
- Vue全家桶+Echarts資料視覺化實踐VueEcharts視覺化
- 基於vue全家桶實現的簡易商城Vue