You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.8 KiB
110 lines
2.8 KiB
// 文件加载工具
|
|
/**
|
|
* js加载
|
|
* @param src 文件路径
|
|
* @returns {Promise<>}
|
|
*/
|
|
export function jsLoading(src) {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
let head = document.getElementsByTagName('head')[0]
|
|
let script = document.createElement('script')
|
|
script.type = 'text/javascript'
|
|
script.src = src + '?t=' + new Date().getTime()
|
|
script.onload = script.onreadystatechange = () => {
|
|
console.log(`[${script.src}] script load ok`)
|
|
resolve()
|
|
}
|
|
head.appendChild(script)
|
|
} catch (e) {
|
|
console.error(e)
|
|
reject()
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
/**
|
|
* css文件加载
|
|
* @param path 文件路径
|
|
* @returns {Promise<>}
|
|
*/
|
|
export function cssLoading(path) {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
let head = document.getElementsByTagName('head')[0]
|
|
let css = document.createElement('link')
|
|
css.rel = 'stylesheet'
|
|
css.type = 'text/css'
|
|
css.href = path + '?t=' + new Date().getTime()
|
|
css.onload = css.onreadystatechange = () => {
|
|
console.log(`[${css.href}] css load ok`)
|
|
resolve()
|
|
}
|
|
head.appendChild(css)
|
|
} catch (e) {
|
|
console.error(e)
|
|
reject()
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* css文件加载
|
|
* @param path 文件路径
|
|
* @returns {Promise<>}
|
|
*/
|
|
export function lessLoading(path) {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
let head = document.getElementsByTagName('head')[0]
|
|
let css = document.createElement('link')
|
|
css.rel = 'stylesheet/less'
|
|
css.type = 'text/css'
|
|
css.href = path + '?t=' + new Date().getTime()
|
|
css.onload = css.onreadystatechange = () => {
|
|
console.log(`[${path}] css load ok`)
|
|
resolve()
|
|
}
|
|
head.appendChild(css)
|
|
} catch (e) {
|
|
console.error(e)
|
|
reject()
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* html代码压缩
|
|
* @param htmlStr
|
|
* @returns {string}
|
|
*/
|
|
export function htmlCompress(htmlStr) {
|
|
// 字符串转换成文档类型
|
|
let domParser = new DOMParser()
|
|
let doc = domParser.parseFromString(htmlStr, 'text/html')
|
|
|
|
// 使用原生的TreeWalker进行遍历
|
|
let treeWalker = document.createTreeWalker(doc)
|
|
let arrNodeRemove = []
|
|
// 遍历注释节点和换行文本节点
|
|
while (treeWalker.nextNode()) {
|
|
let node = treeWalker.currentNode
|
|
if (node.nodeType === Node.COMMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.nodeValue.trim() === '')) {
|
|
arrNodeRemove.push(node)
|
|
}
|
|
}
|
|
// 节点移除
|
|
arrNodeRemove.forEach(function (node) {
|
|
node.parentNode.removeChild(node)
|
|
})
|
|
|
|
return doc.body.innerHTML
|
|
}
|
|
|
|
export default Object.freeze(window.FileUtil = {
|
|
jsLoading,
|
|
cssLoading,
|
|
lessLoading,
|
|
htmlCompress
|
|
})
|
|
|