如何把一个10M的外部js文件分割为多个不到100k的文件?
如题所述:
如何把一个10M的外部js文件分割为每个不到200k的文件?,然后在通过请求这些不到200K的多个文件,把返回的内容再拼接成原文件js文件的内容?
哪个大佬能根据以下的js文件,写一个分割和组合的demo,学习一下
附上JS文件:
https://cdn.jsdelivr.net/gh/t...
回答:
这太简单了。都不用分割文件。
'Range':'bytes=0-1000'
应该就可以满足你。
show = function(arrayBuffer){ const dataView = new DataView(arrayBuffer)
let str = ''
for(var i = 0; i<dataView.byteLength;i++){
if(i%8==0) str+='\n'
str += dataView.getUint8(i).toString(2).padStart(8, '0') + ',';
}
console.log(str)
return arrayBuffer
}
fetch(`https://cdn.jsdelivr.net/gh/taro99/cdn-stimulSoft@1.0.6/stimulsoft.reports.js`,{
headers: {
'Range':'bytes=0-160'
}
})
.then(v=>v.arrayBuffer())
.then(v=>show(v))
.then(v=>console.log('bytes=0-160', v))
fetch(`https://cdn.jsdelivr.net/gh/taro99/cdn-stimulSoft@1.0.6/stimulsoft.reports.js`,{
headers: {
'Range':'bytes=161-320'
}
})
.then(v=>v.arrayBuffer())
.then(v=>show(v))
.then(v=>console.log('bytes=161-320', v))
fetch(`https://cdn.jsdelivr.net/gh/taro99/cdn-stimulSoft@1.0.6/stimulsoft.reports.js`,{
headers: {
'Range':'bytes=0-320'
}
})
.then(v=>v.arrayBuffer())
.then(v=>show(v))
.then(v=>console.log('bytes=0-320', v))
你自己用 0-160 的去比对,看看是不是都对。
回答:
这样并不能减少请求时间,有什么意义吗?gzip压缩到2M就可以了。
回答:
补充下 @linong 回答的后续 怎么使用这些string
有三种方式
1: eval
eval("(function () {console.log('我被eval 执行了,我是当前执行的作用域')})()")window.eval("(function () {console.log('我被eval 执行了,但是我是window作用域')})()")
window.eval.call(xxx, "(function () {console.log('我被eval 执行了,但是我是xxx作用域')})()")
2: new Function
const func = Function("(function () {console.log('我被new Function 执行了,我是window作用域')})()")func.call(window)
3: Blob && createObjectURL
const blob = new Blob(["(function () {console.log('我被执行了,我是window作用域')})()"], {type: 'text/javascript',})const url = URL.createObjectURL(blob)
const scriptElement = document.createElement('script')
scriptElement.src = url
scriptElement.onload = () => {URL.revokeObjectURL(url)}
document.body.appendChild(scriptElement)
以上是 如何把一个10M的外部js文件分割为多个不到100k的文件? 的全部内容, 来源链接: utcz.com/p/937150.html