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月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
189 0
|
9月前
|
Web App开发 缓存 JavaScript
Node.js安装及环境配置,详细简单易懂!一文get全部!
Node.js安装及环境配置,详细简单易懂!一文get全部!
|
8月前
|
JavaScript Shell 开发者
怎样使用Nest.js快速构建高效Node.js应用?
这篇博客介绍了Nest.js,一个基于TypeScript的Node.js框架,适用于构建可维护和可扩展的服务器端应用。文章引导读者快速入门,包括安装Node.js和Nest.js CLI,创建新项目,安装依赖以及启动开发服务器。通过访问`http://localhost:3000`,可以看到&quot;Hello World!&quot;,证明应用已成功运行。Nest.js因其模块化架构和强大的功能,成为现代Web开发的热门选择。
114 0
|
9月前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
423 3
|
9月前
|
JavaScript Java UED
详细介绍 Node.js JXcore 打包的使用方法和优势
详细介绍 Node.js JXcore 打包的使用方法和优势
156 0
|
9月前
|
JavaScript 前端开发 算法
【从0配置JAVA项目相关环境2】node.js + 前端 从配置到运行
【从0配置JAVA项目相关环境2】node.js + 前端 从配置到运行
155 0
|
存储 前端开发 JavaScript
|
弹性计算 JavaScript 前端开发
前端开发基础6:Node.js和LESS预编译工具
本实验将介绍如何通过Node.js进行前端预编译。
|
JavaScript 前端开发
node.js入门学习(1): 让phpstorm配置支持ES语法,箭头函数正常代码格式化
node.js入门学习(1): 让phpstorm配置支持ES语法,箭头函数正常代码格式化
144 0
|
JSON JavaScript 前端开发
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】
JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】

热门文章

最新文章