分享

webpack(7) 样式处理和图片处理之手写loader

 小样样样样样样 2022-11-30 发布于北京

一. webpack模块中的require发生的事情:

   webpack模块中的require("xx");与nodejs里的require是不一样的. webpack会在读取后进行loader转换, 再进行抽象语法数分析, 

   比如require("src/assets/index.css") ; webpack中的require会被分析成为依赖函数, 读取参数的文件;

   在webpack读取文件之后, 经过loader后形成转换后的代码, 然后交给内部的AST分析, 然后在形成模块依赖列表;

 

二. 手写cssloader

  根据以上这个流程, 可以自己手写cssloader:

      (1) index.js引入css文件;

      (2)在读取完css文件后,本loader将文件的内容作为一个<style></style>的innerHTML, 然后放到head标签中;

      (3)经过loader处理的css文件会作为 js模块, 将js代码存放到chunk中, 最终和index.js合并打包输出

     (4) html引用的时候会执行输出的index.js, 就执行了这段代码后在页面上渲染.

 //index.js
 import "./src/assets/index.css"; //注意, 这里即使用require, 也和nodejs的require不一样,和commonjs的引入一样,是webpack作为依赖关系确定的标识

 

1 //mycssloader.js
2 module.exports = function(source){
3   var str = `
4   var style = document.createElement("style");
5   style.innerHTML = \`${source}\`;
6   document.head.appendChild(style);
7   `
8   return str;
9 }

webpack.config.js

 

 

 

三.手写

      图片: 页面上的静态img标签, 和 js动态生成的图片document.createElement("img");

              动态图片: ajax从服务器上获取.

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多