关于Vue生命周期模板编译的困惑

我了解到通过vue loader可以进行模板预编译,生成render函数,vue.js里的compiler也可以进行模板预编译。他们的区别是什么呢?我的理解是,默认使用vue loader预编译,配合vue.runtime.js这样打包后的文件体积小,或者使用vue.js里的compiler进行模板预编译,webpack不配置vue loader,这样打包后的文件体积大,因为包含compiler。可以这样理解吗?另外打包后的文件不是都是进行解析编译的嘛?文件只有css,js,html之类的原生文件,怎么在生命周期里初始化指令,数据,我觉得我这里理解肯定有错误,求帮忙指点!!!!

区别

 

webpack loader 主要是用来解析某种类型的文件的

webpack 在没有 loader 的情况下我们只能用下面的语法

引入某个模块,或引入某个js文件

import utl from 'lodash';
import xxx from 'xxx.js';

 

而配置了 vue-loader 之后,使得我们在引入 vue 文件的时候,可以帮我们解析 vue 文件成 js文件。

 

import Component from 'component.vue';

 

也就是说 loader 的作用是帮助 webpack 正确解析引入的文件,告诉webpack 要如何解析。

不然 webpack 并不清楚面对这样的文件的时候他需要干什么。

 

而 loader 本质上是一个只是一个函数而已,如果你需要也可以自己编写。

 

vue-compiler 只是 vue 提供的一个 将 template 转化成 render 函数的模块而已

 

这个模块可能在 vue-loader 中会被使用到,帮助 vue-loader 将 里面的 template 转化为 js代码。