前端开发笔记:记一次网站创建的过程

背景

这两天做了一个简单的课程商城,用手机微信测试时总有一些小问题。虽然只是一个简单的应用,前后也花了两天的时间,本文来整理下期间碰到的问题。

额外的请求参数

微信浏览器在请求外链接时,会额外戴上一些参数,很长一串,像这样:

nsukey=bOA6RWDJv%2Bx2M%2FGSgcAFCm1kkdQirp2%2BWxs2I4QHEHDALqxzq54WtEJgWVniYxnAkAUZgKRFDviVFZVCtzKFbslEQP5X0xAbB66h6i1E12mLpBdFcWGB2Xbefp66xbMReG4OB1kPshA6LcT7zQdIk3vQyzeYN6MK8mkPJh%2Brvl8V%2BnYXHjqBwzfA3%2BAc6y3eXKfTHzRblCPioWoh6P3UdA%3D%3D

这两天做一个手机端的简版商城网页应用,发现截取一个请求参数时,微信浏览器的截取不到。使用 Fidder 抓包,对比后发现 URL 后面多了一串诡异的数字。

好吧,恕我才疏学浅,第一次知道微信浏览器的这个行为。

同步请求警告

ajax 请求时,使用同步标识时,浏览器会报这个错误:

jquery.min.js:4 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

为什么会废弃呢?

img 未闭合时修改 src 无效

img 标签没有右侧的闭合符号时,修改图片的 src 属性时,不同浏览器行为如何呢?

浏览器 行为
电脑浏览器 自动纠错,正常显示
电脑微信浏览器 自动纠错,正常显示
手机浏览器 自动纠错,正常显示
知识星球浏览器 自动纠错,正常显示
手机微信浏览器 无法刷新图片为新的 src 资源

代码拼接页面内容时,忘记拼上 img 的闭合符合了,然后对于需要延迟加载的图片再次触发加载时,测了上面所有的浏览器,确定了问题,但是找不到解决办法。

百度看到一个回答:

图像的标签时<img>,这是HTML中少有的几个单边标签

这里提及的单标签的说法,给了笔者启发,检查一下代码,还真是这个问题。

图片加载优化

实现的是一个课程商城,页面需要加载所有的图片,那就遇到一个问题:图片太多,页面渲染很慢,页面没有渲染完成时,使用 Tab 切换的操作没有响应,这非常影响使用:
在这里插入图片描述
图片加载期间,点击头部的导航切换是无法响应的,找到一个比较笨的解决办法:

第一步,页面加载时只对第一个 Tab 标签内的 img 标签设置 src 属性;
第二步,渲染商品列表时,非第一个 Tab 签下的其它 img 指定 src 属性为空,并添加 id 存储真正的 src 地址;
第三步,对 Tab 的 open 事件进行修改,切换 Tab 时,查找它所在的 div 里面的 img ,判断 src 是否为空。
如果为空,则修正 src 为真正的地址。

此外,对图片进行压缩,使用绘图软件,调整图片大小,改变图片的 size 可以减少请求数据的长度。将所有商品海报图片压缩在 30 kb 左右,页面请求会快一点。

切换 Tab 时滚动到顶部

在某个 Tab 签,用户滑到底部后,再切换到另一个 Tab 签时,应该将滚动条重新滚动到顶部。JavaScript 的 Element 的 scrollTo 可以实现该功能,找了一圈,发现有两点要注意的:

  1. 只能使用 document.getElementById('id').scrollTo(0,0) 滚动;
  2. 确定页面滚动条所在的元素,即具有 over-flow-yauto 的元素,调用才会生效。

favicon.ico 的作用

微信里面分享链接时,不是显示显示的链接,而是一个图片,这是怎么做到的呢?
网页顶部的小图标是怎么设置的呢?

这里又有一个小知识点,就是网页小图标。使用 Tomcat 服务器发布的应用,默认访问时顶部会有一只汤姆猫;百度的是小脚印;CSDN 是 C :
在这里插入图片描述
地址栏的小图标修改的方法:
第一步, 访问该在线工具 生成一个 ico 文件;
第二步,在页面的 head 元素内部引用:

<link rel="shortcut icon" href="images/bitbug_favicon.ico" />

域名是怎么回事

买了一个百度域名,一个腾讯云服务器,搭起来这个小商城应用,没想明白百度域名和腾讯域名有什么区别。听说域名需要备案,就在百度智能云控制平台进行备案操作。发现百度的域名备案时,提示我没有购买可备案的产品,可是我明明买了域名的呀!

给百度客服打电话,客服说域名都是一样的,域名备案的本质时对云服务器备案,所以真正买谁的服务器,就在谁那里备案,这下彻底明白了网站建立的过程了。

编程启示录

这两天搞这个小应用,基本上都是 6 点多起来,不停地调试纠正问题。因为一直想着这个事情,睡觉也不踏实,干脆就醒了继续搞。以前有段子说,叫醒我的不是闹钟,而是梦想!现在看来,这并不是段子,而是一些人的真实写照吧。

这是自己想到的一个小应用,功能不复杂,也就一个 Servlet 和 一个 html 页面,不一定有市场和收益。算是给自己这段被迫居于室内时光,增加一点可说道的内容吧!

还有一点,关于网站的 web 服务器安全问题,建站的时候,下了一个 8.5.51 的版本的 Tomcat ,这个是 8 版本的最新版本,使用最新版本的好处就是,它的版本发布肯定是有一定原因的。鉴于最新的 Tomcat 漏洞 CVE-2020-1938 ,我专门看了下发现这个版本不受影响,根源在于它注释掉了 8009 端口。

猜你喜欢

转载自blog.csdn.net/wojiushiwo945you/article/details/104330415
今日推荐