前端开发
小仙女爱吃虾滑
这个作者很懒,什么都没留下…
展开
-
mustache使用正则表达式实现
mustache使用正则表达式实现// this is {{name}} object; obj = { name: '123' }function render(template, data) { const reg = /\{\{(\w+)\}\}/g; if (!reg.test(template)) { return template; } const res...原创 2020-02-05 18:45:33 · 501 阅读 · 0 评论 -
Vue依赖注入
当子组件访问父组件的方法或者属性时,通常可以使用this.$parent,当存在多级组件时,这种方式显得力不从心。依赖注入在父组件中定义例如:provide() { return { getMap: this.getMap } },在子组件中定义例如: inject: ['getMap'], methods: { ha...原创 2019-12-30 11:20:38 · 418 阅读 · 0 评论 -
函数节流和防抖简单实现
原创 2018-05-09 16:23:13 · 620 阅读 · 0 评论 -
ES6中的async/await函数
async被称为终极的异步解决方案,避免了回调地狱,用同步的写法处理异步操作async和Generatorasync是Generator的语法糖,两者写法非常相似;Generator代码实例:function* gen(){ //声明一个Generator函数 yield '1' yield '2' yield '3'}let g = gen() /...原创 2018-02-25 17:24:34 · 2848 阅读 · 0 评论 -
ES6中的promise浅析
Promise基本概念 Promise 意为承诺,表示将来一定会发生的事情,是一种异步编程解决方案,最早由社区提出和实现; Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败);只能从pending变为fulfilled或者从pending变为rejected,且一旦状态发生改变,就不会再发生变化。Promise基本用...原创 2018-02-25 15:00:48 · 362 阅读 · 0 评论 -
浅析日历控件的实现
浅析日历控件的实现 日历控件是在开发中常用的控件之一,在没有定制需求的情况下,使用第三方足以解决问题,那么就不需要自己开发;目前一个项目需要个性化定制,因此就梳理下开发一个日历控件的核心部分;日历数据的生成 日历数据包含3部分,上个月的数据、本月的数据以及下个月的数据,主要运用Date的API进行计算;几个关键点 定义数据结构存储日历数据:var list =...原创 2018-02-25 10:57:04 · 378 阅读 · 0 评论 -
JavaScript的操作数组的函数
改变原数组的函数(共7个) push:栈方法,在数组的尾部增加一个元素,返回值是新数组的长度 pop:栈方法,在数组的尾部删除一个元素,返回值是被删除的元素 unshift:队列方法,在数组的头部增加一个或多个元素,返回值是新数组的长度 shift:队列方法,在数组的头部删除一个元素,返回值为被删除的元素 reverse:重排序方法,颠倒数组的顺序 sort:...原创 2017-08-04 20:56:40 · 504 阅读 · 0 评论 -
JavaScript中的基本数据类型
基本类型值:简单的数据段 引用类型值:多个值构成的对象 JavaScript中有5种基本数据类型,Undefined、Null、String、Number、Boolean、Symbol(ES6新增)在复制变量值的操作中:对于基本类型的值,例如var num1=5; var num2=num1通过这种方式将num1赋值给num2,num1与num2是完全独立的。对于引用类型值,例如v...原创 2017-08-05 09:19:23 · 460 阅读 · 0 评论 -
Vue源码阅读分享---工具函数
Vue是优秀的前端MVVM框架,阅读源码对于理解框架以及提高js编程水平有极大的帮助,所以把自己阅读的源码分享给大家! 判断一个值是不是为空function isUndef (v) { return v === undefined || v === null} 判断一个值是不是不为空function isDef (v) { return v !== u...原创 2017-08-15 11:20:49 · 520 阅读 · 0 评论 -
JavaScript中String类型的方法
String类型是字符串的包装类型,可以通过构造函数new String('abc')的方式来创建,也可以var str=’abc’字面量的方式创建。 所有的字符串值都可以访问String对象的方法valueOf()、toString()、toLocaleString()都返回对象所表示的基本字符串的值,length表示包含的字符数 String类型提供的方法有:...原创 2017-08-15 14:56:21 · 617 阅读 · 0 评论 -
JavaScript实现事件原型
function Emitter(){ this._listener=[];}//绑定事件Emitter.prototype.bind=function(eventName,callback){ var listener=this._listener[eventName]||[] listener.push(callback); this._listener[...原创 2017-08-23 10:48:11 · 626 阅读 · 0 评论 -
vue中使用滚动到列表底部
vue中列表滚动到底部 使用原生js,通过div.scrollTop = div.scrollHeight;实现滚动到底部在vue中,可以使用不同的方式: 监听列表数据:当list发生变化时,执行滚动到底部的逻辑watch:{ list(val){ //执行滚动到底部的逻辑 this.$nextTick(() => { //必须...原创 2017-10-20 10:58:31 · 3048 阅读 · 0 评论 -
JavaScript简单实现发布订阅模式
发布订阅模式主要涉及三个对象:发布者、订阅者、主题对象。function Dep(){ //主题对象 this.subs = []; //订阅者列表}Dep.prototype.notify = function(){ //主题对象通知订阅者 this.subs.forEach(function(sub){ //遍历所有的订阅者,执行订阅者提供的更新方法 su...原创 2018-02-07 10:21:08 · 1192 阅读 · 0 评论 -
webApp优化心得
webapp性能优化 本文中提到的app前端采用的技术栈是Vue全家桶+原生jshttp请求优化:场景1: 当用户操作过快时,页面之间跳转时间缩短,在网络状态不可控的情况下,有可能造成在B页面中提示A页面的消息。 优化方案:在跳转页面的时候,对现有的且已经不需要的ajax请求进行abort操作;详细步骤如下: 1. 全局存储ajax:每次发送ajax请求时,返回一个x...原创 2018-02-08 10:07:58 · 949 阅读 · 0 评论 -
跨站资源共享(CORS)
跨域http请求 当两个站点的协议(http、https、ftp)、域名、端口不同时,该两个站点构成跨域。出于安全原因, 浏览器会限制脚本发起跨域http请求(也有可能是正常发送,但是拦截返回值)。实际项目中常用的解决跨域的方法通常有JSONP、CORS等。使用CORS跨域 JSONP跨域比较简单,不需要服务器端配合,但是只能发送GET请求;CORS是目前使用最为广泛的跨...原创 2018-02-19 22:02:26 · 683 阅读 · 0 评论 -
JavaScript语言精粹读书笔记
JavaScript运算符优先级 运算符的优先级,依次降低 运算符 含义 . [] () 提取属性与调用函数 delete new typeof + - ! 一元运算符 * / % 乘法、除法、求余 + - 加法/连接、减法 >= <...原创 2018-02-26 16:23:21 · 237 阅读 · 0 评论