工欲善其事必先利其器,咱們的學習計劃從學會搭建Vue所須要的環境開始,node和npm的環境不用說是必須的,如今前端流程化很熱門,基本上新的技術都會在這套流程的基礎上作開發,咱們只須要站在巨人的XX上裝*就能夠了。我假設你的機子上已經有了最新的node和npm了,那咱們就只須要執行如下命令:php
$ npm install -g vue-cli
構建完了以後,隨便進入一個咱們事先準備好的目錄,好比demo目錄,而後在目錄中作初始化操做:css
$ vue init webpack vue-cli-demo
webpack
參數是指vue-cli-demo
這個項目將會在開發和完成階段幫你自動打包代碼,好比將js
文件統一合成一個文件,將CSS
文件統一合併壓縮等。html
init
(初始化)的過程當中會問你給項目定義一些描述,版本之類的信息,能夠無論,一直輸入y肯定跳過,完成以後出現如下界面,部分會提示你接下來要作的操做,按照它的提示繼續敲代碼就對了。
同時獲取信息:前端
npm i -S axios vue-axios
cd vue-cli-demo npm install npm run dev
npm install 是安裝項目所須要的依賴,簡單理解就是安裝一些必要的插件,須要等一段時間;vue
一樣也可使用
yarn
npm run dev 是開始執行咱們的項目了,一旦執行這個命令以後,等一小會,瀏覽器應該會自動幫你打開一個tab爲http://localhost:8080/#/或者http://127.0.0.1:8080/#/的連接,這個連接就是咱們本地開發的項目主頁了,若是沒有,說明出錯了。請移步到評論區回覆吧。。。node
看看Vue都給咱們生成一些什麼文件:jquery
yarn npm包管理工具(facebook)webpack
README.md 一般全部項目的說明文件ios
package.json 維護包管理的配置文件,包括版本git
index.html 首頁
.postcssrc.js postcss的配置
.gitignore git的忽略文件列表
.eslintrc.js 代碼檢查配置文件
.eslintignore 代碼檢查忽略文件
.editorconfig 編輯器的配置文件
.babelrc babel的配置文件
static 網站的靜態資源
src 源代碼
src/assets 資源(能夠預處理)
src/components 組件目錄
src/router 路由
src/App.vue 根組件
src/main.js 入口文件
config 配置目錄
build 構建工具相關
test 測試目錄
test/unit 單元測試
test/e2e 端對端測試
dist 打包後的目標代碼
這其中咱們須要關注的是如下文件
package.json保存一些依賴信息,config保存一些項目初始化配置,build裏面保存一些webpack的初始化配置,index.html是咱們的首頁,除了這些,最關鍵的代碼都在src目錄中,index在不少服務器語言中都是預設爲首頁,像index.htm,index.php等;打開build目錄中的webpack.base.conf.js,會看到這樣的代碼
module.exports = { entry: { app: './src/main.js' } }
說明咱們的入口js文件在src目錄中的main.js,接下來咱們就分析下這些初始化代碼先;
Vue的核心架構,按照官方解釋和我的理解,主要在於組件和路由兩大模塊,只要理解了這兩大模塊的思想內容,剩下API使用就只是分分鐘的事情了。
因是潛入咱們只關注src裏的文件便可開發簡單應用
首先是src
下的main.js
:
// The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import router from './router' import Axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, Axios) Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', router, template: '<App/>', components: { App } })
import Vue from 'vue'
這句很好理解,就像你要引入jQuery同樣,vue就是jquery-min.js,而後Vue就是$;而後又引入了./App文件,也就是目錄中和main.js同級的App.vue文件;在Vue中引入文件能夠直接用import,文件後綴名能夠是.vue,這是Vue本身的文件類型,以前說的webpack會將js和css文件打包,一樣的道理,在webpack中配置vue插件後(項目默認配置),webpack就能夠將.vue類型的文件整合打包,這和nodeJs中require差很少的道理。一樣相似於<script>加載其餘文件
import App from './App' import router from './router'//引入路由備置
這兩句類似,都是獲取當前目錄下文件
import Vue from 'vue' import App from './App'/*引入App這個組件*/ import router from './router'/*引入路由配置*/ import Axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, Axios) Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app',/*最後效果將會替換頁面中id爲app的div元素*/ router,/*使用路由*/ template: '<App/>',/*告知頁面這個組件用這樣的標籤來包裹着,而且使用它*/ components: { App }/*告知當前頁面想使用App這個組件*/ })
Vue.config.productionTip = false
阻止生產提示出現/* eslint-disable no-new */
阻止eslint檢測如下代碼的格式
好了,如今打開咱們的App.vue文件,在Vue中,官網叫它作組件,單頁面的意思是結構,樣式,邏輯代碼都寫在同一個文件中,當咱們引入這個文件後,就至關於引入對應的結構、樣式和JS代碼,這不就是咱們作前端組件化最想看到的嗎,從前的asp、php也有這樣的文件思想。
<template> <div id="app"> <img src="./assets/logo.png">//從src中的assets資源包中獲取資源圖片 <router-view></router-view>//輸出端口 </div> </template> <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>
同時涉及到路由
<router-view></router-view>
這句代碼在頁面中放入一個路由視圖容器,當咱們訪問http://localhost:8080/#/about/的時候會將about的內容放進去,訪問http://localhost:8080/#/recruit的時候會將recruit的內容放進去
前面說的src/main.js中有一句引入路由器的代碼。
import router from './router'
如今就讓咱們打開router
目錄下的js
文件。
import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/Hello'//@別名至關於src Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Hello', component: HelloWorld } ] })
前面先引入了路由插件vue-router
,而後顯式聲明要用路由 Vue.use(Router)
。注意到Hello,About等都是頁面(也能夠是組件),接着註冊路由器,而後開始配置路由。
路由的配置應該一目瞭然,給不一樣的path分配不一樣的頁面(或組件,頁面和組件實際上是同樣的概念),name參數不重要只是用來作識別用的。看到這裏就能夠明白,前面說的紅色框的內容,其實就是Hello裏面的內容,打開components
目錄下的HelloWorld.vue
就能明白了。
// build for production with minification //構建產品壓縮 npm run build //build for production and view the bundle analyzer report //構建產品並查看包分析器報告 npm run build --report
config
判斷是否上線,加載的資源不一樣
搭建環境
代碼邏輯
單頁面組件(簡單帶過)
路由
子路由
以上的流程就是咱們剛開始接觸Vue時候的簡單介紹,在以前就說過學習Vue能掌握組件和路由的基本概念以後,對於咱們後續瞭解他的工做機制有着很大的幫助,本篇章咱們只是簡單介紹了單頁面組件。