js代码

JS防抖与节流

无人久伴 提交于 2019-12-06 14:41:40
在进行窗口的resize、scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕。此时我们可以采用debounce(防抖)和throttle(节流)的方式来减少调用频率,同时又不影响实际效果。 函数防抖 函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。如下图,持续触发scroll事件时,并不执行handle函数,当1000毫秒内没有触发scroll事件时,才会延时触发scroll事件。 一起来实现个简单的debounce~ 防抖debounce代码: // 防抖 function debounce(fn, wait) { var timeout = null; return function() { if(timeout !== null) clearTimeout(timeout); timeout = setTimeout(fn, wait); } } // 处理函数 function handle() { console.log(Math.random()); } // 滚动事件 window.addEventListener('scroll', debounce(handle, 1000));

Django 静态资源管理利器:django-pipeline

本小妞迷上赌 提交于 2019-12-06 14:32:25
django-pipeline 是一个 Django 下非常方便的静态资源管理 app,尤其是 1.2 版本之后,利用 django-staticfiles 的 collectstatic 命令,在开发、部署环境下切换非常方便。 写 codinn.com 代码的时候,静态资源管理方面遇到了一些烦人的事情: 为了加速页面加载速度,浏览器会缓存静态文件,静态资源更新后,浏览器很可能从缓存提取过期的静态文件 自己写的 CSS/JS 要手工 minify,非常麻烦 零碎的 CSS/JS 小文件太多 CSS/JS minified 之后,开发环境下调试起来很不方便 django-pipeline 通过静态资源版本化、自动 minify、分组合并 CSS/JS 文件、兼容 django-staticfiles URL 规则以及 collectstatic 命令。 slimit / jsmin 图个省心,我通常使用 jsmin/cssmin 这两个 Python minifier: PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.jsmin.JSMinCompressor' PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.cssmin.CssminCompressor' 但是 jsmin 年久失修

动态加载js文件的正确姿势

十年热恋 提交于 2019-12-06 14:22:01
最近在做一个为网页生成目录的工具 awesome-toc ,该工具提供了以jquery插件的形式使用的代码,也提供了一个基于 Bookmarklet (小书签)的浏览器插件。 小书签需要向网页中注入多个js文件,也就相当于动态加载js文件。在编写这部分代码时候遇到坑了,于是深究了一段时间。 我在这里整理了动态加载js文件的若干思路, 这对于理解异步编程很有用处,而且也适用于Nodejs 。 代码整理在了 https://github.com/someus/how-to-load-dynamic-script 。 硬编码在html源码中的script是如何加载的 如果html中有: <script type="text/javascript" src="1.js"></script> <script type="text/javascript" src="2.js"></script> 那么,浏览器解析到 <script type="text/javascript" src="1.js"></script> 会停止渲染页面,去拉取 1.js (IO操作),等到 1.js 的内容获取到后执行。 1.js执行完毕后,浏览器解析到 <script type="text/javascript" src="2.js"></script> 进行和 1.js 类似的操作。

JS的并行加载与执行顺序

浪子不回头ぞ 提交于 2019-12-06 14:21:35
JavaScript文件(下面简称脚本文件)需要被html文件引用才能在浏览器中运行。在html文件中可以通过不同的方式来引用脚本文件,我们需要关注的是,这些方式的具体实现和这些方式可能会带来的性能问题。 当浏览器遇到(内嵌)<script>标签时,当浏览器无从获知JavaScript是否会修改页面内容。因此,这是浏览器会停止处理页面,限制性JavaScript代码,然后再继续解析和渲染页面。同样的情况也会发生在使用src属性加载JavaScript的过程中(即外链JavaScript),浏览器必须先花时间下载外链文件中的代码,然后解析并执行它。在这个过程中,页面渲染和用户交互完全被阻塞了。 也就是说,每当浏览器解析到<script>标签(无论是内嵌还是外链)时,浏览器会(一根筋的)优先下载、解析并执行该标签中的JavaScript代码,而阻塞了其他所有页面内容的下载和渲染。 五种引用脚本的方式: 1.惯例的做法 最传统的方式是在head标签内插入<script>标签,然而这种常规的做法却隐藏着严重的性能问题,根据上述对<script>标签特性的描述,我们知道,在该例中,当浏览器解析到<script>标签时,浏览器会停止解析其后的内容,而优先下载脚本文件,并执行其中的代码,这意味着,其后的test.css样式文件和<body>标签都无法被加载,由于<body>标签无被加载

java接入微信JS-SDK

流过昼夜 提交于 2019-12-06 14:21:08
在微信公众号开发中不可,jssdk的接入虽然不是必须,但是根据业务需求我们还是可能用到,下面是自己整理的关于java接入的jssdk的方法,这里是记录关于接入微信JS-SDK的准备工作,关于接入JS-SDK的相关功能,官网有明确的说明 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 。 第一步: 绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:登录后可在“开发者中心”查看对应的接口权限。 第二步: 引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js 如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)。 备注:支持使用 AMD/CMD 标准模块加载方法加载 第三步: 通过config接口注入权限验证配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

浏览器组成和各引擎工作原理

百般思念 提交于 2019-12-06 14:18:50
1.浏览器的主要构成部分 1.用户界面 2.浏览器引擎(负责窗口管理、Tab进程管理等) 3.渲染引擎(有叫内核,负责HTML解析、页面渲染) 4.JS引擎(JS解释器,如Chrome和Nodejs采用的V8) 这里面最核心的就是渲染引擎和JS引擎,后面会详细介绍这两个引擎的相关内容。 常见浏览器的渲染引擎和JS引擎如下: 注:新版本的Chrome采用的渲染引擎是Blink,Blink是由谷歌团队从Webkit衍生开发出来的引擎,主要有应用到Chrome和Opera浏览器。 2.从进程和线程的角度来理解浏览器工作 1)进程和线程 进程是cpu资源分配的最小单位(是能拥有资源和独立运行的最小单位) 线程是cpu调度的最小单位(线程是建立在进程的基础上的一个程序运行单位,一个进程中可以有多个线程) 进程可以类比为工厂,线程就是工厂里面的工人,一个工厂可以包含一个或者多个工人,工人之间可以相互协作,并且共享工作空间 2)浏览器的多进程架构 现代的浏览器采用的都是多进程架构,主要包含以下三种进程: 1.Browser进程 浏览器的主线程,主要负责浏览器的页面管理、书签、前进后退、资源下载管理等,整个浏览器应用程序只有一个,对应上述浏览器组成中的浏览器引擎。 2.渲染进程 内核进程、负责页面渲染、JS执行,对应的是上述的渲染引擎和JS引擎,一个浏览器可以包含多个渲染进程

泛微OA常用js代码块

风流意气都作罢 提交于 2019-12-06 14:16:50
01.泛微系统alert提示框 Dialog.alert("警告框"); 02.checkbox被选中监听事件,监听checkbox复选框 打开表单首先隐藏行 如果checkbox被选中 显示行 <!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 --> <script type="text/javascript"> jQuery(document).ready(function() { jQuery(".mainTd_6_0").parent().hide(); jQuery("#field6421").click(function() { if(jQuery("#field6421").attr("checked") == true) { jQuery(".mainTd_6_0").parent().show(); } else { jQuery(".mainTd_6_0").parent().hide(); } }); }); </script> 03.提交验证表单结束日期不能少于开始日期 <!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 --> <script type="text/javascript"> jQuery(document).ready(function() { checkCustomize =

JS面试题重点

旧时模样 提交于 2019-12-06 13:49:21
面试题更新中~ 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型: Undefined、Null、Boolean、Number、String 值类型:数值、布尔值、 null、undefined。 引用类型:对象、数组、函数。 堆栈数据结构:是一种支持后进先出 (LIFO)的集合,即后被插入的数据,先被取出! js数组中提供了以下几个方法可以让我们很方便实现堆栈: shift:从数组中把第一个元素删除,并返回这个元素的值。 unshift: 在数组的开头添加一个或更多元素,并返回新的长度 push:在数组的中末尾添加元素,并返回新的长度 pop:从数组中把最后一个元素删除,并返回这个元素的值。 2.判断数据类型? typeof返回的类型都是字符串形式,可以判断function的类型;在判断除Object类型的对象时比较方便。 判断已知对象类型的方法: instanceof,后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。 3.异步编程? 方法 1:回调函数,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。 方法 2:时间监听,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”(Decoupling)

第05组 Beta冲刺(1/5)

主宰稳场 提交于 2019-12-06 13:03:45
 队名:计算机四班好朋友联盟  组长博客: 组长博客  作业博客: 作业博客 大家有话说🙃 ⭐方瑞雄(组长) 1、过去两天完成了哪些任务:   学习小程序测试以及博客编写 2、接下来计划:   完善后端代码,测试小程序 3、还剩下哪些任务:   完善后端代码,测试小程序 4、遇到了哪些困难:   后端代码远比我们小组想得还难,所以需要一段时间修改 5、有哪些收获和疑问:   加强了自己的代码能力 👇刘诗琳 1、过去两天完成了哪些任务:   完成了alpha计划的界面 2、接下来计划:   完善视图层,实现订单确认功能,完成js文件 3、还剩下哪些任务:   订单确定,筛选 4、遇到了哪些困难:   对前端语言不熟练,动手实践时对各种标签的属性不了解。 5、有哪些收获和疑问:   进一步熟悉了基础的小程序视图语言,但还不够熟悉 👇马丽华 1、过去两天完成了哪些任务:   继续完善界面   做页面的跳转和部分交互 2、接下来计划:   继续修改美化界面   继续未完成部分的页面的交互 3、还剩下哪些任务:   页面的交互 4、遇到了哪些困难:   不太会做交互进度就比较慢 5、有哪些收获和疑问:   学到了新的东西非常开心 👇王玥 1、过去两天完成了哪些任务:   对相关界面小图标和图案的设计与绘制,熟悉微信小程序开发流程和相关语言,以及对自己所分配到的界面的统一润色。 2、接下来计划

第05组 Beta冲刺(1/5)

最后都变了- 提交于 2019-12-06 13:02:03
 队名:计算机四班好朋友联盟  组长博客: 组长博客  作业博客: 作业博客 大家有话说🙃 ⭐方瑞雄(组长) 1、过去两天完成了哪些任务:   学习小程序测试以及博客编写 2、接下来计划:   完善后端代码,测试小程序 3、还剩下哪些任务:   完善后端代码,测试小程序 4、遇到了哪些困难:   后端代码远比我们小组想得还难,所以需要一段时间修改 5、有哪些收获和疑问:   加强了自己的代码能力 👇刘诗琳 1、过去两天完成了哪些任务:   完成了alpha计划的界面 2、接下来计划:   完善视图层,实现订单确认功能,完成js文件 3、还剩下哪些任务:   订单确定,筛选 4、遇到了哪些困难:   对前端语言不熟练,动手实践时对各种标签的属性不了解。 5、有哪些收获和疑问:   进一步熟悉了基础的小程序视图语言,但还不够熟悉 👇马丽华 1、过去两天完成了哪些任务:   继续完善界面   做页面的跳转和部分交互 2、接下来计划:   继续修改美化界面   继续未完成部分的页面的交互 3、还剩下哪些任务:   页面的交互 4、遇到了哪些困难:   不太会做交互进度就比较慢 5、有哪些收获和疑问:   学到了新的东西非常开心 👇王玥 1、过去两天完成了哪些任务:   对相关界面小图标和图案的设计与绘制,熟悉微信小程序开发流程和相关语言,以及对自己所分配到的界面的统一润色。 2、接下来计划