入前端以来,易混肴的前端知识,及一点想法。

前言:感觉任何行业开始都离不开一个借鉴,随着时间的积累,变得熟能生巧。能分辨出利于自己的,或是好用的。这篇文章算是一个积累或者在这个行业本人的部分映射/走向,随缘更新,大部分都是自己常用,但可能掉坑的,督促自己背下来。

零.趋势,前端顶峰,安全

  2019的主体:

  GraphQL
  TypeScript

  React

  flutter

一. CSS

  1. x:nth-of-type(n) 获取父元素下,的第 n 个 x 元素,tips:n 从 0 开始。(注意我的断句!)

  2.x:nth-child(n)     x的父元素下,第 n 个元素,假如刚好是 x,则有效,tips:n 从 1 开始。

  3.x:last-child  x的父元素下,最后一个子元素,恰好为 x

  1. overflow-y:auto 对于 overflow-y:scroll ,同样是对容器上下内容的裁剪,auto 比 scroll 更智能,超出显示滚动条,否则隐藏

  1.transition 过渡

  2.transform 变换

  3.animation 动画

  tips:参考 https://segmentfault.com/a/1190000004460780

二:Promise

  1.Promise.all 的使用注意

  

Promise.all(arr).then(res => {
    // 注意这里 item => 不加括号等于  {return JSON.parse(item.data).result )}        切记箭头函数与Promise的组合使用,一定要有return
      return res.map(item => JSON.parse(item.data).result )
    }).then(data => {
      console.log(data)
    })

三:ES6整理

  1.函数默认参数  function fn (num = 200) { console.log(num) };  fn() 或 fn(300);

  2.async await 可避免回调地狱。async function 大于 Promise,当然在多个 await 之间没有关联时, async await 假若出错将会中断执行,所以建议加上 try { 多条await语句位置 } catch (e) {};高端:let [a, b, c] = await Promise.all([fn1(), fn2(), fn3()])

四:this

const obj = {
    a: function() { console.log(this) },
    b: {
        c: function() {console.log(this)}
    }
}
obj.a()  // 打出的是obj对象, 相当于obj.a.call(obj)
obj.b.c() //打出的是obj.b对象, 相当于obj.b.c.call(obj.b)

  1. 概念:this是函数用call方法调用时传递的第一个参数,而且它还可以手动更改,只有在调用的时候才能确定this的值。

/*
简单总结一下:函数完整的调用方法是使用call方法,包括test.call(context, name)和obj.greet.call(context,name),这里的context就是函数调用时的上下文,也就是this,只不过这个this是可以通过call方法来修改的;构造函数稍微特殊一点,它的this直接指向new之后返回的对象;window.setTimeout()和window.setInterval()默认的是this是window对象。
*/

  2.箭头函数默认绑定(继承)外层 this,并且无法使用call修改,引用MDN:箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。

  3.修改this默认为window的setTimeout

const obj = {
    a: function() {
        console.log(this)
        window.setTimeout(() => {
            console.log(this)
        }, 1000)
    }
}
obj.a.call(obj)  //第一个this是obj对象,第二个this还是obj对象

五:关于 JQuery 完成使命,即将退出舞台

  1.querySelector,querySelectorAll 快速获取DOM节点

  2.classList 代替 addClass,removeClass

  3.Animate.css

  4.原生Fetch API(IE无法使用,需要配合Polyfill)及 axios 代替jq封装的ajax

六、超出隐藏

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;/*最后添加省略号*/

  去浮动

.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
    overflow: hidden;
}

七、居中

.el {
    display: flex;
    align-items: center;
    justify-content: center;
}

八:const 变量的内部状态是可修改的

九:文字不可选

.noselect {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

十:回调函数带参将失去 this 指向

// 若参数 cb 改为 cb(),则失去 this 指向
fn(param, cb) {
    cb()
}
cb () {
    console.log(this)
}

十一:push 返回的是长度,所以请严格按照顺序书写,另外参照第【十八】的不可变性,我们可以使用 concat 代替 push 创建数组的副本

let arr = [3]
arr.push(4) // 2
console.log(arr) // [3, 2]

十二:find 与 filter 的区别,两个方法的原数组都不变,find 查出的是第一个符合的对象,不是数组。

十三:box-sizing: border-box 只需设置 width 与 height,line-height,不需要设置padding。

十四:export 导出

1.export default { xxx } // 一个 js 文件中只能一个
2.export const obj = [ xxx ] // 一个 js 文件中可以多个,等同于3
3.const obj = [ xxx ]
    export { obj }
    export { obj2 }
    ... import * as common from ‘./common.js‘ // webpack中加载依赖,common.obj import {obj, obj2} from ‘./common.js‘

十五:forEach 及 for...of 的比较

// forEach进行数组遍历
// 缺点:不能使用breack语句中断循环,不能使用return语句返回到外层函数

// for...in 辣鸡,用来遍历对象属性,且遍历出来的属性还是字符串

// for...of 无敌,规避forEach的缺点,额外支持类数组【DOM】,字符串。
// 缺点:数组的遍历器接口只返回具有数字索引的属性,假如 myArray.foo = ‘foo‘,则无法遍历出来。

for (var value of myArray) {
  console.log(value);
}
// 遍历键名
for (let index of [‘a‘, ‘b‘].keys()) {
  console.log(index);
}
// 遍历键值
for (let elem of [‘a‘, ‘b‘].values()) {
  console.log(elem);
}
// 遍历键值对
for (let [index, elem] of [‘a‘, ‘b‘].entries()) {
  console.log(index, elem);
}

十六:apply、call、bind 分析与扩展运算符的替代 (...)

十七:js数组方法forEach、map、filter、reduce、every、some总结

map() // 返回一个新的Array,每个元素为调用func的结果
filter() // 返回一个符合func条件的元素数组
some() // 返回一个boolean,判断是否有元素是否符合func条件
every() //返回一个boolean,判断每个元素是否符合func条件
forEach() //没有返回值,只是针对每个元素调用func
reduce() //有返回值,重点是计算数组,返回一个值

1、map速度比forEach快 
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组, 
3、map因为返回数组所以可以链式操作,forEach不能

十八:不可变性,即创建一个新的副本有利于历史朔源

1.let obj3 = Object.assign({}, obj1, obj2)
2.let obj3 = { ...obj1, obj2 }
3.Array.slice() // 能创建该数组的一个副本

原文地址:https://www.cnblogs.com/yuqlblog/p/11126947.html

时间: 2024-10-08 16:36:22

入前端以来,易混肴的前端知识,及一点想法。的相关文章

前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前端群里还发现以上观点类似的奇葩聊天,真是*** 其实,也是在很久以前,看了腾讯ISUX的一位前端工程师-麦时分享的一篇技术文章(个人站点已失效,就不贴出来了),才了解到真正的css选择器权重计算. 以下是css选择器权重计算精华所在,翻译自国外的文档(记得是W3C给出的计算规则) 如果一个声明来自s

006_饿了么大前端总监sofish帮你理清前端工程师及大前端团队的成长问题!

作者|Sofish编辑|小智 & 尾尾本文是前端之巅向 sofish 的约稿<什么样的人可以称为架构师?>.采访< 饿了么大前端团队究竟是如何落地和管理的?>以及 sofish 做客大咖说直播节目的总结和整理,希望能帮助各位淀粉更清晰地理解 sofish 的观点.获取大咖说视频下载链接,请关注前端之巅并回复"鱼老板",查看饿了么大前端更多实践请回复"饿了么".视频回顾 程序员成长之:跨界.困惑与架构师1. 如何看待"大跨度入

关于UED前端开发的一点想法

5.2 关于UED前端开发的一点想法 5.2.1 目前UED前端代码是一个页面对应一个JS文件,更有甚者一个JS文件的代码会超过万行,这样的代码试想该如何维护?如果在从事前端开发的时候避免这种尴尬的局面,我想最好的方式就是分而治之, 如果分而治之?首先解析页面的一般思路,初始化(init) 事件绑定(event)页面读值(getData)页面写值(setData)重置页面(resetData)页面展示(setView)页面校验(checkData)页面异步加载 (ajax),页面测试(test)

【大前端之前后分离】JS前端渲染VS服务器端渲染

前言 之前看了一篇文章:@Charlie.Zheng Web系统开发构架再思考-前后端的完全分离,文中论述了为何要前后分离,站在前端的角度来看,是很有必要的:但是如何说服团队使用前端渲染方案却是一个现实问题,因为如果我是一个服务器端,我便会觉得不是很有必要,为什么要前后分离,前后分离后遗留了什么问题,如何解决,都得说清楚,这样才能说服团队使用前端渲染的方案,而最近我刚好遇到了框架选型的抉择. 来到新公司开始新项目了,需要做前端框架选型,因为之前内部同事采用的fis框架,而这边又是使用的php,这

易混点二

在层次化网络设计方案中,通常在(汇聚层)实现网络的访问策略控制. 层次化网络,核心,汇聚,接入: 核心层,骨干组件,高速交换组件,数据交换的任务: 汇聚层,核心层与终端用户接入层的分界面,网络访问策略,数据包处理,过滤,寻址,其他数据处理的任务: 接入层,本地网段用户接入: 易混点二

开发辅助 | 前端开发工程师必懂的 UI 知识

       移动 UI 设计的世界 ... 1.屏幕尺寸 屏幕大小,指屏幕对角线的长度,而不是屏幕的宽度或高度: 单位为英寸 如 iPhone 7 屏幕尺寸为 4.7 英寸:三星 S6 屏幕尺寸为 5.1 英寸: 2.屏幕像素密度 --- ppi 指每英寸屏幕搜拥有的像素数:由屏幕尺寸和屏幕里所包含的像素数量 计算出来的单位: ppi 指每英寸所拥有的像素数 ,即每英寸像素. 像素密度越高,代表屏幕图像显示越清晰. 同样5英寸的屏幕,像素数多,屏幕像素密度大,屏幕更清晰: 屏幕尺寸 和 像素数

2018web前端学习路线,详谈web前端开发学习路线

近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的发展前景却是非常的可观,好前景高薪资吸引了众多的人投入到前端开发的学习当中去,想学好web前端,这份web前端开发学习路线分享给你. 好的学习方法和掌握好正确的学习路线可以让我们的学习达到事半功倍的效果,如果你新手想要学习web前端的话,那么这份前端的学习路线图很适合你.这份学习路线的课程涵盖JavaScript.HTML5.C

前端工程师如何求职就业 Web前端就业前景怎样

前端工程师如何求职就业?Web前端就业前景怎样?Web前端入门简单.应用广泛,是很多转行从事IT开发的人们的首选.越来越多的人涌入Web前端行业加剧了市场竞争,而互联网技术的更新升级也让企业对于求职者有了更高的要求,出现"低端饱和.高端紧缺"现状.有人好奇Web前端就业怎么样?事实上,只要你的技术好.能够满足企业需求,就业薪资自然很高. 在这里小编建了一个前端学习交流扣扣群:132667127,我自己整理的最新的前端资料和高级开发教程,如果有想需要的,可以加群一起学习交流 那么,企业需

2017前端现状--答题救不了前端新人

众所周知,前端近几年闹了一场革命.前端在编程领域也掀起了学习潮.至少在中国,从2013年下半年至今,在搜索指数上,有着爆炸式的增长.可以看下数据:百度指数,Google指数. 一边是日新月异的新知识不断的冲击着前端,一边是各种新人疯狂涌入前端领域.这两股新流冲击下,倒是火了很多技术社区.问答网站,如:SegmentFault. 打开SegmentFault,首页问答流上,前端相关的题目(包括Node),不说占十之八九,那也是半壁江山.即使是在老牌问答网站StackOverflow上,javasc