傳說中的vue 全家桶 :vue + vue-router + vuex css
一、構建新項目(基於webpack 3.8.1,前提安裝node環境)html
$ npm install --global vue-cli $ vue init webpack my-project $ cd my-project $ npm install $ npm run dev
注意:進行項目建立和初始化以後是沒有一些依賴包的,目錄中的node_moduless文件夾是沒有的,這個時候咱們就要進入項目的目錄下,使用"npm install"來初始化依賴包,初始化須要的包都在package.json裏面設置好了。
二、vue-loadervue
vue-loader其實就是一個webpack的loader。用來把vue組件轉換成可部署的js,html,css模塊。若是要想在vue項目中使用scss,要告訴vue-loader怎麼樣解析個人scss文件。node
在webpack中,全部預處理器都要匹配相應的loader,vue-loader容許其餘的webpack loader處理組件中的代碼,而後它根據lang屬性自動判斷出要使用的loaders。 由於在新版本的vue-cli已經幫咱們把sass-loader配置好了,放在了util.js裏面。 因此無需在webpack.base.config.js對scss進行配置,只要安裝處理sass/scss的loader,就能在vue中使用scss了。webpack
(1)、Vue對scss的依賴git
①、首先安裝依賴web
$ npm install node-sass --save-dev $ npm install sass-loader --save-dev
②、在須要用到scss的地方標註:vue-router
<style lang="scss"> </style>
三、配置文件vuex
(1)、解釋一下webpack.base.config.js,webpack.base.conf.js是一個基礎的的環境配置文件,裏面包含各個環境(包括開發環境,生產環境,測試環境)都須要的配置,即公用部分。好比說入口文件和輸出文件這類,而後開發環境的webpack.dev.conf.js中開頭位置有這麼一句:
const devWebpackConfig = merge(baseWebpackConfig, // 將 webpack.dev.conf.js 的配置和 webpack.base.conf.js 的配置進行合併,這樣重複的配置代碼就不用寫兩次了。vue-cli
(2)、使用兩個獨立的Webpack配置文件,一個用於開發(webpack.dev.conf.js),另外一個用於生產(webpack.prod.conf.js),共用的配置部分放在webpack.base.conf.js中。
(3)、在build/build.js文件中定義變量:process.env.NODE_ENV = 'production'(在使用webpack和vue-cli構建的項目中,Vue會根據 process.env.NODE_ENV 決定是否啓用生產環境模式,默認爲開發模式)
四、項目結構
(1)、總體項目目錄
--build --config --dist //npm run build 以後再生成的目錄 --src --components // 存放組件 --page //頁面組件,由vue-router引入 --router //路由 --store // 數據流管理 main.js //入口文件 app.vue //主組件 --static //靜態文件目錄 .babelrc .gitignore //git忽略上傳文件 index.html //靜態文件入口 package.json //配置文件
(2)、main.js文件
import Vue from 'vue'; import App from './App'; import router from './router'; Vue.config.productionTip = false; //開啓debug模式 Vue.config.debug = true new Vue({ el: '#app', router, // 建立和掛載根實例。記得要經過 router 配置參數注入路由 template: '<App/>', components: { App }, });
(3)、app.vue文件
app.vue是咱們的主組件,全部頁面都是在App.vue下進行切換的,app.vue在全部頁面都有,一般將公用的組件放在裏面
<template> <div id="app"> <main-header></main-header> <mainSidebar/> <!-- Content Wrapper. Contains page content --> <router-view></router-view> <!-- /.content-wrapper --> <MainFooter/> </div> </template>
五、npm run build 後生成的dist文件訪問本地static路徑下的data.json數據有問題,須要修改productionSourceMap屬性爲false
module.exports = { build:{ assetsSubDirectory: 'static', //修改這裏成你項目放置靜態文件的目錄 assetsPublicPath: './', //修改這裏成你項目放置靜態文件的目錄 productionSourceMap: false //修改成false } }
六、異步DOM更新
若是須要拿到更新後dom中的數據,則須要經過 Vue.nextTick(callback),在DOM更新後,執行某個操做(屬於DOM操做)
實例調用vm.$nextTick(function () {})
methods: { fn() { this.msg = 'change' this.$nextTick(function () { console.log('$nextTick中打印:', this.$el.children[0].innerText); }) } }