@Vue項目結構解析javascript
create by db on 2019-1-10 16:28:10
Recently revised in 2019-1-15 11:46:47css
Hello 小夥伴們,若是以爲本文還不錯,麻煩點個贊或者給個 star,大家的贊和 star 是我前進的動力!GitHub 地址html
查閱網上諸多資料,並結合本身的學習經驗,寫下這篇Vue學習筆記,以記錄本身的學習心得。現分享給你們,以供參考。前端
做爲一隻前端菜鳥,這是我掘金分享的第五篇文章。若有不足,還請多多指教,謝謝你們。vue
在上一篇項目搭建文章中,咱們已經下載安裝了node環境以及vue-cli,而且已經成功構建了一個vue-cli項目——見Vue小白課(一)——CLI搭建項目(Vue2.x)。那麼接下來,咱們來梳理一下vue-cli項目的結構。java
參考文獻:node
├── build --------------------------------- 項目構建(webpack)相關配置文件,配置參數什麼的,通常不用動
│ ├── build.js --------------------------webpack打包配置文件
│ ├── check-versions.js ------------------------------ 檢查npm,nodejs版本
│ ├── dev-client.js ---------------------------------- 設置環境
│ ├── dev-server.js ---------------------------------- 建立express服務器,配置中間件,啓動可熱重載的服務器,用於開發項目
│ ├── utils.js --------------------------------------- 配置資源路徑,配置css加載器
│ ├── vue-loader.conf.js ----------------------------- 配置css加載器等
│ ├── webpack.base.conf.js --------------------------- webpack基本配置
│ ├── webpack.dev.conf.js ---------------------------- 用於開發的webpack設置
│ ├── webpack.prod.conf.js --------------------------- 用於打包的webpack設置
├── config ---------------------------------- 配置目錄,包括端口號等。咱們初學可使用默認的。
│ ├── dev.env.js -------------------------- 開發環境變量
│ ├── index.js ---------------------------- 項目配置文件
│ ├── prod.env.js ------------------------- 生產環境變量
│ ├── test.env.js ------------------------- 測試環境變量
├── node_modules ---------------------------- npm 加載的項目依賴模塊
├── src ------------------------------------- 咱們要開發的目錄,基本上要作的事情都在這個目錄裏。
│ ├── assets ------------------------------ 靜態文件,放置一些圖片,如logo等
│ ├── components -------------------------- 組件目錄,存放組件文件,能夠不用。
│ ├── main.js ----------------------------- 主js
│ ├── App.vue ----------------------------- 項目入口組件,咱們也能夠直接將組件寫這裏,而不使用 components 目錄。
│ ├── router ------------------------------ 路由
├── static ---------------------------- 靜態資源目錄,如圖片、字體等。
├── .babelrc--------------------------------- babel配置文件
├── .editorconfig---------------------------- 編輯器配置
├── .gitignore------------------------------- 配置git可忽略的文件
├── index.html ------------------------------ 首頁入口文件,你能夠添加一些 meta 信息或統計代碼啥的。
├── package.json ---------------------------- node配置文件,記載着一些命令和依賴還有簡要的項目描述信息
├── .README.md------------------------------- 項目的說明文檔,markdown 格式。想怎麼寫怎麼寫,不會寫就參照github上star多的項目,看人家怎麼寫的
複製代碼
在webpack的配置文件裏,設置了main.js是入口文件,咱們的項目默認訪問index.html,這個文件裏面<div id="app"></div>
和App.vue組件裏面的容器完美的重合了,也就是把組件掛載到了index頁面,而後咱們只須要去建設其餘組件就行了,在App組件中咱們也能夠引入,註冊,應用其餘組件,能夠經過路由將其餘組件渲染在App組件,這樣咱們就只須要去關注每一個組件的功能完善。webpack
就是說vue的默認頁面是index.html,index中的<div id="app"></div>
掛載了App.vue這個大組件,而後全部的其餘子組件(hello.vue等)都歸屬在App.vue這個主組件下。git
在vue-cli的項目中,其中src文件夾是必需要掌握的,由於基本上要作的事情都在這個目錄裏。es6
index.html如其餘html同樣,但通常只定義一個空的根節點,在main.js裏面定義的實例將掛載在根節點下,內容都經過vue組件來填充
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vuedemo</title>
</head>
<body>
<!-- 定義的vue實例將掛載在#app節點下 -->
<div id="app"></div>
</body>
</html>
複製代碼
一個vue頁面一般由三部分組成:模板(template)、js(script)、樣式(style)
<!-- 模板 -->
<template>
<div id="app">
<img src="./assets/logo.png">
<router-view></router-view>
</div>
</template>
<!-- script -->
<script> export default { name: 'app' } </script>
<!-- 樣式 -->
<style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
複製代碼
【template】
其中模板只能包含一個父節點,也就是說頂層的div只能有一個(例如上面代碼,父節點爲#app的div,其沒有兄弟節點)
<router-view></router-view>
是子路由視圖,後面的路由頁面都顯示在此處
打一個比喻吧,<router-view>
相似於一個插槽,跳轉某個路由時,該路由下的頁面就插在這個插槽中渲染顯示
【script】
vue一般用es6來寫,用export default
導出,其下面能夠包含數據data,生命週期(mounted等),方法(methods)等,具體語法請看vue.js文檔。
【style】
樣式經過style標籤包裹,默認是影響全局的,如需定義做用域只在該組件下起做用,需在標籤上加scoped.
<style scoped></style>
如要引入外部css文件,首先需給項目安裝css-loader依賴包,打開cmd,進入項目目錄,輸入npm install css-loader
,回車。
安裝完成後,就能夠在style標籤下import所需的css文件,例如:
<style>
import './assets/css/public.css'
</style>
複製代碼
main.js主要是引入vue框架,根組件及路由設置,而且定義vue實例,下面的 components:{App}
就是引入的根組件App.vue
後期還能夠引入插件,固然首先得安裝插件。
/*引入vue框架*/
import Vue from 'vue'
/*引入根組件*/
import App from './App'
/*引入路由設置*/
import router from './router'
/*關閉生產模式下給出的提示*/
Vue.config.productionTip = false
/*定義實例*/
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App }
})
複製代碼
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將路徑和組件映射起來。
router文件夾下,有一個index.js,即爲路由配置文件。
/*引入vue框架*/
import Vue from 'vue'
/*引入路由依賴*/
import Router from 'vue-router'
/*引入頁面組件,命名爲Hello*/
import Hello from '@/components/Hello'
/*使用路由依賴*/
Vue.use(Router)
/*定義路由*/
export default new Router({
routes: [
{
path: '/',
name: 'Hello',
component: Hello
}
]
})
複製代碼
這裏定義了路徑爲'/'的路由,該路由對應的頁面是Hello組件,因此當咱們在瀏覽器url訪問http://localhost:8080/#/時就渲染的Hello組件
相似的,咱們能夠設置多個路由,‘/index’,'/list'之類的,固然首先得引入該組件,再爲該組件設置路由。
主要包括webpack的配置,項目配置,項目依賴等等。
詳情可參考如下文章:
這是我本身作的一個vue模板文件,符合Eslint規則
<!-- -->
<template>
<div/>
</template>
<script> // 這裏能夠導入其餘文件(好比:組件,工具js,第三方插件js,json文件,圖片文件等等) // 例如:import 《組件名稱》 from '《組件路徑》' export default { // import引入的組件須要注入到對象中才能使用 components: {}, data() { // 這裏存放數據 return { } }, // 監聽屬性 相似於data概念 computed: {}, // 監控data中的數據變化 watch: {}, // 生命週期 - 建立完成(能夠訪問當前this實例) created() { }, // 生命週期 - 掛載完成(能夠訪問DOM元素) mounted() { }, beforeCreate() {}, // 生命週期 - 建立以前 beforeMount() {}, // 生命週期 - 掛載以前 beforeUpdate() {}, // 生命週期 - 更新以前 updated() {}, // 生命週期 - 更新以後 beforeDestroy() {}, // 生命週期 - 銷燬以前 destroyed() {}, // 生命週期 - 銷燬完成 activated() {}, // 若是頁面有keep-alive緩存功能,這個函數會觸發 // 方法集合 methods: { } } </script>
<style lang='less' scoped> //@import url(); 引入公共css類 </style>
複製代碼
vue-cli給建立vue項目提供了很大的便利。可是同時大量的第三方庫的使用,會讓打包後的js變的很大,因此仍是要熟悉配置,熟悉第三方插件的使用,才能夠開發更高效的開發web應用。這裏把vue-cli的一些相關內容給本身作一個總結,便於之後查閱。也是但願對其餘開發者有幫助。有不足之處請指正。
路漫漫其修遠兮,與諸君共勉。
祝你們2019更上一層樓!
後記:Hello 小夥伴們,若是以爲本文還不錯,記得點個贊或者給個 star,大家的贊和 star 是我編寫更多更豐富文章的動力!GitHub 地址
db 的文檔庫 由 db 採用 知識共享 署名-非商業性使用-相同方式共享 4.0 國際 許可協議進行許可。
基於github.com/danygitgit上的做品創做。
本許可協議受權以外的使用權限能夠從 creativecommons.org/licenses/by… 處得到。