• Webpack 资源内联 如何内联js库、CSS、图片、字体等


    关于资源内联

    代码层面:

    • 页面框架的初始化脚本 如flexible
    • 上报相关打点 css、js的初始化以及加载完成的上报点的代码需要内联到html里面去
    • css内联避免页面闪动 首屏一般会内联css,避免页面闪动(代码层面的体验,初始化的内容)

    请求层面 减少http请求

    • 小图片或者字体内联(url-loader)

    raw-loader内联html和js

    raw-loader原理是返回一个string插入到html

    npm i raw-loader@0.5.1 -D
    

    内联html

    手机端开发的时候有大段meta信息,这个时候每个页面都是需要的,我们可以把meta片段拆出来
    通过raw-loader内联进来

    webpack默认使用EJS模板引擎,可以通过$符号引入

    $(require('raw-loader!./meta.html'))
    

    内联js

    将lib-flexible内联进来,可能需要先加上babel-loader
    raw-loader 源码只有十几行,使用的时候

    <!-- 当前目录相对于node_modules的路径 -->
    ${require('raw-loader!babel-loader!../node_modules/lib-flexible/flexible.js')}
    

    整体示例

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        ${require('raw-loader!./meta.html')}
        <title>Document</title>
        <script>
            ${require('raw-loader!babel-loader!../node_modules/lib-flexible/flexible.js')};
        </script>
    </head>
    
    <body>
        <div id="root"></div>
    </body>
    
    </html>
    

    css内联

    有两种方案

    • style-loader
    • html-inline-css-webpack-plugin 更广泛

    对于style-loader

    {
        loader:'style-loader',
        options:{
            insertAt:'top', // 放在head标签里
            singleton:true // 所有的style标签合并成一个
        }
    }
    
  • 相关阅读:
    Flask之flask-script
    Flask之flask-sqlalchemy
    sqlalchemy之基础操作
    Linux之服务管理
    python之PEP8规范
    app开发-1
    Mongodb之pymongo
    Mongodb之增删改查操作
    Mongodb之数据类型
    linux的virtualenv和virtualenvwarpper
  • 原文地址:https://www.cnblogs.com/ltfxy/p/15328229.html
Copyright © 2020-2023  润新知