首页
学习
活动
专区
圈层
工具
发布

从一个前端开发者的视角,聊聊“新上网导航”的技术取舍(含代码浅析)

首先是关于“轻量”的实践。首先是首屏加载速度非常快,二次访问更是做到了毫秒级加载。通过审查元素可以发现,它在资源加载上做了极致的克制。...正确的做法是使用防抖。...我们可以这样模拟它的实现:// 假设这是获取联想词的APIfunction fetchSuggestions(keyword) { // 实际场景中,这里会是一个 fetch 或 axios 请求...这种架构选择很聪明:主体导航部分保持静态,利用CDN缓存实现极速访问;而资讯这类时效性强的模块,则通过客户端JavaScript异步获取数据。...它没有盲目追求功能的“大而全”,而是聚焦于“导航”这一核心场景,用最合适、最轻量的技术方案去解决实际问题。

13421
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在 JavaScript 中通过 queueMicrotask() 使用微任务

    任务 vs 微任务 为了正确地讨论微任务,首先最好知道什么是一个 JavaScript 任务以及微任务如何区别于任务。...滥用这种能力将带来性能问题。 入列微任务 就其本身而言,应该使用微任务的典型情况,要么只有在没有其他办法的时候,要么是当创建框架或库时需要使用微任务达成其功能。...= data; this.data = data; this.dispatchEvent(new Event("load")); )}; } }; 这段代码带来的问题是...当微任务运行之时,等待它处理的可能是一个有若干条消息的数组。微任务函数先是通过 JSON.stringify() 方法将消息数组编码为 JSON。...let logElem = document.getElementById("log"); let log = s => logElem.innerHTML += s + ""; 以下是主程序代码

    4.6K10

    盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小

    ; } 在上面代码中,首先是创建秒杀结束时间,利用Date对象的getTime()方法分别获取结束秒杀的时间和当前时间的毫秒数。...JavaScript function jump(sec,url){ var sec=document.getElementById("sec").innerHTML=-...this.style.height = '100px'; this.innerHTML = '小盒子'; } }; 在上面代码中,首先是使用document.getElementById...本文案例参考《JavaScript前端开发案例教程》,黑马程序员编著 四、总结 1.本文基于JavaScript基础,实现限时秒杀、定时跳转、改变盒子大小的功能。...将文中的代码块组织在一起,就是给个案例的完整代码了,小编在这里就不单独提供代码文件啦,记得添加小编微信,有问题可以随时联系小编进行解决哈~ ------------------- End -------

    6.1K20

    有关跨域请求的一些记录

    开始 官方定义,CORS (Cross-Origin Resource Sharing,跨域资源共享)是一个系统,它由一系列传输的HTTP头组成,这些HTTP头决定浏览器是否阻止前端 JavaScript...以我目前的能力可以有两个方案来解决此问题: 使用动态语言来获取数据后再返回 转发此请求,为我所用 如果使用此方案的话,比较常见的是使用nginx来处理。.../cors_header_proxy.js>这个脚本主要功能是为了解决跨域问题,并且写了转发请求和原始请求的对比,我直接写注释以阐述我的理解与想法。.../Using_Fetch#Checking_that_the_fetch_was_successful'>Shows TypeError: Failed to fetch since CORS is misconfigured...= JSON.stringify(data) } catch (e) { document.getElementById(reqName).innerHTML = e } }

    2.2K50

    「原生案例」如何在JavaScript中实现实时搜索功能

    在API页面中,我们选择要使用的特定数据,然后复制页面右侧提供的javascript(fetch)代码,如下所示: https://rapidapi.com/rapihub-rapihub-default...然后,我们将把电影卡片放在 resultsContainer 元素中。...在这种情况下,这些情景可能发生在搜索查询没有结果或API请求存在问题时。 处理错误或空响应时,向用户提供清晰的反馈是至关重要的。...如果是这种情况,我们将通过调用 fetch 函数向API发出新的请求。另一方面,如果缓存数据存在且尚未过期,我们将使用它来渲染页面上的电影,而不是再次发出新的 fetch 请求。...以下是该应用程序的整体JavaScript代码: const url = "https://imdb-top-100-movies.p.rapidapi.com/"; const options = {

    2.6K40

    pwa-之service worker 离线文件处理

    本章包含以下知识点 显示离线页面 加载离线图片 加载离线css 多个fetch处理事件调用 简介 网站图片由于不确定的原因,可能无法访问,这给用户一个错觉,就是你的网站出了问题 其他诸如css,js文件都是网站必不可少的资源...当网络不通时,html请求走到cache方法里面去,然后响应的是缓存好的offline.html。offline.html又请求已经缓存好的offline.svg。所以正常显示。...function(event) { event.respondWith(caches.match(event.request)); }); 访问/Chapter%202/02/index.html,然后打开...一定要访问index.html啊,不然不会成功 多个fetch事件调用 fetch事件和js其他事件一样都是可以注册多次的。 创建index.html 然后访问/cook/,是/cook/不是/cook ? 访问/cook/book ?

    73820

    如何简单理解 JavaScript 的 Async 和 Await?

    ,笔者在保证不改变原意的基础上做了调整,并在此基础上进行了错误校正,如发现问题,欢迎你的指正 开篇 自从Async 和Await 出现后,大幅简化JavaScript 同步和非同步(异步)的复杂纠葛,这篇文章将会分享我自己理解的历程...在JavaScript的世界,同步sync和非同步async的爱恨情仇,就如同偶像剧一般的剪不断理还乱,特别像是setTimeout、setInterval、MLHttpRequest或fetch这些同步非同步混杂的用法...这个容易出错的非同步等待,针对 setInterval ,也能用同样的做法修改,举例来说,下面的代码码执行之后,并「不会」如我们预期的「先显示1,再显示 haha0...haha5 ,最后再显示2」,而是「先显示1和2,然后再出现...这避免了额外的序列化步骤,使其比直接innerHTML操作更快。...04 搭配Fetch 在上篇的文章 JavaScript Fetch API 使用教学已经有提到 fetch 的用法,因为 fetch 最后回传的是promise,理所当然的通过 async 和await

    1.7K20

    【JavaScript】解决 JavaScript 语言报错:Uncaught TypeError: Cannot read property ‘X‘ of null

    一、背景介绍 在 JavaScript 编程中,“Uncaught TypeError: Cannot read property ‘X’ of null” 是一种常见的错误。...Cannot read property ‘X’: 这里的 ‘X’ 是具体的属性名称。错误信息指示无法读取该属性。 of null: 这是关键部分,表明代码试图访问的对象是 null。...DOM 元素未正确选择 let element = document.getElementById('nonexistent'); console.log(element.innerHTML); //...console.log(obj.property); // value 六、总结 “Uncaught TypeError: Cannot read property ‘X’ of null” 错误在 JavaScript...以下几点是需要特别注意的: DOM 元素检查:确保在操作 DOM 元素前,已正确选择。 异步操作的空值检查:在处理异步操作结果时,检查返回的数据是否为 null 或未定义。

    3K10

    【技术创作101训练营】innerHTML插入运行js字符串问题探究

    最近改了一个老项目, 里面的页面请求大部分是通过ajax请求后来渲染的jsp页面, 然后再用innerHTML插入到当前页....但是这就遇到了一个问题, jsp里引入的js库以及一些js代码就无法运行了, 所以就探索了一下innerHTML以及解析js的一些方法 1. innerHTML介绍 有两个功能, 一个是可以获取指定DOM...的HTML元素, 另一个就是替换指定DOM的HTML元素 2. innerHTML插入js会发生什么 什么也不会发生, 因为用 innerHTML 插入文本到网页中有可能成为网站攻击的媒介,从而产生潜在的安全风险问题...对于实际来说, 我认为存在问题, 所以搜索了其他资料来解决问题 3....string> = html.split(//i) let scripts: Array<{ text: string, src: string }> = [] 然后是循环分割的

    1.3K00

    前端复盘: iframe跨页通信和前端实现文件下载

    由于笔者2年前维护了几个比较老的项目是用jquery全家桶开发的,其中有些需求是需要跨页面交互和父子页面通信,故借此总结一下。...另一块是前端实现文件下载功能,虽然方法很多,为了不用重复造轮子,在此还是总结一波,毕竟多页面下的应用场景还是很多的。...文章摘要 实现页面之间通信的方法 实现父子页面和子页面与子页面之间通信的方法 前端实现文件下载功能 由于本文介绍的主要还是基于javascript,不涉及任何框架方面的问题(如果想研究vue,react...,angular方面的技术问题,可以移步我的其他文章),所以让我们用原生javascript来解决我们上面提到的问题吧。...$id('bridge').innerHTML = '子页面操控父页面dom' 从代码可以看到,我们使用parent.window拿到父页面的window,然后调用父页面提供的$id方法来操作父页面dom

    1.6K30

    记一次老项目中的跨页面通信问题和前端实现文件下载功能

    由于笔者之前维护了几个比较老的项目是用jquery全家桶开发的,其中有些需求是需要跨页面交互和父子页面通信,故借此总结一下。...另一块是前端实现文件下载功能,虽然方法很多,为了不用重复造轮子,在此还是总结一波,毕竟多页面下的应用场景还是很多的。...文章摘要 实现页面之间通信的方法 实现父子页面和子页面与子页面之间通信的方法 前端实现文件下载功能 由于本文介绍的主要还是基于javascript,不涉及任何框架方面的问题(如果想研究vue,react...,angular方面的技术问题,可以移步我的其他文章),所以让我们用原生javascript来解决我们上面提到的问题吧。...$id('bridge').innerHTML = '子页面操控父页面dom'复制代码 从代码可以看到,我们使用parent.window拿到父页面的window,然后调用父页面提供的$id方法来操作父页面

    81930
    领券