console.log('outter1');
export default {
data(){
return {}
};
beforeCreated(){console.log('bc')},
beforeDestory(){console.log('bd')}
}
console.log('outter2')
得到的输出是这样的:
同时发现, 当我路由到其他组件后, 再路由回来时, export default 外的两个console就不会再执行了.
那么, export default 外的这些代码在vue中拥有什么样的生命周期, 在这一块里定义的变量的scope又是什么呢?
以下以
webpack
打包.vue
file为例,并且相对应提到的库或loader名称可能有版本间出入,理解核心即可。vue-loader 把
.vue
文件的拆分为多个部分各自独立编译处理,拆分 template 交给vue的模版编译器,例如
@vue/component-compiler-utils
拆分 script 交给babel,例如
babel-loader
拆分 style 交给对应的预处理器,例如
less-loader
还有自定义custom-block,用的少,不举例。
问题问js,那就说这一块
它最终会被编译为这个样子
至此,这个vue文件中的script模块,变成了一个webpack的模块。
它默默的等待webpack内部处理有朝一日将它引入,引入的方式即为执行这个模块函数.
突有一日,狂风大作,上天传来了对它的召唤
此时,函数被调用,
即解释了export default 外的这些代码在vue中拥有什么样的生命周期
为什么再路由回来时, export default 外的两个console就不会再执行了
因为webpack内部对于模块的引入有缓存,他不会再次执行这个模块函数了,这可能就是渣男吧,已经得到了
它的心
就不会再投入心力了。在这一块里定义的变量的scope又是什么呢
这个应该也不用解释了