Skip to content

Instantly share code, notes, and snippets.

@zoonderkins
Last active February 20, 2019 15:43
Show Gist options
  • Save zoonderkins/98af01a88a0ab8937d24e12f0c5d307e to your computer and use it in GitHub Desktop.
Save zoonderkins/98af01a88a0ab8937d24e12f0c5d307e to your computer and use it in GitHub Desktop.
require-js #javascript
// License belongs to @serapath
// https://gistcdn.githack.com/ookangzheng/98af01a88a0ab8937d24e12f0c5d307e/raw/afb42195ba4f1542d2dffe634179458a79de9c11/require-js.js
// CDN: https://yerl.org/nLBxY
window.require = (function (modules) {
function init (name, _module) {
var se = document.createElement('script')
var module = JSON.parse(_module)[name]
se.text = module.bundle
document.head.appendChild(se)
document.head.removeChild(se)
module.exports = window.require(name)
window.require = require
return modules[name] = module
}
function require (name, version) {
var module = modules[name]
if (module) {
if (version) console.error('using cached version "' + module.package.version + '" of "' + name + '"')
return module.exports
}
version = version || 'latest'
var modulename = name + '@' + version + ':' + location.host
var _module = localStorage[modulename]
if (version === 'latest' && _module) {
var module = JSON.parse(_module)[name]
var oldstamp = module.timestamp
var newstamp = +new Date()
var age = (newstamp - oldstamp) / (1000*3600)
if (age > 24) _module = module = null
else return init(name, _module).exports
}
if (!_module) {
var xhr = new XMLHttpRequest()
xhr.open('POST', 'https://browserify.datt.ml/multi', false)
var data = { dependencies: { } }
data.dependencies[name] = version
xhr.send(JSON.stringify(data))
_module = xhr.responseText
module = JSON.parse(_module)[name]
module.timestamp = +new Date()
var m = {}
m[name] = module
_module = JSON.stringify(m)
localStorage[modulename] = _module
if (version === 'latest') {
version = module.package.version
modulename = name + '@' + version + ':' + location.host
localStorage[modulename] = _module
}
console.log('caching version "' + version + '" of "' + name + '" for one day')
}
return init(name, _module).exports
}
require.cache = modules
return require
})({})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment