从0解构tinyWeb项目--(Day:1)

0 阅读3分钟

今日目标

image.png

完整理解index.html文件中第3530到3572行,代码的含义,并且完成对应练习

项目对应代码

image.png

image.png

前引

一个小前缀:handler的格式(很多代码都是这样的格式)

image.png

主要:从用户访问前端网站,到最后前端的访问量数字加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() → 页面显示数字动画!

图形流程

image.png

image.png

image.png

image.png

image.png

image.png

image.png

今日内容

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.重复声明

image.png

3.全局作用域区行为

image.png

3.function声明和函数表达式

image.png

4.navigator是什么

image.png

5.正则表达式

详情看练习会提到

练习(在浏览器f12内进行)

用IIFE打印一个hello 语句

联想截图_20260412152556.jpg

判断浏览器类型

联想截图_20260412161629.jpg

这里就用到了navigator内置浏览器信息

判断是手机端还是PC端访问

联想截图_20260412163800.jpg

正则表达式

这里就提到到之前的正则表达式

如图/ex1|ex2|ex3|ex4/i就是正则表达式,这里就是判断navigator内有没有对应的字符串,就是相当于在提出的ex中判断包含,如果有其中一个返回mobile,都没有返回PC,类似switch case。

备注:最后的 ‘i’ 是大小写都通过的意思。