一般在vue项目开发时会用webpack 模块化开发,它和在页面里引用vue 的写法还是有区别的
webpack 配合:
一般都是在webpack.config.js配置编译的js
也就是entry 内,通常是app.js,output里配置输出位置
在输出目录内创建html,引用生成的js即可
app.js:
它是就是require引用vue ,vue-router,vue-resource 等
然后引入全局组件,过滤器,还有路由配置js
还有默认的app.vue 组件,
最后router.start(app,el)
app.vue:
它就是一个组件,
由<style> <template> <script>组成,可以定义样式,模板,和组件模块
组件由module.exports={}来返回一个对象
有时需要在模块里使用Vue,那么怎么办呢?
当然是require引用,然后使用了
这里引用的Vue和app.js里配置扩展的一样吗?
当然一样了,app.js里为Vue添加的属性方法,都可以访问到
整个项目里require引用的vue都是一个对象。
当然组件模块里如果不引用是访问到不了Vue的。
module对象内可以用this来访问vue实例对象上的原型方法
全局组件:
引用vue 和组件模块,用Vue.commponent(name,require('..')
注入到全局上,在app.js 里直接引用此js。这样项目中都可以用全局组件了
vue扩展:
1,引用的Vue是一个构造函数,可以在其上添加静态属性或方法。
Vue.webpack={};
在其他模块里引用的Vue就可以使用了。
全局vue的组件 指令 过滤器用此来实现 的。
2,还可以为其原型添加属性或方法,这样new Vue() 实例化的对象就可以访问原型属性、方法了
Vue.prototype.getname=function(){
console.log('getname')
}
var v=new Vue({
el:'#app2',
ready:function(){
this.getname();
}
})
v.getname()
会输出两次getname,对其对象或this都可以访问
当然model定义的组件对象也可用this来访问
3、还有一种写法
js 模块返回一个函数,参数vue。app.js引用了调用此函数,把vue 传递,内部扩展vue
module=function(vue){
vue.xx
}
这种写法是可以的,但是Vue为我提供了一个实现的方法,Vue.use(fn|obj)
它参数是对象或方法。
如果是方法它会把vue当参数传递
如果是对象会调用其上的install 方法,把vue传递,第二参数为optins配置对象