今日目标
完整理解index.html文件中第3530到3572行,代码的含义,并且完成对应练习
项目对应代码
前引
一个小前缀:handler的格式(很多代码都是这样的格式)
主要:从用户访问前端网站,到最后前端的访问量数字加1的全流程
口述
1.当用户访问网址时,浏览器发送get请求,通过路由匹配(类似哈希表路由是下标,然后对应的值就是函数,)后端服务器找到对应的函数返回index.html文件(网站前端html文件)
2.前端运行代码,到iife(立即执行函数表达式)获取访客的基本信息(浏览器名,ip地址等)
3.前端调用浏览器的fetch函数(作用,准备好把数据json化(json相当于翻译成后端可以处理的数据格式,数据的含义一样格式不一样而已))向后端发出http请求,后端进行路由匹配后找到对应的函数handler.recordvisit进行调用
4.handler.recordvisit(w,r),其中w是给后端服务器的纸和笔(用来回复,返回数据的载体),r是前端json化的数据(用来查询比对操作的数据),handler内部将信息r.body通过gorm比对查询数据库,将返回的内容(用户个人的访客记录,访问次数以及以前是否访问过)给w,然后给fetch函数响应
5.第二次fetch请求,和第三步同样的流程,不过这次是申请查询的网站访问记录和人数,(第一次fetch顺便更新了数据库中总访问记录的数据,可以直接查询不用更改),返回给第二次fetch函数响应
6.前端 renderStats(data) → animateNumber() → 页面显示数字动画!
图形流程
今日内容
1.IIFE(immediate invoked function expression)
传统函数
··先定义 funcition funcname(parameter1,parameter2){
}
··再调用 funcname(a,b);
IIFE函数 (funcition funcname(parameter1,parameter2){
})();
定义和调用同时进行,注意括号位置一个不能错。
IIFE函数的好处:避免全局变量污染,变量在函数内定义,只会在函数内生效。
2.var 和 let 区别(简要)
1.作用域:var是函数作用域,let是块级作用域
2.重复声明
3.全局作用域区行为
3.function声明和函数表达式
4.navigator是什么
5.正则表达式
详情看练习会提到
练习(在浏览器f12内进行)
用IIFE打印一个hello 语句
判断浏览器类型
这里就用到了navigator内置浏览器信息
判断是手机端还是PC端访问
正则表达式
这里就提到到之前的正则表达式
如图/ex1|ex2|ex3|ex4/i就是正则表达式,这里就是判断navigator内有没有对应的字符串,就是相当于在提出的ex中判断包含,如果有其中一个返回mobile,都没有返回PC,类似switch case。
备注:最后的 ‘i’ 是大小写都通过的意思。