前端开发

【JavaScript】前端模块化:import 和 export 的使用

心不动则不痛 提交于 2020-02-01 15:06:16
为什么要有模块化? 多人开发时会遇到变量作用域问题。 解决方案:匿名函数,但是会带来代码不可复用的问题 解决代码不可复用的问题,可以使用模块化: ES6 规范里的模块化实现 比如可以使用 type=module 不同的模块化规范,导入、导出的写法可能不太一样,但都有这两个核心:导入、导出。 随着前端的发展,已经不需要使用模块化。只需要遵守别人的规范即可使用了。 导出: 可以导出类: 导入: 来源: CSDN 作者: 寒泉Hq 链接: https://blog.csdn.net/sinat_42483341/article/details/104131589

前端监控

落花浮王杯 提交于 2020-02-01 14:45:23
一. 页面埋点 页面埋点应该是大家最常写的监控了,一般起码会监控以下几个数据: PV / UV 停留时长 流量来源 用户交互 对于这几类统计,一般的实现思路大致可以分为两种,分别为 手写埋点 和 无埋点 的方式。 相信第一种方式也是大家最常用的方式,可以自主选择需要监控的数据然后在相应的地方写入代码。这种方式的灵活性很大,但是唯一的缺点就是工作量较大,每个需要监控的地方都得插入代码。 另一种无埋点的方式基本不需要开发者手写埋点了,而是统计所有的事件并且定时上报。这种方式虽然没有前一种方式繁琐了,但是因为统计的是所有事件,所以还需要后期过滤出需要的数据。 二. 性能监控 性能监控可以很好的帮助开发者了解在各种真实环境下,页面的性能情况是如何的。 对于性能监控来说,我们可以直接使用浏览器自带的Performance API来实现这个功能。 对于性能监控来说,其实我们只需要调用 performance.getEntriesByType('navigation') 这行代码就行了。对,你没看错,一行代码我们就可以获得页面中各种详细的性能相关信息。 我们可以发现这行代码返回了一个数组,内部包含了相当多的信息,从数据开始在网络中传输到页面加载完成都提供了相应的数据。 三. 异常监控 对于异常监控来说,以下两种监控是必不可少的,分别是代码报错以及接口异常上报。 对于代码运行错误

撩课-Web大前端每天5道面试题-Day7

六眼飞鱼酱① 提交于 2020-02-01 02:47:03
1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressive enhancement): 一开始只构建站点的最少特性, 然后不断针对各浏览器追加功能。 优雅降级和渐进增强都关注于同一网站 在不同设备里不同浏览器下的表现程度。 区别: “优雅降级”观点认为应该针对那些最高级、 最完善的浏览器来设计网站。 而将那些被认为“过时”或有功能缺失的浏览器下 的测试工作安排在开发周期的最后阶段,并把测试 对象限定为主流浏览器(如 IE、Mozilla 等)的 前一个版本。 “渐进增强”观点则认为应关注于内容本身。 总结: "优雅降级"就是首先完整地实现整个网站, 包括其中的功能和效果. 然后再为那些无 法支持所有功能的浏览器增加候选方案, 使之在旧式浏览器上以某种形式降级体验 却不至于完全失效。 "渐进增强"则是从浏览器支持的基本功能开始, 首先为所有设备准备好清晰且语义化的html及 完整内容, 然后再以无侵入的方法向页面增加无 害于基础浏览器的额外样式和功能。 当浏览器升级时, 它们会自动呈现并发挥作用。 2. 请说说浏览器内核的组成? 浏览器的结构: 用户界面(UI) - 包括菜单栏、工具栏、地址栏、 后退/前进按钮、书签目录等,也就是能看到的除

前端开发面试题及答案

↘锁芯ラ 提交于 2020-02-01 02:44:58
一、你能描述一下渐进增强和优雅降级之间的不同吗? 如果提到了特性检测,可以加分。 检测浏览器,渐进增强就是让牛b的浏览器的效果更好,优雅降级就是让2b的浏览器在功能ok的情况下效果一般。 二、线程与进程的区别 一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 三、请解释一下什么是“语义化的 HTML”。 语义化的好处:1:去掉或样式丢失的时候能让页面呈现清晰的结构: html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式

前端开发面试题及答案

若如初见. 提交于 2020-02-01 02:44:29
一、你能描述一下渐进增强和优雅降级之间的不同吗? 如果提到了特性检测,可以加分。 检测浏览器,渐进增强就是让牛b的浏览器的效果更好,优雅降级就是让2b的浏览器在功能ok的情况下效果一般。 二、线程与进程的区别 一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 三、请解释一下什么是“语义化的 HTML”。 语义化的好处:1:去掉或样式丢失的时候能让页面呈现清晰的结构: html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式

(JAVASCRIPT篇)

时光怂恿深爱的人放手 提交于 2020-02-01 02:35:34
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); 2 ,截取字符串abcdefg的efg var str = "abcdefg"; if (/efg/.test(str)) { var efg = str.substr(str.indexOf("efg"), 3); alert(efg); } 3 ,判断一个字符串中出现次数最多的字符,统计这个次数 //将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) { var key = str[i]; if (!obj[key]) { obj[key] = 1; } else { obj[key]++; } } /*遍历这个hash table,获取value最大的key和value*/ var max = -1; var max_key = ""; var key; for (key in obj) { if (max < obj

web前端笔试题

亡梦爱人 提交于 2020-02-01 02:34:51
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); 2 ,截取字符串abcdefg的efg var str = "abcdefg"; if (/efg/.test(str)) { var efg = str.substr(str.indexOf("efg"), 3); alert(efg); } 3 ,判断一个字符串中出现次数最多的字符,统计这个次数 //将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) { var key = str[i]; if (!obj[key]) { obj[key] = 1; } else { obj[key]++; } } /*遍历这个hash table,获取value最大的key和value*/ var max = -1; var max_key = ""; var key; for (key in obj) { if (max < obj

只会前端让我很丢人

半腔热情 提交于 2020-02-01 01:45:07
今天突然有一种,做前端不丢人、但是只会前端可能会很丢人的感触。 为啥这么感慨呢! 听我慢慢给你道来~ 背景 事情要从今天的年会说起。 今天公司的技术部门一起出去年会团建。 会上当然少不了活跃气氛的小游戏。 其中我参加了一个猜词游戏,是我一个纯前端和一个专业的数据挖掘工程师一起上台参加。 我的性格本来就比较腼腆、只要想到站到台上说话就会紧张。 更别提在紧张的比赛气氛下让我上去真的面对这么多人做一个需要脑子转快点的游戏了。 那需要多么强大的心理建设和自我催眠,才能拿出60%的心态去参加这个比赛类型的游戏呢! 我这么想着的时候,背景音乐响起,主持人喊了我们第六组上台开始比赛。 伴随着前景音乐缓缓淡出,我和那位同事被众人的目光送上舞台。 我俩事前讲好了,他比划/描述、我猜词。 甚至我们还拟定了一些小约定: 比如“大佬”这个词,描述时就说“小的反义词、年轻的反义词,总的形容一个人厉害、技术特别盖!”。 这样,即使此时有紧张心理,但也还算心理有点底气。 开始 当我自信的拿过话筒,站在舞台上背对着大屏幕的位置时, 我才发现,这也是我面对着台下大众的位置和方向。 虽然我近视,但是我戴眼镜了! 我横扫一遍,看到了无数期待的目光向我们投射而来。 台下那一个个面庞朝向我们,一双双眼睛直直的看向我们。 面朝观众的我当场感觉到有无数盏射光灯,刷刷刷的朝我打过来、集中到我的头顶。 然后周围全暗淡了

前端-JQuery

时间秒杀一切 提交于 2020-01-31 22:50:49
jQuery jQuery介绍 jQuery是一个轻量级的、兼容多浏览器的JavaScript库。 jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“ jQuery的优势 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。 Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫

bootstrap入门

a 夏天 提交于 2020-01-31 22:25:18
一、简介 介绍: Bootstrap,来自 Twitter ,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。 它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言 Less 写成 为何使用bootstrap: 响应式设计 :Bootstrap 的响应式 CSS 能够自适应于台式机、平板电脑和手机。更多有关响应式设计的内容详见 Bootstrap 响应式设计 。 移动设备优先 :自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。 浏览器支持 :所有的主流浏览器都支持 Bootstrap。 容易上手 :只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习 Bootstrap。 它为开发人员创建接口提供了一个简洁统一的解决方案。 它包含了功能强大的内置组件,易于定制。 它还提供了基于 Web 的定制。 它是开源的。 二、开始使用bootstrap 1、下载: https://github.com/twbs/bootstrap/releases/download/v3.3.7/bootstrap-3.3.7-dist.zip 2