发表于: 2019-04-06 22:26:13
1 738
今天完成的事情:
完成了任务14 修改了bug,提交了任务。
明天计划的事情:
搞懂js的基础知识,比如什么是变量什么是对象
遇到的问题:
刚进js好多东西都不懂,很懵逼
任务14/15总结:
任务14.15算是对于css所学的全部内容加深使用,包括像后面所学到的sass 属性的一些使用,以及组建自己所使用的组件库,bootstrap的使用
任务14.15感觉其它还好主要难点就是导航栏轮播图,花了几天时间才弄出来,特别是轮播图,很懵逼,不过,完成也有好处,对自己的提升还是有的,
比如对媒体查询的运用,动画效果的展示,后面就是bootstrap用起来是真的舒服。
任务耗时7天
深度思考:
为什么要做组件库?
1什么是组件:
组件
它的核心意义在于代码复用。功能相对单一或者独立,在整个系统的代码层次上位于最底层,被其他代码所依赖。
模块
它的核心意义在于分离职责。它的关注点在于功能划分。 例如: 视频通话、语音通话等功能就可以被分为不同的模块
2为什么要做组件库:
传统开发方式效率低以及维护成本高的主要原因在于很多时候是将一个系统做成了整块应用,而且往往随着业务的增长或者变更,系统的复杂度会呈现指数级的增长,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。
针对此弊端,其实业界早就有了一些探索,我们希望一个大且复杂的场景能够被分解成几个小的部分,这些小的部分彼此之间互不干扰,可以单独开发,单独维护,而且他们之间可以随意的进行组合。就拿电脑主机来说,一台整机包括CPU,主板,内存,硬盘等等,而这些部件其实都是由不同的公司进行生产的,他们彼此之间根据一套标准分别生产,最后组装在一起。当某个部件出现问题时,不需要将整台主机都进行维修,只需要将坏的部件拿下来,维修之后再将其组合上就可以了。这种化繁为简的思想在后端开发中的体现是微服务,而在前端开发中的体现就是组件化。
3组件化的意义:
为前端提供了很好的分治策略,可以实现独立维护,可维护性强
组件具有独立性,组件之间可以自由组合
页面只不过是组件的容器,负责组合组件即可形成功能完整的界面
4组件开发的原则:
标准性
任何一个组件都应该遵守一套标准,可以使得不同区域的开发人员据此标准开发出一套标准统一的组件。
组合性
组件之前应该是可以组合的。我们知道前端页面的展示都是一些HTML DOM的组合,而组件在最终形态上也可以理解为一个个的HTML片段。那么组成一个完整的界面展示,肯定是要依赖不同组件之间的组合,嵌套以及通信。
重用性
任何一个组件应该都是一个可以独立的个体,可以使其应用在不同的场景中。
可维护性
任何一个组件应该都具有一套自己的完整的稳定的功能,仅包含自身的,与其它组件无关的逻辑,使其更加的容易理解,使其更加的容易理解,同时大大减少发生bug的几率。
组件化的方法
我们把一个组件保存为一个文件夹,把相应的HTML, CSS, JS 文件都放在一起。在需要用的时候再引用相应的文档就可以了。
目前流行的组件库有哪些?css,js各有哪些流行的库?
1. WeUI
WeUI是一套 同微信原生视觉体验一致的基础样式库,微由官方信设计团队为微信内|网页微状语从句:信小程序量身设计,令用户的使用感知更加统一.https : //weui.io /
2. MDUI
相比国外框架,MDUI更多重要中文排版,提供全中文文档,中文社区。组件丰富MDUI包含了20余个组件,且每个组件都可以适应不同主题。国内开发的mdui基于material- ui开发的.MDUI是一套用于开发Material Design网页的前端框架 https://www.mdui.org/
3. 惊奇 UI
惊奇UI 称为妹子UI的开源框架,据称是中国首个开源HTML5跨屏前端框架。妹子UI以移动优先为理念,从小屏逐渐到大屏,实现响应式网页.Amaze UI包含20个以上的CSS组件,20 +个JS组件,更多多个包含不同主题的Web组件。相比国外框架,妹子UI关注中文排版提供本地化支持。面向HTML5开发,使用CSS3来实现动画交互,轻量级高性能 .http: //amazeui.org/
4.设计蚂蚁
一个服务于企业级产品的设计体系,基于“确定”和“自然”的设计价值观和模块化的解决方案,让设计者专注于更好的用户体验。 https://ant.design /索引-CN
5.易于UI
easyui是基于jQuery的和角用户的界面组件的集合.easyui提供了构建现代互动的JavaScript的应用程序的基本功能。使用easyui你不需要编写很多的的JavaScript代码,通常通过编写一些HTML标记来定义用户界面 .http://www.jeasyui.com/
6. Bootstrap
简洁,直观,强悍的前端开发框架,让web开发更迅速,简单 .http://www.bootcss.com/
7. Foundation
Foundation框架总体来看要比Bootstrap略显高大上一点,但他们俩的设计理念都是非常清楚的, Bootstrap有引导的意思,它尝试处理你项目中的一切所需注册有基础,地基及支柱的意思,给你项目中强有力的创造与支持。相对于引导丰富的组件及插件,基金会提供了仅有限的几种元素,其目标是,即使你使用预定义的UI元素,也不应该与大家的网站长得太像。而引导则致力于提供所有定义好的元素,这样使得看起来许多网站都差不多。基础默认不带图标集,它推荐使用开源字体图标。与引导一样,基金使用网格流式布局将网页划分为12列,针对不同的设备显示不同的列数,实现响应式布局。 https://foundation.zurb.om/sites.html
8. jQuery
jQuery是最常用的JavaScript库,它革命性的在客户端开发,将CSS选择器引入到DOM节点检索加链接来应用事件处理程序,动画和Ajax调用.jQuery近年来备受青睐,对于一个很需要的的JavaScript的功能的项目来说,jQuery的的的绝对是一个可行的选择。 https://jquery.com/
9.阵营
阵营起源于实的内部项目,因为该公司对市场上所有的JavaScript的MVC框架,都不满意,就决定写自己 一套,用来架设的Instagram的的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了.React声称的英文一个用于构建用户界面的的的JavaScript库,它专注于MVC开发的“视图”部分,并且可以轻松创建保留状态的UI组件。它是实现虚拟DOM的第一个库,内存结构计算差异,有效地更新页面 .https: //reactjs.org/
10.Angular
AngularJS [1]诞生于2009年,由Misko Hevery等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中
.11.Vue
Vue.js是一个构建数据驱动的网页界面的渐进式框架。由在美的谷歌工程师尤雨溪开发.Vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。它不仅仅是易于上手,还便于与第三方库或既有项目整合.Vue.js自身不是一个全能框架-聚焦它只于视图层因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js也能完美地驱动复杂的单页应用.https://cn.vuejs.org/
12.Backbone
支持jquery,自带路由,对象化视图,强大的同步机制减少页面大小从而加快页面显示 .http ://backbonejs.org/
13.Ember
一个用于创建web应用的JavaScript MVC框架,采用基于字符串的句柄条模板,支持双向绑定,观察者模式,计算属性(依赖其他属性动态变化),自动更新模板,路由控制,状态机等 。 Ember公司使用自身扩展的类来创建灰烬对象,数组,字符串,函数,提供大量方法与属性用于操作 .https://www.emberjs.com/
请描述 BFC(Block Formatting Context) 及其如何工作
1.BFC是什么
定义:一个块级格式化上下文[BFC]是可视化CSS渲染网页的一部分,它是一个区域,块级布局,相互浮动在这个区域发生。它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。
2.怎样才能形成BFC
float的值不为none。
overflow的值不为visible
display的值为table-cell, table-caption, inline-block中的任何一个
position的值不为relative和static
css3中flex boxes
fieldset元素
3.BFC的作用
包含浮动元素(清除浮动)BFC会根据子元素的情况自适高度,这个特性是对父元素使用overflow:hidden/auto/scroll、 float:left/right 样式可以闭合浮动的
不被浮动元素覆盖 浮动元素会无视兄弟元素的存在, 覆盖在兄弟元素的上面, 为该兄弟元素创建BFC 后可以阻止这种情况的出现
4.BFC规则
内部的Box会在垂直方向,从顶部开始一个接一个地放置
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加
每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此
BFC的区域不会与float box叠加
谈谈以前端角度出发做好SEO需要考虑什么?
在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是百度程序从茫茫的互联网上一点一点下载收集而来的,这些程序称之为“搜索引擎蜘蛛”或“网络爬虫”。这些勤劳的“蜘蛛”每天在互联网上爬行,从一个链接到另一个链接,下载其中的内容,进行分析提炼,找到其中的关键词,如果“蜘蛛”认为关键词在数据库中没有而对用户是有用的便存入数据库。反之,如果“蜘蛛”认为是垃圾信息或重复信息,就舍弃不要,继续爬行,寻找最新的、有用的信息保存起来提供用户搜索。当用户搜索时,就能检索出与关键字相关的网址显示给访客。
一个关键词对应多个网址,因此就出现了排序的问题,相应的与关键词吻合权重高的网址就会排在前面了。在“蜘蛛”抓取网页内容,提炼关键词的这个过程中,就存在一个问题:“蜘蛛”能否看懂。如果网站内容都是是flash和js,那么它是看不懂的,会犯迷糊,即使关键字再贴切也没用。相应的,如果网站内容是它的语言,那么它便能看懂,它的语言即SEO。
从宏观的角度来说,SEO有三条最重要的规律,那就是原创的内容、高质量的外部链接和适度的优化。前端是构建网站中很重要的一个环节,本节重点从前端的角度来讲解一下SEO的实施方法。
前端的工作主要是负责页面的HTML+CSS+JS,优化好这几个方面会为SEO工作打好一个坚实的基础。突出重点内容可以让搜索引擎判断当前页面的重点是什么,提升网站的访问速度可以让搜索引擎的蜘蛛顺利、快速、大量的抓取页面内容,所以我就着重以突出重要内容和提升网站速度来总结一下。
知道css有个content属性吗?有什么作用?有什么应用?
before和:after的作用就是在指定的元素内容(而不是元素本身)之前或者之后插入一个包含content属性指定内容的行内元素.需要注意的是如果没有content属性,伪类元素将没有任何作用。但是可以指定content为空,插入的内容默认是一个行内元素,并且在HTML源代码中无法看到,这就是为什么称之为伪类元素的理由,所以也就无法通过DOM对其进行操作。伪类元素也会像其他子元素一样正常继承父元素的一些CSS属性,比如字体等。
知道什么是微格式吗?谈谈理解。在前端构建中应该考虑微格式吗
微格式(Microformats)是一种让机器可读的语义化XHTML词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式。
优点:将智能数据添加到网页上,让网站内容在搜索引擎结果界面可以显示额外的提示。
HTML5的离线储存怎么使用?
什么是Manifest:
其实Manifest是一个简单的 文本文件,它的扩展名是任意的,定义需要缓存的文件、资源,当第一次打开时,浏览器会自动缓存相应的资源。
Manifest 的特点:
离线浏览:即当网络断开时,可以继续访问你的页面。
访问速度快:将文件缓存到本地,不需每次都从网络上请求。
稳定性:做了Manifest缓存,遇到突发网络故障或者服务器故障,继续访问本地缓存。
渐进增强和优雅降级之间有什么不同?
渐进增强(progressive enhancement):针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。(从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面添加无害于基础浏览器的额外样式和功能。当浏览器支持时,它们会自动地呈现出来并发挥作用。)
优雅降级(graceful degradation):一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。(Web 站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于 IE 独特的盒模型布局问题,针对不同版本的 IE 的 hack 实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。)
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的、能够起作用的版本开始,并不断扩充,以适应未来环境的需要。
Quirks模式是什么?它和Standards模式有什么区别?
Quirks Mode是由文档类型探查法触发。也就是大家熟知的文档类型切换。这意味着浏览器检查一个HTML文档的开始,看它是否包含一个HTML规范所要求的文档类型声明。
Quirks Mode的目标是使旧页面显示出他们的作者想要的那样。旧页面可能利用旧浏览器已知的特性写成,或者至少是适应旧浏览器。 Quirks Mode是什么没有权威的规范。毕竟,实质上Quirk Mode是一个故意违反CSS和HTML的规范。
经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
浏览器默认边距不同
由于不同浏览器的很多标签的默认间距是有差别的,所以样式重置就显得尤为重要, 否则网页很容易在不同浏览器上出现较大差异甚至是不能使用
3.2 MARGIN加倍问题
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug
描述一个你在实际使用中有用过什么比较好的布局方式(不拘泥于页面整体布局,页面中某一小版块也行),深入讲解下其中的原理?
拿响应式布局来说,pc站当然是把所有能呈现的东西都呈现出来,而且一般整体是纵向布局,局部用横向布局(float较多)。到了平板电脑,基本上和pc的布局也是差不多的。到了手机,才开始有了很大的变化,整体依然是纵向布局,但是横向布局却变得越来越少,因为手机能呈现在一屏的内容确实是少之又少,而且还要考虑到分辨率大小的问题,所以一般都是不用float布局,把最重要的功能呈现出来,没有pc里面那么多的效果。
评论