Vue.component
用於註冊全局組件上面這兩句話很常見......嗯,下面就從vue組件開始一場vue的學習之旅吧。css
建立Vue組件很簡單,只須要聲明一個組件對象字面量,而後安裝到vue實例上(局部安裝或者全局安裝)。
將組件聲明爲對象字面量的形式,必有屬性是template
,還要渲染數據data
吧,或者還須要父組件傳遞數據的接口props
,而後一個比較完備的組件就聲明好了。html
// 組件聲明(爲對象) var myComponent = { template: '<div>this is a component</div>', data: function() { return { message: 'this is within the component' } }, props: ['name'] } // 簡要分析一下:組件是對象,內部屬性使用data定義,可接受父組件傳過來的值,使用props聲明。 // 全局註冊 // 須要在Vue實例化以前進行 // 聲明完再安裝 Vue.component('hello', myComponent); // 局部註冊 new Vue({ el: '#app', components: { 'hello': myComponent } })
組件的prop可設置驗證,即規定prop的類型,只有知足類型說明的才能正常接受數據。這個時候,props使用對象進行聲明,而再也不使用數組的形式。改寫上面的例子:前端
var myComponent = { template: '<div>this is a component</div>', data: function() { return { message: 'this is within the component' } }, props: { name: String } }
感慨:我以爲我抓不住點,朦朦朧朧地,總感受還差一點什麼。子組件和父組件,應該就是子類和父類的區別。子類在建立的時候,須要傳入一組參數實現specialization。vue
總結:node
parameters
)父組件向子組件能夠直接傳入字符串,或者經過屬性傳入,以下所示:webpack
<hello name="luuuuu"></hello> // 'luuuuu' 是字符串 <hello :name="toChild"></hello> // toChild 是變量
import Second from './second.vue' export default { data () { return { msg: "Second Component", toChild: "xiaoluu" }; }, components: { Second } }
export default
出來的是組件的配置對象,也就是上面提到的parameters
vue-loader
加載.vue
組件文件vue組件中用到了es6的語法,包括import
和export
,模塊的引入和輸出須要它們聲明。
模塊是局部的,有做用域限制。一般,由模塊向外暴露function
, object
還有 primitive values
等,繼而被其餘模塊引入調用。
模塊中,使用export
暴露,使用import
引入。export default
表示只暴露出一個接口,能夠是初始值,能夠是函數,能夠是類,能夠是對象,等等等。vue components單組件模塊中暴露的是一個對象(組件聲明的參數對象,用來描述component的對象字面量)。git
// export // export有兩種方式:定義後當即調用;先定義後調用(模塊名稱須要使用 { } 包裹) export { myFunction } export { myObject } export default {} export const myObject = {} export function () {} // import import defaultModule from './base' import {boo, foo} from './base' import {boo as haa} from './base'
import, export和require, module.exports, exports的區別es6
相信,這兩組語法不少人都遇到過,並且也會被其所困擾,功能是同樣的,可是比較奇怪的是,有時候就是不能替換使用,爲何呀?
import 和 export 是es6模塊語法,而 require 和 module.exports, exports 是Commonjs的模塊規範。
若是想了解更多關於這二者的區別和使用方法,能夠參考這篇文章:module.exports,exports,export和export default,import與require區別與聯繫。簡要提點(絕大部分摘自上述博文):web
- 在
module.exports
中,module
指當前模塊,其爲對象,有屬性exports
,模塊輸出,都是掛載到module.exports
上輸出的;使用require
加載模塊,其實是加載該模塊的module.exports
屬性。- 其實
exports
變量是指向module.exports
,加載模塊實際是加載該模塊的module.exports
。- 因而咱們能夠直接在
exports
對象上添加方法,表示對外輸出的接口,如同在module.exports
上添加同樣。注意,不能直接將exports
變量指向一個值,由於這樣等於切斷了exports
與module.exports
的聯繫。(相似於function
的prototype
屬性)
另外,你可能還會疑惑何時用import
,何時用require
,由於看起來功能都是同樣的。應該是這樣的:前端組件和模塊中,使用import
和export
語法,其他狀況(node開發)使用commonjs語法。(vue組件中使用import語法,可是webpack等其餘配置中使用的是commonjs語法)vue-cli
咔咔地就到了vue腳手架這裏~ 對腳手架裏面的配置文件仍是須要了解一下的~
參考這裏的配置說明博客:vue2.0腳手架的webpack 配置文件分析
如下內容是個人讀後感:
copy-webpack-plugin
插件)。webpack.optimize.UglifyJsPlugin
, optimize-css-assets-webpack-plugin
),靜態資源版本控制(我猜的~~),服務器gzip壓縮(compression-webpack-plugin
)等。webpack和vue components結合使用,圖片的引入和路徑問題。
#HTML <img :src="'./' + imgUrls.demo01" alt="demo"> // 本地可正常打開 <img :src="imgUrls.demo01" alt="demo"> // 配置服務器後正常打開 #JS import demo01 from './1.jpg' export default { data () { return { imgUrls:{ demo01 } }; } }