前端知识点1

ES6...扩展运算符:将一个数组转为用逗号分隔的参数序列。

    1)合并数组:

// ES5
[1, 2].concat(more)
// ES6
[1, 2, ...more]

    2)解构赋值:

// ES5  
a = list[0], rest = list.slice(1)  
// ES6  
[a, ...rest] = list     //解构只能位于最后

    3)函数多个返回值:

//传统写法
foo(arr[0], arr[1], arr[2]);
//使用扩展运算符
foo(...arr);

    4)字符串转换数组

[...'hello']
// [ "h", "e", "l", "l", "o" ]

    5)实现Iterator接口,不能直接用于没有Iterator接口对象

var nodeList = document.querySelectorAll('div');  
var array = [...nodeList]; 

    6)Map和Set解构,Generator函数

let map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
let arr = [...map.keys()]; // [1, 2, 3]
var go = function*(){
yield 1;
yield 2;
yield 3;
};
[...go()] // [1, 2, 3]

2、Generator函数:

function* fn(){   // 定义一个Generator函数
    yield 'hello';
    yield 'world';
    return 'end';
}
var f1 =fn();           // 调用Generator函数
console.log(f1);        // fn {[[GeneratorStatus]]: "suspended"}
console.log(f1.next()); // {value: "hello", done: false}
console.log(f1.next()); // {value: "world", done: false}
console.log(f1.next()); // {value: "end", done: true}
console.log(f1.next()); // {value: undefined, done: true}
 

//实现斐波那契数组

function* fib(max){
	let a = 0, b = 1, n = 0; 
	while(n < max){ 
		yield a; 
		[a,b] = [b, a+b]; 
		n++; 
	} 
	return;
}
for(let x of fib(10)){ 
	console.log(x);
}	let a = 0, b = 1, n = 0; 
	while(n < max){ 
		yield a; 
		[a,b] = [b, a+b]; 
		n++; 
	} 
	return;
}
for(let x of fib(10)){ 
	console.log(x);
}

 

3、HTTP和HTTPS请求过程:

 

HTTP: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

HTTPS: 

  

依图:

1、为什么选择Angular框架?

1)Angular 的工程师将我们需要的所有功能做了不错的整合。如果使用 Vue,我可能还要面临更多选择:我需要的就是这样一个真正的框架,包含了组件化方案、模块化方案、测试方案、表单验证、路由、国际化方案和安全方案。我发现 Angular 甚至连代码风格都给出了建议

2)Angular 的一份文档涵盖了开发中的方方面面。如果使用 Vue,可能每个功能要去看不同的文档。

3)Angular 更强势更主观,它的文档对于如何完成某个功能给出了明确的建议。我们团队的成员有不同的编程背景,虽然有三个全职的前端,但是还有十几个 Java 和 Python 程序员,他们也可能会参与前端工作,Angular 的文档能让这些成员快速适应环境。

2、前端开发的角色定位?

    用户体验的操刀者

    用户端业务逻辑

    向前延伸、向后延伸

    持续学习

    前端工程师需要有较高的沟通能力和理解能力。

3、margin为负

4、throttledebounce

debounce的作用是在让在用户动作停止后延迟x ms再执行回调。

throttle的作用是在用户动作时没隔一定时间(如200ms)执行一次回调。

debounce用在keydown事件上验证用户名最好。而throttle用在resize改变布局上,onscroll滚动时候的。

throttle:

 
function throttle(fn,interval){
    var last;
    var timer;
    var interval=interval||200;
    return function(){
        var th=this;
        var args=arguments;
        var now=+new Date();
        var remain = now-last;
        if(last&&remain<interval){
            clearTimeout(timer);
            timer=setTimeout(function(){
                fn.apply(th,args);
            },remain);
        }else{
            last=now;
            fn.apply(th,args);
        }
    }
}

    debounce:

function debounce(fn,delay){
 
    var delay=delay||200;
    var timer;
    return function(){
        var th=this;
        var args=arguments;
        if (timer) {
            clearTimeout(timer);
        }
        timer=setTimeout(function () {
                timer=null;
                fn.apply(th,args);
        }, delay);
    };
}

 

5、node如何进行多线程任务分发?   

 

http://cnodejs.org/topic/518b679763e9f8a5424406e9

6、项目中有什么技术难点:websocket,断点续传

7、前端前沿技术:

https://juejin.im/post/5a519d305188257327396da5

PWA(Progressive Web Apps)由谷歌提出,用前沿的技术开发,让网页使用如同App般的体验的一系列方案。明确的一点就是:PWA就是一个网页, 可以通过前沿的技术开发出一个网页应用。一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能。

parcel

说到parcel的最大优势,貌似就是webpack的最大劣势:配置和性能!parcel号称零配置,多核打包,并且使用文件缓存,在时间上比webpack快了将近10倍!

WebAssembly

由谷歌, 微软, Mozilla,苹果等公司合作的一个面向Web的通用二进制和文本格式的项目。

yarn

flex和grid布局

grid布局:

网格布局给了我们一种方法——创建的结构与使用表格(table)布局并没有什么不同。然而,他是在CSS中实现而不是在HTML中实现,同时还可以依赖于媒体查询根据不同的上下文得新定义布局。这对于喜欢响应式设计的同学来说是一个绝对利好的消息。因为你不在需要再担心你的HTML结构而影响你的布局。

rxjs

RxJS 是使用 Observables 的响应式编程的库,它使编写异步或基于回调的代码更容易。Observable 其实就是一个异步的数组

首先我们在Promise的基础之上已经发现Promise可以解决大部分异步问题了,但是如果我们想要在Promise resolve()之后再次resolve()怎么办?我们在then()之前不想立即执行的时候又该怎么办?所以出现了RXJS。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值