HTTP缓存-ETag
最近在学习网站性能优化相关的内容,关于网站优化点特别多而 HTTP 缓存也是比较重要的一部分,于是今天就着重看下 HTTP 缓存相关的内容加深下对此相关知识的理解和认识。自己动手通过简单的服务,看看其中的过程。
最近在学习网站性能优化相关的内容,关于网站优化点特别多而 HTTP 缓存也是比较重要的一部分,于是今天就着重看下 HTTP 缓存相关的内容加深下对此相关知识的理解和认识。自己动手通过简单的服务,看看其中的过程。
multer 更新到 1.x 之后无法直接通过 app.use(multer()); 这样的方式去使用。
multer 的 文档地址:
https://github.com/expressjs/multer
中文文档的翻译也是 2016 年 10 月的,不建议看中文文档。
安装:
yarn add multer
引入:
const multer = require('multer');
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>ie8无法拉伸背景图</title> | |
<style type="text/css"> | |
body { | |
margin: 0; | |
width: 100%; | |
height: 462px; | |
/* 这么写不显示背景图在 ie8 下 */ | |
/*background: url("successed.png")no-repeat;*/ | |
/* 这么写就显示背景图了在 ie8 下,看出区别了吗?是的就差一个空格 */ | |
background: url("successed.png") no-repeat; | |
background-size: 100% 100%; | |
} | |
</style> | |
</head> | |
<body> | |
</body> | |
</html> |
首先我们要明白一个前提,CommonJS 模块规范和 ES6 模块规范完全是两种不同的概念。
本文主要介绍 24 中 es6 方法,这些方法都挺实用的,本本请记好,时不时翻出来看看。
const hide = (el) => Array.from(el).forEach(e => (e.style.display = 'none')); | |
// 事例:隐藏页面上所有 `<img>` 元素? | |
hide(document.querySelectorAll('img')) |
页面 DOM 里的每个节点上都有一个 classList 对象,程序员可以使用里面的方法新增、删除、修改节点上的 CSS 类。使用 classList,程序员还可以用它来判断某个节点是否被赋予了某个 CSS 类。
const hasClass = (el, className) => el.classList.contains(className) | |
// 事例 | |
hasClass(document.querySelector('p.special'), 'special') // true |
const toggleClass = (el, className) => el.classList.toggle(className) | |
// 事例 移除 p 具有类 `special` 的 special 类 | |
toggleClass(document.querySelector('p.special'), 'special') |