整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

不要再封装各种Util工具类了,这个神级框架值得拥有

不要再封装各种Util工具类了,这个神级框架值得拥有


utool 谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。

Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)

功能

一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类,同时提供以下组件:

  • hutool-aop JDK 动态代理封装,提供非 IOC 下的切面支持
  • hutool-bloomFilter 布隆过滤,提供一些 Hash 算法的布隆过滤
  • hutool-cache 缓存
  • hutool-core 核心,包括 Bean 操作、日期、各种 Util 等
  • hutool-cron 定时任务模块,提供类 Crontab 表达式的定时任务
  • hutool-crypto 加密解密模块
  • hutool-db JDBC 封装后的数据操作,基于 ActiveRecord 思想
  • hutool-dfa 基于 DFA 模型的多关键字查找
  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等)
  • hutool-http 基于 HttpUrlConnection 的 Http 客户端封装
  • hutool-log 自动识别日志实现的日志门面
  • hutool-script 脚本执行封装,例如 Javascript
  • hutool-setting 功能更强大的 Setting 配置文件和 Properties 封装
  • hutool-system 系统参数调用封装(JVM 信息等)
  • hutool-json JSON 实现
  • hutool-captcha 图片验证码实现

简单测试

这两天使用 Hutool 把 Halo 里面的一些代码给替换掉了,不得不说,用起来十分顺心,下面简单介绍一下我用到的一些 Hutool 的工具类。

SecureUtil(加密解密工具)

主要是在登录的时候还有修改密码的时候用到的,因为数据库里面的密码是 md5 加密处理的,所以登录的时候需要先加密之后再到数据库进行查询,使用 Hutool 的话,只需要调用 SecureUtil 中的 md5 方法就可以了。

user=userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));

HtmlUtil(HTML 工具类)

这个工具类就比较厉害了,不过我在 Halo 当中用得最多的还是 HtmlUtil.encode,可以将一些字符转化为安全字符,防止 xss 注入和 SQL 注入,比如下面的评论提交。

comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));

这就是防止有小坏蛋故意写一些可执行的 js 代码,然后提交评论,在后台面板就会执行这一段代码,比较危险,使用 encode 方法就可以将 标签给转化成,这样转化之后,js 代码就不会执行了。

另外,HtmlUtil 还提供了以下方法,有兴趣的可以去试一下。

  • HtmlUtil.restoreEscaped 还原被转义的 HTML 特殊字符
  • HtmlUtil.encode 转义文本中的 HTML 字符为安全的字符
  • HtmlUtil.cleanHtmlTag 清除所有 HTML 标签
  • HtmlUtil.removeHtmlTag 清除指定 HTML 标签和被标签包围的内容
  • HtmlUtil.unwrapHtmlTag 清除指定 HTML 标签,不包括内容
  • HtmlUtil.removeHtmlAttr 去除 HTML 标签中的属性
  • HtmlUtil.removeAllHtmlAttr 去除指定标签的所有属性
  • HtmlUtil.filter 过滤 HTML 文本,防止 XSS 攻击

CronUtil(定时任务)

这个工具就更厉害了,完全不需要类似 quartz 这样的框架来做定时任务,而且 CronUtil 也不需要任何其他依赖,只需要在 resources 下建一个配置文件,然后在程序启动的时候将定时任务开启就行了,如 Halo 的定时备份功能(每天凌晨 1 点备份一次)。

cron.setting:

cc.ryanc.halo.web.controller.admin.BackupController.backupResources=0 0 1 * * ?
cc.ryanc.halo.web.controller.admin.BackupController.backupDatabase=0 0 1 * * ?
cc.ryanc.halo.web.controller.admin.BackupController.backupPosts=0 0 1 * * ?
@Override
public void onApplicationEvent(ContextRefreshedEvent event){
 this.loadActiveTheme();
 this.loadOptions();
 this.loadFiles();
 this.loadThemes();
 //启动定时任务
 CronUtil.start();
 log.info("定时任务启动成功!");
}

具体使用方法请看文档 http://hutool.mydoc.io/?t=255673

好了,就介绍这三个工具类,有兴趣的可以去试试其他的工具,挺全的,这应该是我用过最好用的一个工具类库了,值得一试。

官网地址:http://www.hutool.cn/



者:Ryan Wang

ryanc.cc/archives/hutool-java-tools-lib


简介

Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。

Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)

功能

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

  • hutool-aop JDK动态代理封装,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
  • hutool-cache 缓存
  • hutool-core 核心,包括Bean操作、日期、各种Util等
  • hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
  • hutool-crypto 加密解密模块
  • hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
  • hutool-dfa 基于DFA模型的多关键字查找
  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等)
  • hutool-http 基于HttpUrlConnection的Http客户端封装
  • hutool-log 自动识别日志实现的日志门面
  • hutool-script 脚本执行封装,例如Javascript
  • hutool-setting 功能更强大的Setting配置文件和Properties封装
  • hutool-system 系统参数调用封装(JVM信息等)
  • hutool-json JSON实现
  • hutool-captcha 图片验证码实现

简单测试

这两天使用Hutool把Halo里面的一些代码给替换掉了,不得不说,用起来十分顺心,下面简单介绍一下我用到的一些Hutool的工具类。

SecureUtil(加密解密工具)

主要是在登录的时候还有修改密码的时候用到的,因为数据库里面的密码是md5加密处理的,所以登录的时候需要先加密之后再到数据库进行查询,使用Hutool的话,只需要调用SecureUtil中的md5方法就可以了。

user = userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));

HtmlUtil(HTML工具类)

这个工具类就比较厉害了,不过我在Halo当中用得最多的还是HtmlUtil.encode,可以将一些字符转化为安全字符,防止xss注入和SQL注入,比如下面的评论提交。

comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));

这就是防止有小坏蛋故意写一些可执行的js代码,然后提交评论,在后台面板就会执行这一段代码,比较危险,使用encode方法就可以将<script>标签给转化成<script>,这样转化之后,js代码就不会执行了。

另外,HtmlUtil还提供了以下方法,有兴趣的可以去试一下。

  • HtmlUtil.restoreEscaped 还原被转义的HTML特殊字符
  • HtmlUtil.encode 转义文本中的HTML字符为安全的字符
  • HtmlUtil.cleanHtmlTag 清除所有HTML标签
  • HtmlUtil.removeHtmlTag 清除指定HTML标签和被标签包围的内容
  • HtmlUtil.unwrapHtmlTag 清除指定HTML标签,不包括内容
  • HtmlUtil.removeHtmlAttr 去除HTML标签中的属性
  • HtmlUtil.removeAllHtmlAttr 去除指定标签的所有属性
  • HtmlUtil.filter 过滤HTML文本,防止XSS攻击
  • CronUtil(定时任务)

这个工具就更厉害了,完全不需要类似quartz这样的框架来做定时任务,而且CronUtil也不需要任何其他依赖,只需要在resources下建一个配置文件,然后在程序启动的时候将定时任务开启就行了,如Halo的定时备份功能(每天凌晨1点备份一次)。

cron.setting:

cc.ryanc.halo.web.controller.admin.BackupController.backupResources = 0 0 1 * * ?
cc.ryanc.halo.web.controller.admin.BackupController.backupDatabase = 0 0 1 * * ?
cc.ryanc.halo.web.controller.admin.BackupController.backupPosts = 0 0 1 * * ?


@Override
public void onApplicationEvent(ContextRefreshedEvent event){
    this.loadActiveTheme();
    this.loadOptions();
    this.loadFiles();
    this.loadThemes();
    //启动定时任务
    CronUtil.start();
    log.info("定时任务启动成功!");
}

好了,就介绍这三个工具类,有兴趣的可以去试试其他的工具,挺全的,这应该是我用过最好用的一个工具类库了,值得一试。

官网地址:http://www.hutool.cn/

小推荐

下面是基本的、最低限度的网站基本标签:

<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- 以上 3 个 meta 标签 *必须* 放在 head 的最前面;其他任何的 head 内容必须在这些标签的 *后面* --><title>页面标题</title>

网页元素

<!-- 文档标题 --><title>页面标题</title><!-- 基本 URL 作用于文档中所包含的所有相对 URL --><base href="https://example.com/page.html"><!-- 外部的 CSS --><link rel="stylesheet" href="styles.css"><!-- 文档内的 CSS --><style> /* ... */</style><!-- JavaScript --><script src="script.js"></script>
<noscript><!--无 JS 时的替代--></noscript>

Meta 标签

<!-- 设置文档的字符编码 --><meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!-- 以上 3 个 meta 标签 *必须* 放在 head 的最前面;其他任何的 head 内容必须在这些标签的 *后面* --><!-- 允许控制资源的过度加载 --><meta http-equiv="Content-Security-Policy" content="default-src 'self'"><!-- 尽早地放置在文档中 --><!-- 仅应用于该标签下的内容 --><!-- Web 应用的名称(仅当网站被用作为一个应用时才使用)--><meta name="application-name" content="应用名称"><!-- 针对页面的简短描述(限制 150 字符)--><!-- 在*某些*情况下,该描述是被用作搜索结果展示片段的一部分 --><meta name="description" content="一个页面描述"><!-- 控制搜索引擎的抓取和索引行为 --><meta name="robots" content="index,follow"><!-- 所有搜索引擎 --><meta name="googlebot" content="index,follow"><!-- 仅对 Google 有效 --><!-- 告诉 Google 不显示网站链接的搜索框 --><meta name="google" content="nositelinkssearchbox"><!-- 告诉 Google 不提供此页面的翻译 --><meta name="google" content="notranslate"><!-- 验证 Google 搜索控制台的所有权 --><meta name="google-site-verification" content="verification_token"><!-- 验证 Yandex 网站管理员的所有权 --><meta name="yandex-verification" content="verification_token"><!-- 验证 Bing 网站管理员中心的所有权 --><meta name="msvalidate.01" content="verification_token"><!-- 验证 Alexa 控制台的所有权 --><meta name="alexaVerifyID" content="verification_token"><!-- 验证 Pinterest 控制台的所有权 --><meta name="p:domain_verify" content="code from pinterest"><!-- 验证 Norton 安全站点的所有权 --><meta name="norton-safeweb-site-verification" content="norton code"><!-- 用来命名软件或用于构建网页(如 - WordPress、Dreamweaver)--><meta name="generator" content="program"><!-- 关于你的网站主题的简短描述 --><meta name="subject" content="你的网站主题"><!-- 基于网站内容给出一般的年龄分级 --><meta name="rating" content="General"><!-- 允许控制 referrer 信息如何传递 --><meta name="referrer" content="no-referrer"><!-- 禁用自动检测和格式化可能的电话号码 --><meta name="format-detection" content="telephone=no"><!-- 通过设置为 “off” 完全退出 DNS 预取 --><meta http-equiv="x-dns-prefetch-control" content="off"><!-- 在客户端存储 cookie,web 浏览器的客户端识别 --><meta http-equiv="set-cookie" content="name=value; expires=date; path=url"><!-- 指定要显示在一个特定框架中的页面 --><meta http-equiv="Window-Target" content="_value"><!-- 地理标签 --><meta name="ICBM" content="latitude, longitude">
<meta name="geo.position" content="latitude;longitude">
<meta name="geo.region" content="country[-state]"><!-- 国家代码 (ISO 3166-1): 强制性, 州代码 (ISO 3166-2): 可选; 如 content="US" / content="US-NY" --><meta name="geo.placename" content="city/town"><!-- 如 content="New York City" -->

链接

<!-- 表明一个 CSS 样式表 --><link rel="stylesheet" href="https://example.com/styles.css"><!-- 有助于防止出现内容重复的问题 --><link rel="canonical" href="https://example.com/2010/06/9-things-to-do-before-entering-social-media.html"><!-- 之前用于包含 icon 链接,但已被废弃并不再使用 --><link rel="shortlink" href="https://example.com/?p=42"><!-- 链接到当前文档的一个 AMP HTML 版本 --><link rel="amphtml" href="https://example.com/path/to/amp-version.html"><!-- 链接到一个指定 Web 应用程序“安装”证书的 JSON 文件 --><link rel="manifest" href="manifest.json"><!-- 链接到文档的作者 --><link rel="author" href="humans.txt"><!-- 指向一个适用于链接内容的版权申明 --><link rel="license" href="copyright.html"><!-- 给出可能的你的另一种语言的文档位置参考 --><link rel="alternate" href="https://es.example.com/" hreflang="es"><!-- 提供了关于作者或其他人的信息 --><link rel="me" href="https://google.com/profiles/thenextweb" type="text/html">
<link rel="me" href="mailto:name@example.com">
<link rel="me" href="sms:+15035550125"><!-- 链接到一个描述历史记录、文档或其他具有历史意义的材料的集合的文档。 --><link rel="archives" href="https://example.com/archives/"><!-- 链接到层次结构中的顶级资源 --><link rel="index" href="https://example.com/"><!-- 给出一个自我参考 - 当文档有多个可能的参考时非常有用 --><link rel="self" type="application/atom+xml" href="https://example.com/atomFeed.php?page=3"><!-- 分别是在一系列文件中的第一个、下一个、上一个和最后一个 --><link rel="first" href="https://example.com/atomFeed.php">
<link rel="next" href="https://example.com/atomFeed.php?page=4">
<link rel="prev" href="https://example.com/atomFeed.php?page=2">
<link rel="last" href="https://example.com/atomFeed.php?page=147"><!-- 当使用第三方服务来维护 blog 时使用 --><link rel="EditURI" href="https://example.com/xmlrpc.php?rsd" type="application/rsd+xml" title="RSD"><!-- 当另一个 WordPress 博客链接到你的 WordPress 博客或文章时形成一个自动化的评论 --><link rel="pingback" href="https://example.com/xmlrpc.php"><!-- 当你在自己的页面上链接到一个 url 时通知它 --><link rel="webmention" href="https://example.com/webmention"><!-- 加载一个外部的 HTML 文件到当前 HTML 文件中 --><link rel="import" href="/path/to/component.html"><!-- 打开搜索 --><link rel="search" href="/open-search.xml" type="application/opensearchdescription+xml" title="Search Title"><!-- Feeds --><link rel="alternate" href="https://feeds.feedburner.com/example" type="application/rss+xml" title="RSS">
<link rel="alternate" href="https://example.com/feed.atom" type="application/atom+xml" title="Atom 0.3"><!-- 预取,预载,预浏览 --><link rel="dns-prefetch" href="//example.com/">
<link rel="preconnect" href="https://www.example.com/">
<link rel="prefetch" href="https://www.example.com/">
<link rel="prerender" href="https://example.com/">
<link rel="preload" href="image.png" as="image"><!-- 更多信息:https://css-tricks.com/prefetching-preloading-prebrowsing/ -->

网站图标

<!-- 针对 IE 10 及以下版本 --><!-- 如果将 `favicon.ico` 放在根目录下,则无需标签 --><!-- 对于 IE 11、Chrome、Firefox、Safari 和 Opera --><link rel="icon" type="image/png" sizes="16x16" href="/path/to/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/path/to/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/path/to/favicon-96x96.png"><!-- 更多信息: https://bitsofco.de/all-about-favicons-and-touch-icons/ -->

社交

Facebook Open Graph

<meta property="fb:app_id" content="123456789">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:type" content="website">
<meta property="og:title" content="Content Title">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="Description Here">
<meta property="og:site_name" content="Site Name">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="">

Facebook Instant Articles

<meta charset="utf-8">
<meta property="op:markup_version" content="v1.0"><!-- 你的文章的 Web 版网址 --><link rel="canonical" href="http://example.com/article.html"><!-- 用于该文章的样式 --><meta property="fb:article_style" content="myarticlestyle">

Twitter Cards

<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="Content Title">
<meta name="twitter:description" content="Content description less than 200 characters">
<meta name="twitter:image" content="https://example.com/image.jpg">

Google+ / Schema.org

<link href="https://plus.google.com/+YourPage" rel="publisher">
<meta itemprop="name" content="内容标题">
<meta itemprop="description" content="内容描述少于 200 个字符">
<meta itemprop="image" content="https://example.com/image.jpg">

Pinterest

根据他们的帮助中心可知,Pinterest 允许你禁止他人保存你网站里的内容。description 为可选。

<meta name="pinterest" content="nopin" description="Sorry, you can't save from my website!">

OEmbed

<link rel="alternate" type="application/json+oembed"
href="http://example.com/services/oembed?url=http%3A%2F%2Fexample.com%2Ffoo%2F&amp;format=json"
title="oEmbed Profile: JSON">
<link rel="alternate" type="text/xml+oembed"
href="http://example.com/services/oembed?url=http%3A%2F%2Fexample.com%2Ffoo%2F&amp;format=xml"
title="oEmbed Profile: XML">

浏览器 / 平台

Apple iOS

<!-- 智能应用 Banner --><meta name="apple-itunes-app" content="app-id=APP_ID,affiliate-data=AFFILIATE_ID,app-argument=SOME_TEXT"><!-- 禁用自动检测和格式化可能的电话号码 --><meta name="format-detection" content="telephone=no"><!-- 添加到主屏幕 --><meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="应用标题"><!-- 触摸图标 --><!-- 在大多数情况下,在 `<head>` 中,一个 180×180px 触摸图标就已经足够了 --><link rel="apple-touch-icon" href="/path/to/apple-touch-icon.png"><!-- 注意:iOS 7 上的 Safari 不会对图标产生效果。 --><!-- 较早版本的 Safari 不会对以 `-precomposed.png` 后缀命名的图标文件产生效果。 --><!-- 启动画面(已无效) --><link rel="apple-touch-startup-image" href="path/to/startup.png"><!-- iOS 应用深层链接 --><meta name="apple-itunes-app" content="app-id=APP-ID, app-argument=http/url-sample.com">
<link rel="alternate" href="ios-app://APP-ID/http/url-sample.com">

Apple Safari

<!-- 固定网站 --><link rel="mask-icon" href="path/to/icon.svg" color="red">

Google Android

<meta name="theme-color" content="#E64545"><!-- 添加到主屏幕 --><meta name="mobile-web-app-capable" content="yes"><!-- 更多信息:https://developer.chrome.com/multidevice/android/installtohomescreen -->

Google Chrome

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/APP_ID"><!-- 禁用翻译提示 --><meta name="google" content="notranslate">

Google Chrome Mobile (只针对 Android)

从 Chrome 31 开始,你可以设置你的 Web 应用为“app mode”,如 Safari。

<!-- 链接到一个 manifest 并定义 manifest 的元数据。--><!-- manifest.json 中的例子也可以通过以下链接找到。--><link rel="manifest" href="manifest.json"><!-- 定义你的网页为 Web 应用 --><meta name="mobile-web-app-capable" content="yes"><!-- 主屏幕图标 --><link rel="icon" sizes="192x192" href="highres-icon.png">

Microsoft Internet Explorer

<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="skype_toolbar" content="skype_toolbar_parser_compatible"><!-- IE10: 禁用链接点击高亮 (https://blogs.windows.com/buildingapps/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10/) --><meta name="msapplication-tap-highlight" content="no"><!-- 固定网站 (https://msdn.microsoft.com/en-us/library/dn255024(v=vs.85).aspx) --><meta name="application-name" content="Sample Title">
<meta name="msapplication-tooltip" content="A description of what this site does.">
<meta name="msapplication-starturl" content="http://example.com/index.html?pinned=true">
<meta name="msapplication-navbutton-color" content="#FF3300">
<meta name="msapplication-window" content="width=800;height=600">
<meta name="msapplication-task" content="name=Task 1;action-uri=http://host/Page1.html;icon-uri=http://host/icon1.ico">
<meta name="msapplication-task" content="name=Task 2;action-uri=http://microsoft.com/Page2.html;icon-uri=http://host/icon2.ico">
<meta name="msapplication-badge" value="frequency=NUMBER_IN_MINUTES;polling-uri=http://example.com/path/to/file.xml">
<meta name="msapplication-TileColor" content="#FF3300">
<meta name="msapplication-TileImage" content="path/to/tileimage.jpg">
<meta name="msapplication-config" content="http://example.com/browserconfig.xml">
<meta name="msapplication-notification" content="frequency=60;polling-uri=http://example.com/livetile;polling-uri2=http://example.com/livetile2">
<meta name="msapplication-task-separator" content="1">

应用链接

<!-- iOS --><meta property="al:ios:url" content="applinks://docs">
<meta property="al:ios:app_store_id" content="12345">
<meta property="al:ios:app_name" content="App Links"><!-- Android --><meta property="al:android:url" content="applinks://docs">
<meta property="al:android:app_name" content="App Links">
<meta property="al:android:package" content="org.applinks"><!-- Web 回退 --><meta property="al:web:url" content="http://applinks.org/documentation"><!-- 更多信息:http://applinks.org/documentation/ -->

国内的浏览器

360 浏览器

<!-- 选择渲染引擎 --><meta name="renderer" content="webkit|ie-comp|ie-stand">

QQ 移动浏览器

<!-- 在指定方向上锁定屏幕(锁定横/竖屏) --><meta name="x5-orientation" content="landscape/portrait"><!-- 全屏显示此页面 --><meta name="x5-fullscreen" content="true"><!-- 页面将以“应用模式”显示(全屏等)--><meta name="x5-page-mode" content="app">

UC 移动浏览器

<!-- 在指定方向上锁定屏幕(锁定横/竖屏) --><meta name="screen-orientation" content="landscape/portrait"><!-- 全屏显示此页面 --><meta name="full-screen" content="yes"><!-- 即使在“文本模式”下,UC 浏览器也会显示图片 --><meta name="imagemode" content="force"><!-- 页面将以“应用模式”显示(全屏、禁止手势等) --><meta name="browsermode" content="application"><!-- 在此页面禁用 UC 浏览器的“夜间模式” --><meta name="nightmode" content="disable"><!-- 简化页面,减少数据传输 --><meta name="layoutmode" content="fitscreen"><!-- 禁用的 UC 浏览器的功能,“当此页面中有较多文本时缩放字体” --><meta name="wap-font-scale" content="no">

注意

性能

当启用 GZIP 时,移动 href 属性到该元素的开头以提高压缩,因为 href 属性被用于 abaselink 标签。

示例:

<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet">