箭头函数与this作用域
问题:箭头函数中的this是如何查找的?
答案:向外层作用域中,一层层查找this,直到有this定义
const obj {
aaa() {
setTimeout(function () {
setTimeout(function () {
console.log(this); //window 该格式下的函数调用时用call,并将window作为第一个参数传入
})
setTimeout(() => {
console.log(this); //window
})
})
setTimeout(() => {
setTimeout(function () {
console.log(this); //window
})
setTimeout(() => {
console.log(this); //object
})
})
}
}
前端渲染和后端渲染、前端路由和后端路由
后端路由(以JSP为例)
前端发送一个url发送至服务器;服务器拿到url后解析,最后交给一个Controller处理,最终生成HTML或者数据返回给前端,完成IO操作。后台JSP:html+css+Java,且Java代码作用是从数据库中读取数据,并且将它动态地放在页面中,再传给浏览器,并且只有html+css,形成最终的网页展示给浏览器,即后端(服务端)渲染。服务器中有url与页面的映射关系,由后端路由保存处理。这种方式html代码、数据混在一起,逻辑复杂。
前端路由
前后端分离
后端只负责提供数据,不负责任何阶段的内容。存在静态资源服务器、提供API接口服务的服务器,也可以二合一。
浏览器中显示的网页中的大部分内容都是由前端写的js代码在浏览器中执行,向服务器请求数据,最终渲染出来的网页。且不同的url对应的页面,在静态资源服务器中有页面的整套html+css+js。
单页面富应用(SPA)
整个网页只有一个html页面,在静态资源服务器中,index.html+css+js(包含所有页面的资源)只有一个。
前端路由
用户输入的url,前端路由在全部资源中抽取需要的页面的资源,再从服务器请求数据,最终渲染至浏览器。
url的hash和HTML5的history
url的hash
链接:link.
HTML5的history
链接:link.