Vue2.0構建——踩過的坑

vue.js 初步學習

傳說中的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);
    })
  }
}
相關文章
相關標籤/搜索