Last active
February 20, 2019 15:43
-
-
Save zoonderkins/98af01a88a0ab8937d24e12f0c5d307e to your computer and use it in GitHub Desktop.
require-js #javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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