grunt-inline:一个资源内嵌插件
一、插件简介
将引用的外部资源,如js
、css
、img
等,内嵌到引用它们的文件里去。
二、使用场景
在项目中,出于某些原因,有的时候我们需要将一些资源,比如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>
写在后面
限于篇幅,这里就只简单介绍了下grunt inline
的简单使用以及配置,详细文档请参考 https://www.npmjs.org/package/grunt-inline
如有问题反馈或建议,可点击这里 https://github.com/chyingp/grunt-inline/issues?state=open
grunt-inline:一个资源内嵌插件的更多相关文章
- .NET Core的文件系统[4]:由EmbeddedFileProvider构建的内嵌(资源)文件系统
一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取内嵌于某个程序集中的资源文件,不过在这之前我们必须知道如何将一个项目文 ...
- Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly
注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...
- 由EmbeddedFileProvider构建的内嵌(资源)文件系统
由EmbeddedFileProvider构建的内嵌(资源)文件系统 一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取 ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- 《Programming WPF》翻译 第3章 3.内嵌控件
原文:<Programming WPF>翻译 第3章 3.内嵌控件 WPF提供了一系列内嵌控件.其中大多数符合标准的你已经熟悉的Windows控件类型.注意到没有一个是包装在旧的Win32 ...
- OD 实验(十四) - 内嵌补丁
内嵌补丁(inline patch): 内嵌补丁指在程序文件中把补丁代码写入文件里面达到破解的目的 如果修改某行语句会影响后面的语句,例如某语句占用 3 个字节,修改完变为 5 个字节,会覆盖后面的语 ...
- [ASP.NET Core 3框架揭秘] 文件系统[4]:程序集内嵌文件系统
一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以采用统一的编程方式来读取内嵌的资源文件,该类型定义在 "Microsoft.Ex ...
- Makefile所有内嵌函数
一.文本处理函数以下是GNU make内嵌的文本(字符串)处理函数.1 $(subst FROM,TO,TEXT) 函数名称:字符串替换函数—subst. 函数功能:把字串“TEXT”中的 ...
- lumisoft.net 邮件管理系列文章 - 如何判断附件为内嵌式还是附加式
如果要区分邮件里面的附件是内嵌图片附件还是真正的附件,那么可以通过下面代码进行判断,如果是MIME_DispositionTypes.Attachment的就是普通附件,MIME_Dispositio ...
随机推荐
- Georgia Tech Online Master of Science in Computer Science 项目经验分享
Georgia Tech Online Master of Science in Computer Science 项目经验分享 Posted on 2014/04/22 项目关键词:工科名校,计算机 ...
- SDN课程作业总结
SDN 期末作业总结 设计场景 我们采用参考场景一,实现负载均衡,拓扑图及端口示意如下: 演示视频 视频地址 关键代码 package loadBalance; import java.io.Buff ...
- spark任务调度和资源分配
Spark调度模式 FIFO和FAIR Spark中的调度模式主要有两种:FIFO和FAIR. 默认情况下Spark的调度模式是FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待 ...
- MUST_COMPLETE
应用: xxx主机: xxx时间: 2018-03-07 04:34:03.887线程: [scheduler-1]级别: ERROR Class: org.springframework.sched ...
- Android4.4 ContentResolver查询图片无效 及 图库删除 增加图片后,ContentResolver不更新的问题解决
问题背景: 参考链接 做了一个图片浏览,用ContentResolver扫描图库照片,且严格按照时间拍摄顺序排好序显示在listview里.如下图所示: 遇到的问题是在4.2的手机上能正常显示,但是新 ...
- IO多路复用select/poll/epoll详解以及在Python中的应用
IO multiplexing(IO多路复用) IO多路复用,有些地方称之为event driven IO(事件驱动IO). 它的好处在于单个进程可以处理多个网络IO请求.select/epoll这两 ...
- openJDK环境搭建编译(fedora)
1.安装VMware VMware-workstation-full-10.0.7-2844087.exe 破解码:HY06L-F334P-9Z6H9-6R2XM-23C6J 安装完成之后, ...
- Tomcat主页404错误
单独启动Tomcat正常,但是通过Eclipse启动(这时启动也是正常的)后,访问Tomcat主页报404错误. 在网上找到了解决办法:http://www.jb51.net/article/8283 ...
- TTL,COMS,USB,232,422,485电平之详细介绍及使用
如有错误敬请指导! 今天来详细介绍一下TTL,COMS,USB,232,422,485电平,以及之间的转换问题. 有些地方的引脚图可能不是规范的,具体引脚以自己的模块资料为主,这篇文章着重介绍使用.. ...
- jqgrid 编辑行、新增行、删除行、保存行
编辑行:$("#jqGrid").jqGrid('editRow', rowKey); 删除行:$("#jqGrid").delGridRow(rowKey); ...