grunt-inline:一个资源内嵌插件

简介:

一、插件简介

将引用的外部资源,如jscssimg等,内嵌到引用它们的文件里去。

二、使用场景

在项目中,出于某些原因,有的时候我们需要将一些资源,比如js脚本内嵌到页面中去。比如我们的html页面中有这么段小脚本,如果这么直接发布到
线上,就会多了一个请求,这从性能优化的角度来说是不合理的。

<script src="js/log.js"></script>

那么,我们需要做的事情,就是在项目发布上线前,将这段脚本嵌入到html页面里去。当然可以手工完成,但维护成本极高。这里可以通过grunt插件来帮我们完成这个工作,只需要一个命令。

grunt inline

下面,简单讲解下grunt-inline的配置和使用。这里假设你对grunt有一定的了解

三、如何使用

这里我们假设项目的目录结构如下

/index.html
/js/log.js

index.html里引用了log.js

<script src="js/log.js"></script>

1、安装插件

npm install grunt-inline --save-dev

2、简单配置

grunt.initConfig({
  inline: { demo: { src: [ 'index.html' ] }
  }
})

3、修改资源引用

很简单,加上个__inline标记,告诉插件说这个资源应用是要嵌入到页面去的

<script src="js/log.js?__inline"></script>

4、执行任务

grunt inline

运行完上面命令,log.js就会被内嵌到index.html里,生成结果如下所示

<script>
// 这段脚本会被内嵌
var Log = {
    init: function(opt) {
        opt = opt || {};
    }
};
</script>

四、更多用法

grunt-inline 除了用来内联js文件外,还可以用来内联css、img文件。除此之外,好支持对内联的js、css文件进行压缩。

1、内联css、img文件

内联css文件

这里有个小细节,当css文件被内联进html页面时,css文件里的图片路径也会转换成相对于html页面的相对路径。

<link rel="stylesheet" href="css/main.css?__inline" />

内联img文件

图片会被转成对应的base64字符串后,内联到页面

<img src="img/bg.png?__inline" />

2、压缩js、css文件

很简单,加上相应的配置就可以

grunt.initConfig({
  inline: {
    demo: {
      options: {
          cssmin: true, // 压缩css文件
          uglify: true  // 压缩js文件
      },
      src: [ 'index.html' ]
    }
  }
});

同样运行grunt inline任务,这次会看到不一样的输出

<script>
var Log={init:function(i){i=i||{}}};
</script>


相关文章
|
6月前
|
敏捷开发 人工智能 前端开发
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
|
前端开发 JavaScript
nuxt项目:css相关插件加载顺序问题【extract-css-chunks-webpack-plugin】
nuxt项目:css相关插件加载顺序问题【extract-css-chunks-webpack-plugin】
253 0
|
3月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
97 0
|
4月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
78 0
|
6月前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
320 3
|
编译器
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
140 0
webpack进阶篇(十五):PostCSS 插件 autoprefixer 自动补齐 CSS3 前缀
webpack进阶篇(十五):PostCSS 插件 autoprefixer 自动补齐 CSS3 前缀
440 0
webpack进阶篇(十五):PostCSS 插件 autoprefixer 自动补齐 CSS3 前缀
|
前端开发 开发者
在项目中为 scss 或 less 文件启用模块化1|学习笔记
快速学习在项目中为 scss 或 less 文件启用模块化1
147 0
在项目中为 scss 或 less 文件启用模块化1|学习笔记
|
前端开发 应用服务中间件
vue-cli 打包找不到 css 资源或者图片资源问题
用vue-cli 开发,要打包了,放到tomcat 上发现css 或者图片加载不出来,控制台一看是资源路径不对 资源是在assets 目录下的 彻底的解决办法 utils.
2030 0
|
前端开发
在项目中为scss或less文件启用模块化
一、思考第三方样式表达问题,如何做 二、在项目中启用模块化并同时使用bootstrap
在项目中为scss或less文件启用模块化
下一篇
无影云桌面