Day4:前端工程化初探

CSS效果和动画

css效果CSS里非常出彩的一部分,灵活应用box-shadow,运用无限投影,甚至可以画机器猫之类的不可思议的图形。

CSS中实现动画的方式:transition,keyframes

过渡动画和关键帧动画的区别:

  • 过渡动画需要有状态变化(延迟改变,eaesing方式)
  • 关键帧动画不需要状态变化
  • 关键帧动画能控制更精细

CSS动画的性能:

  • 性能不坏
  • 部分情况下优于JS
  • 但JS可以做到更好
  • 部分高危属性 box-shadow等

JS开发环境

git使用经验:

git checkout xxx 撤销修改

git checkout -b dev 切换分支到dev

git branch 查看当前分支

git diff

git commit origin dev 把dev分支提交到远程服务器

git checkout master 切换到已有分支

git pull origin master 检查远程库的修改

git merge dev 把dev的修改合并到mater分支

git push origin master 最后提交到master分支上

模块化

AMD 异步模块规范

  • require.js
  • 全局define函数
  • 全局require函数
  • 依赖JS会自动、异步加载

CommonJS规范

nodejs模块化规范,现在被大量用做前端,原因:

  • 前端开发以来的插件和库,都可以从npm中获取
  • 构建工具的高度自动化,使得使用npm的成本非常低
  • CommonJS不会异步加载JS,而是同步一次性加载出来
image.png

AMD和CommonJS的使用场景

  • 需要异步加载JS,使用AMD
  • 使用了npm之后建议使用CommonJS

浏览器渲染页面的过程

  • 根据HTML结构生成DOM Tree
  • 根据CSS生成CSSOM
  • 将DOM和CSSOM整合形成RenderTree
  • 根据RenderTree开始渲染和展示
  • 遇到<script>时,会执行并阻塞渲染

css放在head中,让浏览器事先知道渲染规则。否则用户体验差,出现卡动的情况。

js放在body的最后,因为要先把html基本结构渲染出来,js放在后面能拿到所有标签

window.onload要等全部资源加载完才能执行,包括图片视频等
DOMContentLoaded只需要Dom渲染完即可执行,此时图片视频还没有加载完,尽量使用这种。

性能优化

原则:

  • 多使用内存、缓存或者其他方法
  • 减少CPU计算、减少网络

两个方面:

  • 加载页面和静态资源

    • 静态资源的压缩合并
    • 静态资源缓存
    • 使用CDN让资源加载更快
    • 使用SSR后端渲染,数据直接输出到HTML中(server side render)
  • 页面渲染

    • CSS放前面,JS放后面
    • 懒加载(图片懒加载、下拉加载更多)
    • 减少DOM查询,对DOM查询做缓存
    • 减少DOM操作,多个操作尽量合并在一起执行
    • 事件节流
    • 尽早执行操作(如DOMContentLoaded)

一个事件节流的例子:


var textarea = document.getElementById('text')
var timeoutId
textarea.addEventListener('keyup', function () {
  if (timeoutId) {
    clearTimeout(timoutId)
  }
  timeoutId = setTimeout (function(){
    // 触发change事件
  }, 100)
})

安全性

XSS

如何预防:前端替换关键字,例如替换< 为&lt;>为&gt;后端替换

XSRF

如何预防:增加验证流程,如输入指纹、密码、短信验证码

面试相关

简历

  • 简洁明了,重点突出项目经历和解决方案
  • 把个人博客放在简历中,并且定期维护更新博客
  • 把个人的开源项目放在简历中,并维护开源项目
  • 简历千万不能造假,要保持能力和经历上的真实性

面试过程中

  • 如何看待加班?加班就像借钱,救急不救穷
  • 千万不可挑战面试官,不要反考面试官
  • 学会给面试官惊喜,但不要太多
  • 遇到不会回答的问题,说出你知道的也可以
  • 谈一谈你的缺点——说一下你最近正在学什么就可以了

CSS预处理器

  • 基于CSS的另一种语言
  • 通过工具编译成CSS
  • 添加了很多CSS不具备的特性
  • 能提升CSS文件的组织

两种预处理器:
less、sass

提供的功能

  • 嵌套 反映层级和约束
  • 变量和计算 减少重复代码
  • Extend和Mixin代码片段
  • 循环 适用于复杂有规律的样式
  • import css文件模块化

预处理器的作用

  • 帮助更好地组织CSS代码
  • 提高代码复用率
  • 提升可维护性

bootstrap

bootstrap4是有sass编写

bootstrap提供的样式非常适合于我们的管理后台,没有太多视觉要求的情况下,当然也可以做一些定制。

bootstrap组件

  • 基于data-*属性
  • 基于JS API

响应式布局

image.png

定制方法:

  • 使用CSS同名类覆盖(操作简单,但是不能使用它们的计算关系,另外需要非常全面的去重写class,工作量大,非常容易产生问题)
  • 修改源码重新构建(修改less,sass源文件,重新编译)
  • 引用scss源文件,修改变量

CSS工程化

PostCSS

webpack

  • JS是整个应用的核心入口
  • 一切资源均由JS管理以来
  • 一切资源均由webpack打包

webpack和CSS

  • css-loader将CSS变成JS
  • style-loader将JS样式插入head
  • ExtractTextPlugin 将CSS从JS中提取出来
  • css modules解决CSS命名冲突的问题
  • less-loader sass-loader各类预处理器
  • postcss-loader PostCSS处理

CSS面试

  • 像素级还原页面是基本要求
  • 理解设计思路,选择合适的方案
  • 用户体验意识
  • 关注体验意识
  • 关注性能和工程成本
  • 学会与设计师合理沟通

面试关注重点

  • 简历真实性
  • CSS基础知识
    • 移动端应用经验
    • 动画能力(加分项)
  • 项目经历
  • 工程化能力

今日份小结

webpack水很深
前端之路漫漫
19年注定是个不平凡的年份

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,080评论 0 2
  • 响应式布局的理解 响应式开发目的是一套代码可以在多种终端运行,适应不同屏幕的大小,其原理是运用媒体查询,在不同屏幕...
    懒猫_6500阅读 782评论 0 0
  • 【转载】CSDN - 张林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牍阅读 3,488评论 1 14
  • 1、移动端你遇到过什么兼容问题?1、如果在input设置边框颜色在ios系统里会出现兼容性问题,需要在外面加一个d...
    阿帕奇哟阅读 800评论 0 8
  • 最近,有点写不出文章来了,无思路、无想法、无动力。 其实,近期我的输入是明显增多了的,听了好多书——“十点读书”上...
    遇见小小盼阅读 618评论 3 7