一:页面性能优化:
1,减少 http 请求,资源的合并与压缩,恰当的缓存,不滥用 float,雪碧图代替图片,异步加载。减少 dom 节点,
二:数组的深浅拷贝
1,假设 B 复制了 A,当修改 A 时,看 B 是否会发生变化,
如果 B 也跟着变了,说明这是浅拷贝,。如果 B 没变,那就是深拷贝。
2,基本数据类型有哪些,number,string,boolean,null,undefined 五类。
引用数据类型:对象,数组,函数。
3,如何深拷贝?
借用 JSON 对象的 parse 和 stringify。
借用 JQ 的 extend 方法。
$.extend([deep], target, object1 [, objectN] );
let a=[0,1,[2,3],4],
b=$.extend(true,[],a);
a[0]=1;
a2=1;
console.log(a,b);
4,使用场景?
但多人开发情况下,你是没办法明确这堆数据是否有其它功能也需要使用,直接修改可能会造成隐性问题,深拷贝能帮你更安全安心的去操作数据,
根据实际情况来使用深拷贝,
三:前后端分离的原理
1,原始人时代:
发布,需要用 eclipse 把代码打成一个 war 包,然后把这个 war 包发布到生产环境下的 web 容器里。这时候前后端代码都在这个 war 包里,html,js,css,各种第三方库等。这样服务器压力会很大,页面中的所有请求都要通过这个服务器,如果同时很多人访问这个网站速度就会很慢。一旦服务器出现状况,前后端一起玩完,用户体验级差。。
2,前后端分离的优势
1,可以实现正真的前后端解耦,前端服务器放 css,js,图片等一系列资源,前端服务器负责控制页面引用,跳转,路由。前端页面异步调用后端的接口。加快整体响应速度。
3,减少后端服务器的开发 / 负载压力。除了接口外的 http 请求全部转到 前端 nginx 上。
前端大量的组件化代码 可以抽出来复用,组件化开发提升效率。
前端与后端是两个项目。放在两个不同的服务器,需要独立部署。
四:同步和异步的区别
1,javascript 语言是一门“单线程”的语言,
其实同步和异步,
无论如何,做事情的时候都是只有一条流水线(单线程),
同步和异步的差别就在于这条流水线上各个流程的执行顺序不同。
最基础的异步是 setTimeout 和 setInterval 函数,
五:异步 promise
1, 自己身上有 all、reject、resolve 这几个眼熟的方法,原型上有 then、catch 等同样很眼熟的方法。
2, 一:优点和缺点
可以将异步操作以同步操作流程的方式表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。
3, 使用
新建 new 一个 promise,传入 resove 和 reject 两个参数分别代表成功失败的方法。
六:常用的 ES6
1,let 和 const 只在声明指令的块级作用域内有效。
let 所声明的变量可以改变,const 声明常量,不能改变
2,Object.assign() 方法用于对象的合并
const target = {a: 1};
const source1 = {b: 2};
const source2 = {c: 3};
Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
3,promise 对象
4,import 导入模块
5,字符串拼接
Es6 的这种新的“字符串拼接”方法比较简单,没有繁琐的加号和引号,只需要在所需要的字符串“边界”加上 “ 即可。
var name = 'Datura';
var age = 18;
var sex = 'nü';
var hobby = '敲代码';
var str1 = ` 我是 ${name},今年 ${age}岁,性别 ${sex}的了,爱好 ${hobby}`; // 注意此处有两个“``”var str2 = '我是'+name+',今年'+age+'岁,性别'+sex+',爱好'+hobby+''; // 这个是原来的写法
alert(st1r);
6,map 对象
let map = new Map();
map.set(‘a’,’apple’);
map.set(‘b’,’banana’);
console.log(map); // Map {“a” => “apple”, “b” => “banana”}
7,for in 循环,for of 循环(不能循环 json 数据)
8,箭头函数
var show = function(){alert(12);
};
show(); // 12
const show = () =>{alert(12);
};
show(); // 12
// 个人理解:这里将 function 关键字去掉然后在“()”后面加一个“=>”
七:app 里面的支付功能,分享功能
(可以查看微信开发文档)
1,商户 APP 调用微信提供的 SDK 调用微信支付模块,
商户 APP 会跳转到微信中完成支付,支付完后跳回到商户 APP 内,最后展示支付结果。
步骤:
1,用户在商户 APP 中选择商品,提交订单,选择微信支付。
2,商户后台收到用户支付单,调用微信支付统一下单接口。
(需要传的参数都有:appid,随机字符串,不长于 32 位,签名 sign,订单号,交易时间,订单金额,)
3,统一下单接口返回正常的 prepay_id,生成签名
4,掉起微信支付,
5,返回支付结果。
分享功能: