JS
柏灿
iOS,前端,混合开发
展开
-
JS UMD规范实现
JS UMD规范实现原创 2023-07-11 17:35:20 · 510 阅读 · 0 评论 -
package.json文件^和~区别
我们在项目开发中常引用npm包,那么package.json文件^和~区别是什么?原创 2022-06-23 17:23:14 · 10235 阅读 · 1 评论 -
JS比较字符串大小
JavaScript中可以直接使用大于(>)、小于(<)运算符进行字符串大小比较。此方法会根据第一个不同的字符的ascii码进行比较。原创 2021-10-26 16:14:21 · 2593 阅读 · 0 评论 -
用setTimeout实现循环执行函数
用setTimeout实现间隔指定时间,执行指定次数,执行某函数原创 2021-09-14 17:25:03 · 3185 阅读 · 0 评论 -
js导出excel
近期公司有一个纯前端导出excel功能,先写一个快速导出方案吧,极简模式:const table = document.getElementsByTagName('table');const uri = 'data:application/vnd.ms-excel;base64,';const template = '<html><head><meta charset="UTF-8"></head><body><table bor原创 2021-07-22 15:07:38 · 508 阅读 · 0 评论 -
MAC完全卸载node
1.homebrew安装,卸载方法:brew uninstall node2.官网下载pkg安装,完全卸载方法sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}原创 2020-03-20 15:55:29 · 4292 阅读 · 0 评论 -
JS闭包
什么是闭包?定义一:闭包是指有权访问另外一个函数作用域中的变量的函数。其它定义:闭包是指那些能够访问自由变量的函数。 (其中自由变量,指在函数中使用的,但既不是函数参数arguments也不是函数的局部变量的变量,其实就是另外一个函数作用域中的变量。)闭包产生的原因:首先要明白作用域链的概念,其实很简单,在ES5中只存在两种作用域————全局作用域和函数作用域,当访问一个变量时,解...转载 2019-11-26 14:26:56 · 135 阅读 · 0 评论 -
webpack配置文件详细分析
一、前言vue-cli是构建vue单页应用的脚手架,输入一串指定的命令行从而自动生成vue.js+wepack的项目模板。这其中webpack发挥了很大的作用,它使得我们的代码模块化,引入一些插件帮我们完善功能可以将文件打包压缩,图片转base64等。后期对项目的配置使得我们对于脚手架自动生成的代码的理解更为重要,接下来我将基于webpack3.6.0版本结合文档将文件各个击破,纯干料。重点...转载 2018-09-11 18:53:57 · 3838 阅读 · 2 评论 -
webpack4 optimization配置
从webpack4开始官方移除了commonchunk插件,改用了optimization属性进行更加灵活的配置,这也应该是从V3升级到V4的代码修改过程中最为复杂的一部分,下面的代码即是optimize.splitChunks 中的一些配置参考module.exports = { optimization: { runtimeChunk: { name: 'mani...转载 2018-09-12 14:50:57 · 17458 阅读 · 0 评论 -
JS原型规则
原型的5个规则 所有的引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(除了“null”意外) 所有的引用类型(数组,对象,函数),都有一个__proto__(隐式原型)属性,属性值是一个普通对象 所有的函数都有一个prototype(显式原型)属性,属性值是一个普通对象 所有的引用类型(数组,对象,函数),__proto__属性指向它的构造函数“prototy...原创 2018-09-12 22:50:57 · 357 阅读 · 0 评论 -
H5跳转至APP指定页面
1.设置urlschemesurlschemes尽量设一个唯一的字符串,例如可以设为:iOS+公司英文名+ 项目工程名 比如我的设为iOSTencentTest,在浏览器中输入地址iOSTencentTest://即可跳转到我的app2.跳转到指定页面在使用iOSTencentTest://打开app会调用AppDelegate的代理方法-(BOOL)application...转载 2018-11-13 09:26:45 · 9369 阅读 · 0 评论 -
JS监听浏览器的返回事件
最近在实现一个需求,要求监听浏览器的返回操作,百度之后都是这个方法,原理如下:在页面中我们可以使用javascript window history,后退到前面页面,但是由于安全原因javascript不允许修改history里已有的url链接,但可以使用pushState方法往history里增加url链接,并且提供popstate事件监测从history栈里弹出url。既然有提供popst...原创 2018-11-15 16:54:52 · 18429 阅读 · 0 评论 -
SPA(单页面web应用)和MPA(多页面web应用)
转载 2018-12-18 10:01:32 · 1055 阅读 · 0 评论 -
MAC 系统node版本管理
MAC系统安装node.js后,可以通过n模块和nvm进行版本管理,nvm使用比较复杂,推荐使用n模块方法:1、安装n模块 $ sudo npm install -g n 安装完成之后,直接输入n后输出当前已经安装的node版本以及正在使用的版本2、通过移动上下方向键来选择要使用的版本回车生效nvm 和 n 的区别 nvm 类似于 Pyth...原创 2019-01-08 18:20:19 · 3548 阅读 · 0 评论 -
webstorm激活破解
2016.2.2 版本的破解方式:安装以后,打开软件会弹出一个对话框;选择“license server” 输入:http://114.215.133.70:410172016.2.3 版本的破解方式:在打开的License Activation窗口中选择“activation code”,在输入框输入下面的注册码2016.3.1 版本的破解方式:最新版本就是3.1,在打开的Licens...原创 2016-12-05 10:21:43 · 11282 阅读 · 2 评论 -
input只输入数字
1、极简方法 属性中直接添加keyup事件onkeyup="value=value.replace(/[^\d]/g,'')"2、监听input事件在函数中进行替换操作原创 2018-08-12 12:45:21 · 652 阅读 · 0 评论 -
can't start git:usr/bin/git
webstorm提示can't start git:usr/bin/git probably the path to git executable is not valid这种情况可能出现在系统更新之后出现这个问题是因为该目录下git无法执行,下面说一下解决办法1.在终端界面输入 sudo2.user/bin/git3.提示invalid active develope原创 2017-06-09 09:35:06 · 5824 阅读 · 0 评论 -
浏览器性能优化-JS篇
众所周知,JS的加载和执行会阻塞浏览器渲染,所以目前业界普遍推荐把script放到之前,以解决js执行时找不到dom等问题。但随着现代浏览器的普及,浏览器为我们提供了更多强大的武器,合理利用,方可大幅提高页面加载速度。理解渲染过程(HTML Parser)首先我们从浏览器的角度解释一下从输入URL到页面展示经历了些什么,以如下html文档举例html>head>转载 2018-01-03 23:15:42 · 3078 阅读 · 0 评论 -
浏览器性能优化-CSS篇
众所周知,CSS的加载会阻塞浏览器渲染或是引起浏览器重绘,目前业界普遍推荐把CSS放到中,防止在CSS还没加载完,DOM就已经绘制出来了,造成CSS加载完成后的重绘。那在现代浏览器中我们有没有办法提高首屏渲染速度那?你是不是经常在第一次打开某个网站的时候看到这种情况,本来的页面是这样的实际上刚加载出来的是这样的字体文件没加载出来,或者加载的太慢了理解CSS解析过转载 2018-01-03 23:19:06 · 283 阅读 · 0 评论 -
live-server的使用
本地开发常常需要搭建临时的服务,第一时间我们会想到用http-server。但现在流行修改文件浏览器自动刷新hot socketing(热拔插),如live-reload。若想浏览器自动打开项目,用opener。现在live-server实现了三个插件的所有功能,并且很简单就能启动一个看起来很专业的本地服务NPM全局安装npm install -g live-server其原创 2018-01-08 22:25:40 · 48165 阅读 · 2 评论 -
JS异步加载的几种方式
1、同步加载我们平常写JS的时候都是用的阻塞模式如<script type="text/javascript" src="../../libs/crypto/abc.js" ></script><script type="text/javascript" src="../../libs/crypto/abcd.js" ></scr原创 2018-02-28 09:55:20 · 9483 阅读 · 0 评论 -
跨域的几种方式
什么是跨域?跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。广义的跨域:1.) 资源跳转: A链接、重定向、表单提交2.) 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链3.) 脚本请求: js发起的aja...转载 2018-03-03 15:27:54 · 427 阅读 · 0 评论 -
ES6 let var const
let 允许你声明一个作用域被限制在块级中的变量、语句或者表达式 let绑定不受变量提升的约束,这意味着let声明不会被提升到当前 该变量处于从块开始到初始化处理的“暂存死区”。var 声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的 由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明 ...原创 2018-03-03 17:34:41 · 311 阅读 · 0 评论 -
js如何判断用户使用的设备类型及平台
前端开发经常遇到需要判断用户的浏览设备,是pc端还是移动端,移动端使用的是什么手机系统?android、ios、ipad、windows phone等等,有时候还需要知道用户浏览页面是在微信中打开还是在移动端浏览器中打开,等等一系列判断做一些相应的处理。 1、首先判断pc端还是移动端。 function IsPC() { var userAgentInfo = nav...转载 2018-03-04 10:36:25 · 3712 阅读 · 0 评论 -
常用的一些算法
字符串中各个字符串出现的次数var arr = 'abcdaabc';var info = arr .split('') .reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});console.log(info); //{ a: 3, b: 2, c: 2, d: 1 }reduce 对于低版本兼容性不是很好,可以用下面的...转载 2018-04-19 16:34:58 · 269 阅读 · 0 评论 -
前端性能优化--预加载技术
当我们谈到前端的性能时,总是会提到比如合并、压缩、缓存或者在服务器上开启gzip之类的,目的都是为了让页面加载的更快。资源预拉取(prefetch)则是另一种性能优化的技术。通过预拉取可以告诉浏览器用户在未来可能用到哪些资源。Pre-fetching会提示浏览器那些未来一定或可能使用到的资源,有时在当前页面见效,有些则在未来可能打开的页面生效。 作为开发者,我们比浏览器更懂自己的应用。我们可以利用...转载 2018-06-13 09:48:52 · 706 阅读 · 0 评论 -
Chrome Dev Tool 中时间线各阶段代表的意义
Queueing(排队时间)如果某个请求正在排队,则指示:请求已被渲染引擎推迟,因为该请求的优先级被视为低于关键资源(例如脚本/样式)的优先级。 图像经常发生这种情况。请求已被暂停,以等待将要释放的不可用 TCP 套接字。请求已被暂停,因为在 HTTP 1 上,浏览器仅允许每个源拥有六个 TCP 连接。生成磁盘缓存条目所用的时间(通常非常迅速)Stalled(也即是从TCP连接建立完成,到真正可以...原创 2018-06-14 11:16:40 · 805 阅读 · 0 评论 -
从输入一个url到浏览器页面展示都经历了哪些过程
面试的时候有些面试官会问这个问题,可按如下流程作答:1、首先,在浏览器地址栏中输入url2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。5、握手成功后,浏览器向服务器发送...原创 2018-07-19 17:00:04 · 5962 阅读 · 0 评论 -
JS判断页面由哪个APP打开
我们有个需求:有一个WEB页面上面有用app打开的按钮,但是在APP页面内部展示的时候是不需要这个按钮的,这时候我们就需要一段判断在哪个APP打开的JS最好是你们自己的APP可以提供一个返回navigator.userAgent.indexOf('')这样只用单独判断是否在APP内部打开即可,如果没有就只能做大量判断了 var browser = {原创 2017-06-06 17:57:33 · 5472 阅读 · 0 评论