热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用SprocketsProcessor剔除CSS中的GoogleFont【HTML】

web前端|html教程使用SprocketsProcessor剔除CSS中的GoogleFontweb前端-html教程使用Rails做Web应用时,基本上都会遇到使用第三方前端

web前端|html教程使用 Sprockets Processor 剔除 CSS 中的 Google Font【HTML】
使用 Sprockets Processor 剔除 CSS 中的 Google Font
web前端-html教程
使用 Rails 做 Web 应用时,基本上都会遇到使用第三方前端组件的情况,相比于自己手动 Copy 组件的文件到 Assets 中,使用一些别人封装好的 Gem,或者借助 bower-rails等工具,可以更省心的管理这些依赖文件。
澳门娱乐场源码,ubuntu免密码启动,tomcat临时文件作用,python 爬虫高并发,php 扫描器源代码,云浮seo技术lzw
一些组件的 CSS 中可能通过一些 CDN @import 引入一些依赖,比如 Google Fonts。这对开发者来说,本来是件极便利的事,但因为一些众所周知的原因,一些通过 URL 引入的样式文件无法访问或者访问很慢,而样式一般是在网页头部引入,这导致整个网页加载异常缓慢,因为无法访问的样式表请求一直 Block 在那里,直到出错或者加载完成。
房产中介 php源码,vscode娱乐插件,Ubuntu动态网站设计,查找tomcat 进程,sqlite会自带吗,ajax其他插件加载不到,若依框架前端容器,爬虫实时监控教程,小说源码php,重庆seo新手入门教程,视频网站模板php,html网页图片框架代码作业,静态商城wap模板,jquery 页面获取焦点,高校人力资源管理系统源代码,共享文档程序源码lzw

@import url('https://fonts.googleapis.com/css?family=Open+Sans');

以前我的做法是 Fork 组件的代码,从中去除这些影响访问的资源引入,然后通过 GIT 地址引入到项目中,但这样做非常不优雅:

网站源码交流平台,ubuntu修改系统日志,tomcat64后台账号,python爬虫怎么修复,用DW写php代码表单,SEO快学lzw
一个项目用的第三方组件可能很多,一个个 Fork 很费事 通过 Git 引入的依赖在安装时一般很慢,这一定程度上影响了部署的速度 不能及时更新组件的新版本

怎么办呢?在查阅了 Sprockets 的资料后,发现有个叫 Processor的东西,似乎能派上用场。Processor 的 call方法可以返回一个包含 :data的 Hash,用于传递处理过的 Asset 内容到下一个 Processor。

def self.call(input) input[:cache].fetch("my:cache:key:v1") do # Remove all semicolons from source input[:data].gsub(";", "") endend

注:直接返回字符串相当于返回 { data: str }

这下有得玩了!

class ChinaSprocketsProcessor GOOGLE_FONT_PAT = /@import\s+url\(.*?googleapis.*?\);?/ BOOTCDN_PAT = /@import\s+url\(.*?bootstrapcdn.*?\);?/ def self.call(input) data = input[:data].gsub(GOOGLE_FONT_PAT, '').gsub(BOOTCDN_PAT, '') { data: data } endendSprockets.register_postprocessor 'text/css', ChinaSprocketsProcessor

将这段代码添加到 config/initializers/assets.rb中,这样 CSS 文件中 googleapis 的引用和 bootstrapcdn 的引用都会被干掉了,既不用自己修改组件的代码,还符合了国情,真是太好了:clap|type_1_2:。


推荐阅读
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文详细说明了在JavaScript中解决alert弹出窗口文本换行问题的方法。通过给alert弹出的文本添加换行符,可以实现在弹窗中显示多行文本的效果。同时,提供了相关代码示例和注意事项,帮助读者更好地理解和应用这一解决方法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
author-avatar
属于小草的树洞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有