理解loader|青训营

28 阅读2分钟

怎么去扩展web。

扩展的方式:loader,插件

loader简单,做的事情是内容的转换。

为什么要做内容转换: CSS,图片这些没办法处理,会报错,需要再添加适当的loader去处理这种文件类型。

例子;只定义一个entry,只定义一个Office,还有另外两个基本属性。在源码里面,此文件去low的,去加载一个input一个list文。无法运行。

Loader的核心功能:把非得的资源转换成一个标准的可以被识别被未被处理的JS的内容,

 

怎么使用load:首先是装各种依赖,各种low的包。其次,在iPad的config文件里面去添加一个model的配置来处理这种不同类型的资源。model配置里特别重要的是一个是use属性。

 

链式调用,为什么有时候需要定义多个loader:因为第一个loader处理的结果会变成第二个loader的输入,前面的输出等于后面的输入。每一个loader做的事情会比较单一,然后内聚的loader的模块通过这种链式的调用聚合到一起就可以完成一件特别复杂的事情。

 

loader在运行的时候会一个一个的逐步去执行每一个loader,这一段逻辑是在loader runner里面写的,在运行一开始的时候会有一个Peach,是根据定义的顺序,从数组项的第一个一直往后执行。正常的执行阶段,它会从最后一个回到第一个。一个loader阶段如果有返回值,它就会停止后面的执行。这个特性特别适合来做catch,比如cache loader就是基于这个特性实现的。

从定义的数组的最后一位一直往前走,然后逐步先是从源码里面读到文件内容,然后输入到最右边的loader。最右边的loader执行完之后把结果再提交到倒数第二个,然后再提交到倒数第三个一直往前走,最后所有的结果都处理完之后会变成一段标准的JavaScript代码,然后再回到Web里面。