【vue】vue响应式原理 vue2对对象类型的监听是通过Object.defineProperty实现的,给想要实现响应式的数据对象每个属性加上get,set方法,以实现数据劫持的操作。而对数组类型的监听是通过重写数组的方法实现的。模拟vue2响应式实现调用结果:addSex/deleteName/deleteName点击没反应,但实际数据有修改所以,虽然vue2在响应式数据有些问题,但也提出了解决方案,并不是一无是处。
【Effective Web】常见的css布局方式--三栏布局 由于table有自适应的特点,可以把需要自适应的middle的display设置为table-cell。如果要根据窗口自适应,加上一个很大的width,这里设置为2000px。需要把right块提前,同时把middle块加上margin: 0 110px (左右100px + 10px)如果按正常排列,效果会是这样,middle块会尽可能占空间,导致right元素被挤压到下一行。与flex布局类似,不过可以做二维的布局。
【Effective Web】文件上传 文件的上传常见有三种方式:选择文件、拖拽和粘贴。选择文件通常使用表单,文件的数据在form.files中,form为表单元素;拖拽的方式,文件的数据在drop事件的event.dataTransfer.files中;粘贴的方式,文件的数据在paste事件的event.clipboardData.files中;在获取上传文件的数据后,使用fileReader来读取文件数据,展示在页面上,或者添加到formData上,通过接口传递给后台。
【Effective Web】页面优化 本文从避免页面卡顿,怎么加快页面打开速度,增强用户体验三方面入手,说明如何对页面进行优化。当然不止以上这些方式,这里只做抛砖引玉。更重要的是要站在使用者的角度去思考问题,这样才能做出用户满意的页面。
【函数式编程】组合和管道 组合是函数式编程的一种特性,通过定义良好的小函数组合出复杂的函数,要比直接对原输入编写复杂函数省力许多。组合与管道的不同在于数据流方向不同。identity函数的原样返回可以用来对函数组合进行调试。
【函数式编程】柯里化和偏函数 柯里化函数将多参数函数转换为嵌套的单参数函数,可以用来固定较多参数函数的一部分,用于简洁代码,有时候只需要用到前面参数和最后一个参数,中间参数处于未知状态,这正是偏函数应用的地方。
【函数式编程】数组的函数式编程 数组的函数与遍历是分不开的,通过把遍历操作抽象出来,把对一个数组的操作转化成对每一个数组项的操作函数,能专注于问题本身,而一些基本的函数通过组合也可以实现复杂的操作,减少理解代码的成本。
前端常见技巧实现--vue3 vue3增加了Suspense标签,可以用来做异步组件未完成前的加载动画遮挡层。这里使用promise模拟异步组件,实际开发中可能会使用接口。fallback是组件未渲染前的加载动画,也可以是静态页面。
前端技术总结(待完善) 一、前端框架AngularVue二、中台接口axios三、UI框架element-uiEchartbootstrap四、组件codemirrorAntlr4jsplumbdrage.js五、工程化webpackDocker
前端基础--前端路由 前端路由一、由来1、路由这个概念来源于后端,在SSR(Server Side Render, 服务端渲染)的时候,界面渲染的过程是这样的:(1)浏览器发出请求(2)服务器监听到 80 端口(或 443)有请求过来,并解析 url 路径(3)根据服务器的路由配置,返回相应信息(可以是 html 字串,也可以是 json 数据,图片等)(4)浏览器根据数据包的Content-Type来决定如何解析数据2 、Ajax(异步JavaScript和XML)的出现,使界面不用频繁刷新,随着技术的发展,简单
前端基础--数组 1 数组的长度数组的长度有属性length,值是这个数组的最大整数属性名+1const arr = []console.log(arr.length); // 0arr[1000] = trueconsole.log(arr.length); // 10012 数组的删除(1)使用delete缺点:删除的位置会有空缺const arr2 = [1, 2, 3, 4]delete arr2[2]console.log(arr2); // [ 1, 2, <1 empty item
前端技巧--记忆 记忆是主要用于加速程序计算的一种优化技术,使得函数避免重复计算之前被处理的输入,而返回已缓存的结果以斐波那契数列和阶乘为例定义一个函数,参数为一个数组和一个回调函数 var memoizer = function (memo, formule) { var recur = function (n) { var result = memo[n] if (typeof result !== 'number') {