zoukankan      html  css  js  c++  java
  • 16-转>webpack原理

    https://www.jianshu.com/p/8dd5885bfb66

    Webpack 输出的 bundle.js 是什么样子的吗? 为什么原来一个个的模块文件被合并成了一个单独的文件?为什么 bundle.js 能直接运行在浏览器中?

    bundle.js能直接运行在浏览器中的原因在于输出的文件中通过webpack_require函数定义了一个可以在浏览器中执行的加载函数来模拟Node.js中的require语句。

    原来一个个独立的模块文件被合并到了一个单独的bundle.js的原因在于浏览器不像Node.js那样快速地去本地加载一个个模块文件,而必须通过网络请求去加载还未得到的文件。如果模块数量很多,加载时间会很长,因此把所有模块都存放到了数组中,执行一次网络加载。

    如果仔细分析webpack_require函数的实现,你还会发现webpack做了缓存优化:执行加载过的模块不会再执行第二次,执行结果会缓存在内存中,当某个模块第二次被访问时会直接去内存中读取被缓存的返回值。


    一个Loader的职责是单一的,只需要完成一种转换。如果一个源文件需要经历多步转换才能正常使用,就需要通过多个loader转换。在调用多个Loader去转换一个文件时,每个Loader会链式的顺序执行,第一个Loader将会拿到需处理的原内容,上一个Loader处理后的结果会传给下一个接着处理,最后的Loader将处理后的最终结果返回给Webpack.

    所以,在拟开发一个Loader时,请保持其职责的单一性,你只需关心输入和输出。


  • 相关阅读:
    第五周学习进度条
    课堂实验4.1(环数组)
    每日站立会议(3)
    每日站立会议(2)
    找水王
    购买一批书的最低价格
    每日站立会议(1)
    NABCD分析
    团队开发博客
    返回一个二维整数数组中的最大子数组之和(环)
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14505621.html
Copyright © 2011-2022 走看看