
JavaScript
力为
这个作者很懒,什么都没留下…
展开
-
H5 canvas接收键盘事件
HTMLCanvas接收事件的前提:Canvas得到焦点(Focus)Canvas 获取焦点的前提:给Canvas设置了tableIndex。window.onload = function() { let myCanvas = document.getElementById('canvas'); myCanvas.tableIndex = 1; document.addEventListener('mousedown', function(event) {原创 2022-01-20 17:52:37 · 987 阅读 · 0 评论 -
Vuex:以状态为中心的消息触发机制
基于状态的组件之间的一对多的事件通知机制:1. 组件A触发状态更改 基于Vuex的mapActions,触发状态修改2. 组件B、C对状态更改做出响应 基于mapGetters和watch,监听状态更改...原创 2020-04-30 13:11:12 · 696 阅读 · 0 评论 -
Javascript中for-in效率分析和优化
Javascript程序中,我们经常使用Object来模拟dictionary/map/hashmap的行为,也会使用for-in语法来遍历dictionary的元素。但你是否遇到过由于使用for-in而导致程序产生性能问题呢? 问题Javascript里的数据结构比较简单,除了数组,就是使用对象模拟的字典/Hash表。比如:var dict = { key1: "va...原创 2018-10-13 13:03:24 · 2352 阅读 · 0 评论 -
Canvas2D绘制填充面
组成面的loop分为outer loop和inner loop,其中outer loop一般为逆时针,inner loop一般为顺时针。如果inner loop的顺序与outer loop一致,则不内部的loop会失效。<!DOCTYPE html><html><body><canvas id="myCanvas" width="1000" h...原创 2018-05-23 12:50:19 · 3107 阅读 · 0 评论 -
Web Worker Best Practices
使用Web Worker可以把一些比较计算量相对大的阻塞浏览器响应的计算放在单独的线程里计算。请求优化构造Worker的时候需要给定js的链接URL,worker内部请求js运行代码。假如worker有若干个,但使用同一个js文件,也仍然会请求js多次。听起来就不是个好的方法。能够做到只请求一次worker js就最好了。那如何做到?使用window.URL.createObjectURL可以构造原创 2016-07-20 14:20:53 · 1304 阅读 · 0 评论 -
大规模WebGL应用引发浏览器崩溃的几种情况及解决办法
一般的Web应用基本上不会导致浏览器崩溃,写Javascript代码也不需要管理内存资源,基本也不需要考虑内存“泄露”的问题。随着H5的崛起,越来越多的原本在桌面端的软件也改头换面迁移到Web上来,比如三维图形类的应用。在Web端显示大规模三维模型不仅仅是三维显示引擎的问题,也涉及到数据组织、任务调度、资源管理、浏览器兼容等方方面面。这里针对在项目中遇到到几种把浏览器高挂的情况简要列举了一下。原创 2016-06-04 17:17:00 · 45975 阅读 · 3 评论 -
异步请求引发的Chrome死锁
浏览器支持的并发异步请求数目是有限的,当需要的资源过多时候(远远大于并发数目),就需要自己管理XHR请求。在实现自己的XHR的Manger时候,当请求数目达到2000多的时候,经常会遇到chrome的xhr状态为pending的情况。开始猜测是不是因为请求的数目太多所致。于是测试顺序请求2000多的xhr,结果chrome正常工作。检查自己的代码后发现,原来是存在同一资源同时请求的情况。在这种情况原创 2016-04-15 15:45:54 · 6547 阅读 · 2 评论 -
ActiveMQ + NodeJS + Stomp 极简入门
前提 安装ActiveMQ和Nodejs测试步骤1.执行bin\win32\activemq.bat启动MQ服务2. 打开http://localhost:8161/admin/topics.jsp用户名和密码都是 admin3. 下载Stompnpm install stomp-client4. js的测试代码var Stomp = require('stomp-client');var de原创 2016-01-30 17:14:01 · 9945 阅读 · 1 评论 -
优化Javascript数据遍历
问题M是一个对象的集合,没个对象拥有唯一的字符串类型的IdN是Id的集合。从M中过滤掉Id不在N中的对象。假如M有50w个数据,N中可能是0~50w任意的数据。方案1使用数组保存Id的集合。这样就有两种方式遍历1.1 N = [id, ...];for(var m in M) for(var n in N){ .....}1.2for(var m in M) if(N.indexOf(m原创 2016-01-26 16:51:56 · 2451 阅读 · 4 评论 -
IE下的deflate模式
浏览器有一个非常有用的特性:自动解压。在使用AJAX请求数据的时候,数据在服务器端压缩传输,在浏览器端自动解压,请求直接得到解压后的结果。在Request Header中,一般会列出浏览器支持的压缩格式,如ChromeAccept-Encoding:gzip, deflate, sdchIE11和Edge也号称支持gzip, deflate模式。然而, 在实际使用过程中发现,IE11和Edge并不原创 2015-10-10 13:27:04 · 2681 阅读 · 1 评论 -
使用jQuery AJAX读取二进制数据
READING BINARY DATA USING JQUERY AJAXhttp://www.henryalgus.com/reading-binary-files-using-jquery-ajax/Query is an excellent tool to make web development easy and straightforward. It helps while doing翻译 2015-10-10 12:44:45 · 21207 阅读 · 1 评论 -
require.js使用步骤
以superagent为例1.设置lib目录requirejs.config({ baseUrl: 'libs' });2. 使用SuperAgent require(['superagent'], function (request) { var req = request.get(url); req.end(function (err, res) {原创 2015-09-29 14:45:08 · 2082 阅读 · 1 评论