Web前端开发工程师要知道哪些冷知识?_惠州前端培训学校
作者:hz_admin01发布时间:2022-04-20分类:前端开发专业浏览:624
Web前端开发工程师要知道哪些冷知识?最近惠州北大青鸟很多学员都在问这个问题,那么下面惠州北大青鸟学术部老师给大家解答一下这个问题。
一、JavaScript
所有对象都有 __proto__ 属性,都指向创造对象的函数对象的 prototype。
上传文件要使用 formdata 包装。
Promise.prototype.catch 方法是 .then(null,rejection) 的别名。
同一个 EventTarget 注册了多个相同的 EventListener,那么重复的实例会被抛弃。所以这么做不会使得 EventListener 被调用两次,也不需要用 removeEventListener 手动清除多余的EventListener,因为重复的都被自动抛弃了。
当使用 addEventListener() 为一个元素注册事件的时候,句柄里的 this 值是该元素的引用。其与传递给句柄的 event 参数的 currentTarget 属性的值一样,而 target 是直接接受事件的子元素。
scrollIntoView() 使 div 底部滚动到视窗。
使用 const 的对象和数组的内容是可以被修改的,但数据结构不可变。
在 Webpack 里,所有的文件都是模块。loader 的作用就是把文件转换成 Webpack 可以识别的模块。
关于事件循环,执行下一个 task 之前总会清空 microtask。
npm 新旧版本覆盖可能会造成迷之问题,这个时候可以试试 node_module 整个删掉重装。
* 、 / 和 - 操作符都是数字运算专用的。当这些运算符与字符串一起使用时,会强制转换字符串为数字类型的值。
document.title 可以直接修改当前 html 的标题。
利用对象浅拷贝修改对象,指向同一对象的两个变量修改对象的效果一样。
脑洞题:1 和 2 只用一次的情况下怎么得到 4 答案:1<<2。
连等赋值从右到左。
compositionstart 事件触发于一段文字的输入之前(类似于 keydown 事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)。
void0(void后面加任何东西)用于生成一个绝对的 undefined(不会被重定义),但跟函数会有副作用
注意 localStorage 保存的只能是字符串,所以是没有 null 的。
坑一个:
1. typeof [] === 'object' // true
2. typeof null === 'object' // true
import 同步,require异步(待补充)。
new() 做了些什么?
1. var obj = new Base();
2. var obj = {};
3. obj.__proto__ = Base.prototype;
4. Base.call(obj);
stage 0 到 4 的含义:
§ stage 0 is "i've got a crazy idea",
§ stage 1 is "this idea might not be stupid",
§ stage 2 is "let's use polyfills and transpilers to play with it",
§ stage 3 is "let's let browsers implement it and see how it goes",
§ stage 4 is "now it's javascript".
Object.getOwnPropertyNames(obj).length===0 判断 obj 是不是空对象。
getBoundingClientRect() 用于获取元素宽高以及距离页面边框距离,十分方便。
&& 的使用场景:左边为真继续执行右边,如 isDog&&bark()。
|| 的使用场景:左边为假继续执行右边,如 leti=value||defalutValue。
二、Vue.js
v-model 会自动 bind 一个值,其变量名为 value。
多个特性的元素应该分多行撰写,每个特性一行。以下为 vscode 里 vetur 的设置:
1. "vetur.format.defaultFormatterOptions": {
2. "js-beautify-html": {
3. "wrap_attributes": "force"
4. }
5. }
组件 destroy 时触发自定义指令的 unbind,destory 的时机:diff 之后的 patch,如 v-if,v-for(key不同时,先销毁原来的,再挂载新的(推测))
自定义组件 v-model watch 自动匹配(存疑
组件的 data 属性要用函数返回的原因:创建实例时如果 data 是一个对象的话,所有实例都会引用同一个对象,而对象返回不会有此问题。在浏览器中可以这么做是因为根实例只有一个。
.vue 文件中使用 /deep/ 覆盖子组件 css。
三、GitHub
从 commit 关闭 issues 的方法:commit 信息写 Fixes#33,其他关键字还有 close closes closed fix fixesfixedresolve resolves resolved。
git reset--soft HEAD^ 回退一次 commit。
四、CSS
div 的默认宽度是父元素宽的 100%。
逐帧动画 animation:animate-name3ssteps(每次循环的帧数)infinite;:
1. @keyframes animate-name{
2. from{
3. <!--原位-->
4. background-position: 0 0;
5. }
6. to{
7. <!--最后一帧-->
8. background-position: -1540px 0 ;
9. }
10. }
"Break out" of a parent's containing width to take the full screen of a page w/this nice utility class:
1. .full-width {
2. width: 100vw;
3. position: relative;
4. left: 50%;
5. right: 50%;
6. margin-left: -50vw;
7. margin-right: -50vw;
8. }
行内元素与下一个元素中间有空格(正常排版),会引起一些诡异的缝隙,常见的例如元素之间有间隔,或看起来空了一行(像加了padding)。
pre 标签设置自动换行:white-space:pre-wrap;。
隐藏一个元素,同时让这个元素的宽度可获取:设置 overflow:hidden,可以根据元素高度裁剪视区,设置 height:0;overflow:hidden。虽然文档流中占用了位置,由于高度为 0,最终表现特征达到了我们期望的 display:none。此时该元素 clientHeight、 offsetHeight为 0,但是 scrollHeight 是有值的。
scrollHeight 是一个元素没有滚动条时的所有内容高度,当一个元素没有滚动条时 scrollHeight===offsetHeight。
当 Render Tree 中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。
当页面中元素样式的改变并不影响它在文档流中的位置时(例如:color、background-color、visibility等),浏览器会将新样式赋予给元素并重新绘制它,这个过程称为重绘。
回流必将引起重绘,重绘不一定会引起回流。
移动端优化常用 CSS 属性:
1. user-select: none; // 禁止文字被选中
2. outline:none; // 去除点击外边框,点击无轮廓
3. -Webkit-touch-callout: none; // 长按链接不弹出菜单
4. -Webkit-tap-highlight-color: rgba(0,0,0,0); // 去除点击高亮
@keyframes 的属性要前后对应,否则不形成动画。
img 元素图像自适应居中,与 background-size 效果一样:
1. object-fit: cover;
<img/> 标签千万记得写宽高,不然会花式塌陷。
flex-grow 所在元素如果未定宽度的话,宽度会被子元素撑开。
一个英文单词默认不换行,无论多长,所以要设置 wordbreak。
多行文字居中:
1. .mulit_line{
2. border:1px dashed #cccccc;
3. padding-left:5px;
4. }
5. .mulit_line span{
6. display:inline-block;
7. line-height:14px;
8. vertical-align:middle;
9. }
safari 中控制惯性滚动 -Webkit-overflow-scroll。
滚动条样式可能使滚动条强制显示(未确定)。
flex 布局不换行加 flex-shrink:0; 实现 div 不压缩无限并排,可以用于 swiper 等场景。
巧用猫头鹰选择器 *+* 。
float 自带 display:block。
鼠标禁用 .disabled{pointer-events:none;}。
注意 :last-child 与 :last-of-type 的区别。
::after 表示法是在 CSS3 中引入的, :: 符号是用来区分伪类和伪元素的。支持CSS3的浏览器同时也都支持 CSS2 中引入的表示法 :after。
父元素如果存在 transform 属性,子元素的 position:fixed 属性无效。
less 中的 calc 问题:height:calc(~"100% - 50px");。
vh 在部分浏览器中包含地址栏部分,小心使用。
五、VSCode
alt + shift + 鼠标点击 纵向选择。
vetur 分号问题:安装 prettier,然后配置 "prettier.singleQuote":true,"prettier.semi":false。
可以使用插件 document this 方便写注释。
html tag 属性分行 wrap_attributes:force。
选定变量后按 F12 找到定义位置。
六、其他
魔法隧道用 Webpack 代理会 502。
在组件化编程中,悼念被同名组件浪费了几个钟的 debug 时间[蜡烛]。
局域网连不通的话,先试试,开共享,关闭防火墙。
局域网连不通的话,还可以试试,在 Webpack.config.js 文件的 devServer 里加上 host:'0.0.0.0'。
iOS 的回弹效果,动的是 body 部分,html 是不动的。
学习一个语言之前先看规范。
safari 的 formdata 只支持 append,其他方法需要 polyfill。
rc 的意思是 run commands。
导航栏高度 88px,标签栏高度 98px(iphone5和6常用)。
关于 HTTP 304 Not Modified,简单来说,请求内容没有发生变化的时候,根据设置,服务器可能直接取缓存返回。
点击咨询直接了解更多前端相关资料,我在惠州北大青鸟新方舟等你。
标签:惠州前端培训学校惠州前端基础惠州前端培训北大青鸟IT计算机学校北大青鸟IT软件学校前端北大青鸟IT学校惠州北大青鸟北大青鸟
- 前端开发专业排行
- 标签列表
-
- Java (3694)
- 北大青鸟 (3713)
- 软件开发 (3613)
- JAVA (3413)
- UI设计入门 (2093)
- 惠州北大青鸟 (4375)
- 惠州IT培训 (2558)
- UI设计培训 (2090)
- 惠州UI设计培训 (2095)
- 惠州UI设计培训学校 (2090)
- 惠州计算机软件培训 (6260)
- 惠州计算件软件开发 (6260)
- 惠州计算机软件基础 (6261)
- 惠州计算机JAVA培训 (3574)
- 惠州计算机Java软件开发 (3620)
- 惠州计算机JAVA软件开发 (4645)
- 惠州计算机JAVA软件开发学校 (3338)
- 惠州计算机Java软件开发培训 (3338)
- 北大青鸟IT计算机学校 (5048)
- 北大青鸟IT软件学校 (5062)
- 北大青鸟IT学校 (5059)
- 惠州计算机UI设计软件开发 (2088)
- UI设计基础教程 (2088)
- UI设计是什么 (2088)
- UI设计教程 (2088)
- 网站分类
-
- 计算机教程
- 计算机入门
- 职业学校
- 新闻动态
- 专业课程
- 热门技术
- SEO
- 培训教程
- windows
- linux教程
- 系统集成
- 网站开发
- Html5
- 办公软件
- 师资力量
- 热点问答
- 联系我们
- 计算机学校
- 惠州计算机学校
- 河源计算机学校
- 广州计算机学校
- 深圳计算机学校
- 湛江计算机学校
- 佛山计算机学校
- IT计算机培训信息
- 设计专业
- UI
- 影视特效
- 游戏动漫设计
- Photoshop
- AI设计
- 软件教程
- Java技术
- C语言/C++语言培训
- C#
- Python技术
- PHP
- 数据库
- SQL Server
- 网络教程
- 网络安全
- 网络营销
- 软件专业
- 大数据专业
- 前端开发专业
- 软件测试专业
- Python专业
- 软件实施
- 珠海计算机学校
- 初中生学什么好
- 计算机认证
- 文章归档
-
- 2024年11月 (14)
- 2024年10月 (32)
- 2024年9月 (29)
- 2024年8月 (68)
- 2024年7月 (59)
- 2024年6月 (43)
- 2024年5月 (48)
- 2024年4月 (80)
- 2024年3月 (65)
- 2024年2月 (54)
- 2024年1月 (25)
- 2023年12月 (12)
- 2023年11月 (73)
- 2023年10月 (134)
- 2023年9月 (34)
- 2023年8月 (3)
- 2023年7月 (3)
- 2023年6月 (12)
- 2023年5月 (30)
- 2023年4月 (72)
- 2023年3月 (11)
- 2023年2月 (34)
- 2023年1月 (37)
- 2022年12月 (78)
- 2022年11月 (359)
- 2022年6月 (1193)
- 2022年5月 (570)
- 2022年4月 (1567)
- 2022年3月 (982)
- 2022年2月 (54)
- 2022年1月 (182)
- 2021年9月 (308)
- 2021年8月 (1704)
- 2021年7月 (2423)
- 2021年6月 (1806)
- 2021年5月 (1569)
- 2021年4月 (1380)
- 2021年3月 (1255)
- 2021年2月 (709)
- 2021年1月 (1521)
- 2020年12月 (3626)
- 2020年11月 (1646)
- 2020年10月 (1046)
- 2020年9月 (592)
- 最近发表
-
- 清远信息:2024年广清杯清远南粤家政技能大赛举行决赛|||计算机培训机构
- 汕尾信息:陈良川带队到汕尾技师学院调研|||计算机职业技能培训班
- 东莞信息:凤岗凤岗镇组织召开社保参保缴费及劳动用工政策宣讲会|||计算机软件培训学校
- 阳江信息:2024年度注册城乡规划师职业资格考试的合格标准是怎样的?|||计算机软件培训学校
- 阳江信息:职业技能提升补贴对象有哪些?|||大学生计算机培训学校
- 清远信息:清远市首家社保服务合作网点在清城区举办启动仪式|||计算机职业技能培训班
- 汕头信息:招聘658名中高端人才!2024年汕头市引进中高端人才专场招聘会举行|||北大青鸟计算机培训中心
- 东莞信息:广东省社保智能经办现场会在东莞召开|||大学生计算机培训学校
- 东莞信息:东坑镇举办2024年重点群体系列招聘活动|||计算机职业技能培训班
- 东莞信息:万江万江街道成功举办第四届粤菜师傅烹饪技能竞赛|||广州计算机编程培训