// 文件加载工具 /** * 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 })