模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等。
IIFE: 使用自执行函数来编写模块化,特点:在一个单独的函数作用域中执行代码,避免变量冲突。
1 | (function(){ |
Quick note
在es5中,用module.exports和exports导出模块,用require引入模块。
es6新增export和export default导出模块,import导入模块。
在 Commonjs 中,一个文件就是一个模块。在一个node执行一个文件时,会给这个文件内生成一个 exports和module对象, 定义一个模块导出通过 exports 或者 module.exports 挂载即可,而module又有一个exports属性。他们之间的关系如下图,都指向一块{}内存区域。
1 | exports = module.exports = {}; |
下面介绍一下 workbox 默认提供的几种缓存策略 API,这些 API 可以被当成 handler 使用。
这种策略的意思是当请求的路由有对应的 Cache 缓存结果就直接返回,在返回 Cache 缓存结果的同时会在后台发起网络请求拿到请求结果并更新 Cache 缓存,如果本来就没有 Cache 缓存的话,直接就发起网络请求并返回结果,这对用户来说是一种非常安全的策略,能保证用户最快速的拿到请求的结果,但是也有一定的缺点,就是还是会有网络请求占用了用户的网络带宽。可以像如下的方式使用 State While Revalidate 策略:
more >>Event Loop可以说是js老生常谈的一个话题了。作为一枚前端开发,需要清楚的认知浏览器中与node中事件循环与执行机制的不同,不可混为一谈。
浏览器的Event loop是在HTML5中定义的规范,而node中则由libuv库实现。
以下是参考一系列文章后的总结。
曾经被问过实现一个3d立方体,太久不写css了,有些css3的属性一时还有点陌生了,这次通过这个小case也来复习一下css3的变换相关的内容。
1 | <div class="box"> |
作为一枚前端开发,经常会接触到中间件,今天咱们就来分析分析,中间件是怎么转起来的。
我们经常接触的中间件其实主要就是express、koa和redux,前面两个是服务端的中间件。
要实现一套middleware,分为三步:
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true