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

pwa, 上海地铁线路图全新重构.

之前一直有在维护一个上海地铁线路图的 pwa,最主要的特性就是 "offline first"。但是由于代码都是通过原生的 js 去实现,之前我都不是很喜欢去用框架,不想具有任何框架的偏好。...假如这样的情景,我点击站点,希望能够弹出信息提示窗,这就是 Station 组件和 InfoCard 组件之间的通信,通过 Map 组件来进行共享。...我的选择还是卫生间信息,我对于这一状态进行了保持,这样的用户体验从逻辑上来讲似乎更佳。具体实现的代码细节就不一一说明了,里面肯能包含更多的细节,欢迎使用体验。...第二个,好的解决办法就是通过异步加载来实现组件加载,效果明显,尤其是对于 InfoCard 组件: 同步 class InfoCard extends React.Component { constructor...在移动端加载时,呈现的就是左边的空白区域,所以给用户一种程序未加载完毕的错觉。之前的版本的做法就是通过 scroll 来实现滚动条的滚动,将视图的焦点移动到中间位置。

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

    腾讯云COS挂载故障排查实战手册:运维老鸟的踩坑与填坑指南

    检查方法:跟着步骤点:① 登录腾讯云控制台→右上角头像旁边点"访问管理";② 左侧菜单点"用户"→"用户列表"→找到你用来挂载的子账号(不是主账号);③ 点击子账号名称→"权限管理"→"直接关联策略"。...解决办法:做网站图片、静态资源的,选"公有读私有写"(设置步骤:点击"编辑"→选择"公有读私有写"→保存);存敏感文件(比如用户数据、备份)的,选"私有",然后通过"预签名URL"让别人临时访问(COS...解决办法:绝对不要手敲密钥!一定要用"复制(Ctrl+C)+粘贴(Ctrl+V)"。如果是在Linux命令行里配置,粘贴后可以按"左右箭头"移动光标,检查有没有多余字符。...检查方法:① 登录COS控制台→存储桶列表→点击你的存储桶;② 进入"概览"页面,往下拉能看到"存储用量",比如"已使用 499GB / 500GB",这就是快满了。...重要业务(比如电商网站)一定要做容灾:在另一个地域新建一个存储桶,定期把主桶的文件同步过去(COS控制台→数据迁移→跨桶复制),这样主桶出问题时,能快速切换到备用桶。

    69010

    晋升产品总监的必修课——团队级组件复用及管理

    结果这一问题引发了群里的连环讨论: 只能共享组件吗?如果项目有规定的字体、颜色这些有没有办法一起分享? 导出又导入,有点太麻烦了吧。 如果组件库需要修改的话,还要重新分享吗?...后续不想再让离职的同事继续使用这些组件的话,好像就没办法了。 设计复用向来是用户选择设计工具时的重点考虑因素。...而对于组件资源,只需拖拽到工作区中即可使用。 灵活强大的组件资源 复用一个组件资源后,你是希望其多个资源实例之间同步修改还是相互独立?...在不同场景下,对组件往往有不同的复用需要,而摹客在线设计的资源库能同时应对这两种需求。 在保存组件资源时,可以自行选择是否要让组件资源带有同步修改的特性。...并且对资源库的修改可以在项目之间实时更新,无需进行繁琐的导出和导入。 当然,如果出于各种原因,想要中止资源库的共享,仅需要点击“取消共享”即可。

    57050

    老大react说:schedule,我们今年的小目标是一个亿

    进入正题: 当我们在类似下面的搜索框组件进行搜索时会发现,组件分为搜索部分和搜索结果展示列表,我们期望输入框能立刻响应,搜素列表可以有等待的时间,如果搜索列表数据量很大,在进行渲染的时候,我们又输入了一些文字...,因为用户输入事件的优先级是很高的,所以就要停止结果列表的渲染,这就引出了不同任务之间的优先级和调度 Scheduler 我们知道如果应用占用较长的js执行时间,比如超过了设备一帧的时间,那么设备的绘制就会出现不流畅的现象...函数中,shouldYield就是用来判断剩余的时间有没有用尽。...在源码中每个时间片时5ms,这个值会根据设备的fps调整。 function workLoopConcurrent() { while (workInProgress !== null && !...return true } 调度优先级 ​ 在Scheduler中有两个函数可以创建具有优先级的任务 runWithPriority:以一个优先级执行callback,如果是同步的任务,优先级就是

    52530

    AJAX常见面试问题

    AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。优化了Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。...一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常会希望单击后退按钮能够取消他们的前一次操作,但是在Ajax应用程序中,这将无法实现。...后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是Ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。那么对于这个问题有没有办法?...答案是肯定的,用过Gmail的知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变Ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时...平时常用的引入JS方式,是同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,也就是说,浏览器在下载或执行该js代码块时,后面的标签不会被解析。

    3K20

    老大react说:schedule,我们今年的小目标是一个亿

    ,搜素列表可以有等待的时间,如果搜索列表数据量很大,在进行渲染的时候,我们又输入了一些文字,因为用户输入事件的优先级是很高的,所以就要停止结果列表的渲染,这就引出了不同任务之间的优先级和调度 react...在performUnitOfWork(render阶段的起点)之后会执行render阶段和commit阶段,如果在浏览器的一帧中,cup的计算还没完成,就会让出js执行权给浏览器,这个判断在workLoopConcurrent...函数中,shouldYield就是用来判断剩余的时间有没有用尽。...在源码中每个时间片时5ms,这个值会根据设备的fps调整。 function workLoopConcurrent() { while (workInProgress !== null && !...return true } 调度优先级 ​ 在Scheduler中有两个函数可以创建具有优先级的任务 runWithPriority:以一个优先级执行callback,如果是同步的任务,优先级就是ImmediateSchedulerPriority

    54630

    用node.js进行网红直播带货平台开发的好处

    今天想要介绍的主人公是node.js,在进行web服务端的开发中,我们常会使用到它,对于网红直播带货平台开发者而言,node.js也绝不陌生,它常被用于开发网红直播带货平台的即时聊天部分,用它开发即时聊天系统有什么好处呢...普通情况下,每个连接服务器的连接都会被生产成一个新的OS线程,并为其分配一些内存,而一个网红直播带货平台开发要承载的并发量固然是非常大的,多开服务器意味着更多的消耗,消耗量和并发之间的矛盾巨大,而node.js...异步I/O机制可以大大提高直播卖货系统的执行效率,因为直播卖货系统会承载非常大的数据访问量,而在异步I/O和事件驱动机制下,每个调用之间无需等待前一个调用结束,就可以执行其后面的代码,把上一个访问数据库的返回结果的处理代码放在回调函数中即可...node.js之所以适合制作实时数据交互应用,事件驱动与异步I/O机制功不可没,使用它进行网红直播带货平台开发即时通讯部分,有以下几点优势: 节约服务器内存 ,预计四万用户的连接仅需8g内存就够用。...作为单线程,无需在意状态的同步问题 提高单线程程序的反应速度。 虽然Java和PHP也有办法实现高并发子线程请求,但NodeJS的表现会更好,也更符合网红直播带货平台开发的需要。

    1.5K20

    油猴脚本入坑指南

    油猴提供了很多强大的 API,它们可以使很操作变得相当简单 注意每个 API 在使用前需要在元数据中用 @grant 进行声明,若你不打算使用这些 API,应当声明 @grant none 以下是一个简单的表格...Greasemonkey 从版本 4 开始向性能更高的异步模型发展,旧的 API GM_* 通常是同步的,而新的 API GM.* 是异步的(采用 Promise),在使用时请参考官方 wiki 并多加留意...不行 可行的方法有两种 老办法:用 JS 往插入 CSS 的 API 方法:在元数据中声明// @resource mycss ,然后GM_addStyle(GM_getResourceText...来得到 .item 最简单的解决方案是在事件发生时获取鼠标所在的 .item,例如使用 jQuery:$('.item:hover') 2....监听 .item-a 的点击事件,setInterval 每隔一段时间检测一下当前 .item 内有没有 .item-b,有的话就进行修改然后终止该 interval 好的思路 监听 .item-a

    5.5K10

    二哥的小破站终于上线了,颜值贼高!

    然后将本地的文件上传到云服务器上,再通过 Nginx 部署静态网站就 OK 了。 不过,这样做会存在一个很严重的问题,就是云服务器和本地、GitHub 仓库之间没办法进行同步。...这样就很容易解决掉仓库之间不同步的问题,因为 GitHub 仓库提交的一定是正式版本,也是最新版本,从上面拉取是最方便和稳妥的。...实习生把小组的代码仓库搞得一团糟。。。这篇中的「远程仓库」小节。 这里就不再演示了。 在 GitHub 仓库上点击「Code」菜单,复制 SSH 地址。...用这种方案的话,本地、GitHub、云服务器之间的同步就完全打通了。 当 GitHub 上有更新的时候,再将内容拉取到云服务器上。...">本站总访问量次 两行代码,一行引入 JS 文件,一行展示数据。

    65420

    数据同步后如何校验一致性?Tapdata Cloud 这样玩

    在Tapdata Cloud 工作台进行数据同步后,进入【数据校验】菜单,点击【新建校验任务】,即可创建数据校验,具体设置说明可查看用户文档:数据校验。...高级校验:添加JS校验逻辑 在进行全表字段值校验时,还支持进行高级校验。通过高级校验用户可以添加JS校验逻辑,对源和目标的数据进行校验。...对于快速count的校验任务,用户可以在详情页看到每个表一致和不一致的结果。 对于表全字段值校验的任务,可以在详情页看到每个表的一致和不一致的结果,对于有差异数据的表,点击可以看到错误数据详情。...对于关联字段值校验的任务,用户可以在详情页看到每个表的一致和不一致的结果,对于有差异数据的表,点击可以看到错误数据详情。...、ES 、达梦、Kafka之间的数据同步,即将支持 DB2、Sybase ASE、Redis、GBase、GaussDB 等,并对用户永久免费。

    2.1K20

    WEB 文件传输技术全讲解

    WEB文件上传技术1.1 Form表单的上传是“同步”的,有没有办法像Ajax请求那样,不刷新页面也能提交文件呢?在HTML5出现以前,只能用iframe来做到这一点。...方法是,生成一个iframe,里面的内容是一个表单,当我们点击上传的时候,触发该表单进行提交,并在upload.php中返回一段js进行回调处理即可。...用户可能会等得比较焦虑,有没有方法在上传的时候看到进度条呢? WEB文件上传技术1.2 Flash曾经是网页世界里最闪亮的一颗星星。他除了播放多媒体以外,还提供了不少底层的文件操作接口。...此外,由于Flash已经逐步退出市场,基于它来实现文件上传的组件,可能无法在iOS、Mac等设备上使用。...="http://file.gad.qq.com/js/plupload.full.min.js"> 或者使用requirejs引入: require(['jquery', 'http

    3.4K00

    谈一谈javascript异步

    作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。...ajax的同步请求就会导致浏览器产生假死,因为它会锁定浏览器的UI(按钮,菜单,滚动条等),并阻塞所有用户的交互,jquery中的ajax有这样一个同步请求的功能,一定要慎用,尤其是在请求的数据量很大的时候...,要避免使用同步请求。...也可以这么说,其实这引发了另外一个知识点, 任务队列和事件循环 两个 console.log(myData);是同步执行的,他们都在js的主线程上执行, 在主线程之外还存在一个任务队列,任务队列中存放着需要异步执行的内容...事件循环的每一轮称为一个tick(有没有联想到vue中的nextTick?)

    1.1K20

    歪门邪道性能优化:魔改三方库源码,性能提高几十倍!

    与之相对的,本文提到的问题完全不是杞人忧天了,而是实打实的用户需求,我们经过用户调研,发现用户确实有这么多数据量,需求上不可能再压缩了,只能技术上优化,这也是逼得我们去改第三方库源码的原因。...我的测试数据量是完全按照用户真实场景计算的:同时显示10个场馆,每个场馆每天20个预定,上面使用的是周视图,也就是可以同时看到7天的数据,那总共显示的预定就是: 10 * 20 * 7 = 1400,总共...当数据量少的时候,这个问题不明显,很多时候都被忽略了,像上面这个图,即使一万条数据,因为每个Item都很简单,所以运行一万次render你也不会明显感知出来,在控制台看也就一百多毫秒。...这样选中一个事件就有了两个途径: 用户通过点击某个事件来改变selected的值 开发者可以在外部直接修改selected的值来选中某个事件 有了前面一万条数据列表优化的经验,我们知道对于这种问题的处理办法了...有没有办法连shouldComponentUpdate的执行也跳过呢?

    89920

    小兔JS教程(五) 简单易懂的JSON入门

    1483683351306097300.png 页面上有用户名和密码两个输入框,当我点击登录按钮,这两个数据就会被传递到服务器层。那么,如何传输呢?...,然后就可以开始解析,最终拿到zhangsan和123两个字面量。...JSON格式的字符串,他还是字符串,JSON对象就是JavaScript对象,我们推荐使用字面值的方式来创建一个JS对象。...person2 = person; person.age = 10; //给person动态地添加一个属性 alert(JSON.stringify(person2)); //person2也跟着变了 那有没有什么办法可以实现对象的复制呢...现在,我们已经对JSON格式和JS对象有了一个比较充分的了解,我要在此抛出一个问题,有没有什么办法能够获取JS对象的属性详情呢?

    1.5K70

    终于有人把数据开发讲明白了

    (浏览商品→加购→支付)每个节点的流失率是多少?和用户设备、渠道、时段有没有关系?需要什么样的数据来支持分析?...(实时点击流、设备信息、渠道标签、支付状态)根据这些需求,数据团队做了三件事:技术上:搭了实时数据管道,把用户行为日志从 Kafka 接到 Flink,实现了秒级延迟处理;业务上:和运营团队把 “关键指标口径...数据采集:别 “全量同步”,要 “精准获取”数据采集的本质是 “按需取数”。以前技术能力有限,很多团队只能 “全量同步”,但现在数据量增长太快了,这种模式在成本和效率上都不行了。...现在的数据采集得 “精准分层”:核心数据(像交易、用户基础信息):用 “实时 + 增量” 采集;行为数据(像点击、浏览日志):通过埋点 SDK 或者日志采集工具收集,按天或者小时分区存储;外部数据(像天气...总结数据开发的终极目标不是 “做出好看的报表” 或者 “搭个复杂的数仓”,而是 “用数据驱动业务决策,创造能衡量的商业价值”。不妨问问自己:你做的每个数据项目,有没有明确对业务的贡献?

    48410

    最佳实践| 一文读懂《MongoDB 使用规范及最佳实践》原理

    社区根据发送截图时间先后的前 10 名用户进行发放(每个 ID 仅参与一次哦~) 扫描文末二维码或添加小助手微信小芒果(ID:mongoingcom)凭截图领取~ 注:活动截至时间:9 月 9 日18...MongoDB 如果索引字段是数组,那我们可以理解为对每个数组元素创建索引。如果要是多个数组字段建组合索引,就意味着它可能会产生笛卡尔级数据量的索引。...所以,推荐创建尽量少的索引去满足更多的业务查询。 尽量避免对数组字段创建索引 前面说过,对存储数组的字段创建索引,实际上是多数组每个元素创建索引,同时,字段值更新也同步更新索引字段。...关于MongoDB,个人有一点使用方面的问题:易用性 尤其是使用意聚合框架时,易用性相比较关系型数据库的 SQL 操作,差好多,很多时候需要搜文档现学现用。有没有什么使用上的工具或技巧呢?...获取更多精彩内容点击社区网站www.mongoing.com 扫描上方二维码添加小芒果微信(ID:mongoingcom)进入中文用户组技术交流群 长按二维码加入我们

    3.2K50

    Python爬虫技术不只是用来抓数据,生活处处需要python

    Airbnb的冷启动 共享住宿的鼻祖Airbnb早期的用户量和客房量不足,而分类信息发布平台Craigslist拥有庞大的用户量,Airbnb想从Craigslist网站上分走一些流量。...就想出一个办法,以前房东只在Craigslist发布租房信息,Airbnb告诉房东你们在我这发布信息后,我们可以自动帮你同步信息到Craigslist上,房东一想挺好的,编辑一次在Airbnb和Craigslist...一个获得30w用户的自动对话机器人 产品牛人纯银之前做了一款旅游攻略产品禅游记,起初用户很少,增长较慢,他们想出来一个破解办法。...之前在工作中遇到几次,技术同事给我说运营天天让他写自动发帖,模拟对方网站请求功能,而且不稳定,天天让他改,他觉得没技术含量,想辞职,他立刻批准了,在他眼里他只看到对自己有没有好处,在我眼里我看到是对公司有没有好处...分享一些学习的方法和需要注意的小细节,这里是python学习者聚集地 点击:python技术分享

    1.1K30

    我们如何使用Go打造了Uber QPS最高的服务

    使用简单匹配算法(brute-force)非常简单:只要一一查看所有地理围栏,并使用算法(比如光线投射算法)进行点是否在多边形内的比对。不过这个办法速度太慢。那么,如何有效地缩小搜索范围呢?...这意味着每个服务实例都必须有全世界的信息,而不是某个分区的。我们使用确定性轮询调度,确保来自不同服务实例的地理围栏数据保持同步。这样一来,该服务的架构就非常简单了。...对于习惯Node.js单线程的用户来说,Go的内存模型可能会构成挑战。...最后我们进行了妥协,使用读写锁来同步到geo索引的访问。为了将锁定等待的时间减到最短,在转到主索引之前,我们另外构建了新的索引区段为查询提供服务。...使用锁定导致查询的延迟相对于StorePointer/LoadPointer的办法来说有稍许增加,不过在我们看来利大于弊:代码简单化和可维护性的好处值得用稍许性能来换。

    1.4K100
    领券