所謂的模塊化開發是指將不一樣的部分封裝到不一樣的模塊中,再也不將全部的組件、路由等寫在一個頁面中。各模塊各司其職,提升開發效率。css
使用vue-cli
生成的項目目錄裏,咱們主要關注src
目錄。vue
main.js是整個項目的入口文件,vue-cli
自動生成的文件內容以下:webpack
import Vue from 'vue' import App from './App' import router from './router' Vue.config.productionTip = false //生產環境提示,這裏設置成了false,不提示 /* eslint-disable no-new */ new Vue({ el: '#app', router, template: '<App/>', components: { App } })
在這裏引入了路由、App組件,掛載到了根組件。ios
這個是咱們以前提到的單頁面組件。web
<template> <div id="app"> <img src="./assets/logo.png"> <router-view></router-view> </div> </template> <script> export default { name: 'app' } </script> <style scoped> </style>
咱們能夠給樣式加如上的屬性,scoped
表示該樣式只在當前組件中有效,這在模塊化開發中很是有效,不會干擾其餘組件的樣式。vue-router
這是項目的路由文件,存放項目中全部的路由。vue-cli
import Vue from 'vue' import Router from 'vue-router' import Hello from '@/components/Hello' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello } ] })
這裏和咱們以前所學沒什麼不一樣,不過是涉及了很多ES6的知識。npm
官方推薦的axios不像vue-router那樣成熟,目前還不能使用Vue.use()
方法全局使用。element-ui
有兩種解決方案:axios
import axios form 'axios'
Vue.prototype.axios = axios
this.axios.get()
//每一個組件中引入axios axios.get(url) .then( res => { console.log(res); }) .catch( err => { console.log(err); }) //在main.js中全局引入axios並添加到Vue原型中 this.axios.get(url) .then( res => { console.log(res); }) .catch( err => { console.log(err); })
Element UI是餓了麼團隊開源的一套基於Vue2.0的組件庫,能夠快速搭建網站,提升開發效率。
//1. 安裝elment ui cnpm install element-ui -S //2. 在main.js中引入 import ElementUI from 'element-ui' import 'element-ui/lib/theme-default/index.css' //3. 在webpack.base.conf.js中配置loader CSS樣式和字體圖標都須要由相應的loader來加載,因此須要style-loader、css-loader、file-loader 使用less得安裝:less、less-loader
關於具體的使用,在文檔中都有介紹,這裏不贅述。
全局組件(插件):就是指能夠在main.js
中使用Vue.use()
進行全局引入,而後在其餘組件中就均可以使用了,例如vue-router
。
步驟:
index.js
//1. 建立組件(插件) user //2. 編寫index.js文件 import user from './user' export default { install: function(Vue) { Vue.component('User', user); } } //3.在main.js中引入 import User from './components/user' Vue.use(User); //4.在組件中使用 <User></User>