1.6kB 搞定懒加载、无限滚动、精准曝光;Go是不是面向对象不重要 | 每日掘金第211期

1,470 阅读6分钟

Hello,欢迎来到每日掘金时间。每日掘金专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!

本文字数 1800+,阅读时间大约需要 6 分钟。

  • 【本期每日掘金】亮点:
  • 包装了三年工作经验的我,被同事发现居然连这些Maven的操作都不懂
  • JavaWeb 中 “转发”与 “重定向”的区别
  • 带你揭开神秘的javascript AST面纱之AST 基础与功能
  • 编译 Swift 5.8 源码
  • ……

筛选规则:文章发布时间在本期「每日掘金」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。

今日主理人

本期每日掘金由  丘山子  负责制作,需要投稿每日掘金请私信我的助理 小岳

PS:主理人目前正在招募中,有感兴趣的掘友们可以联系Captain

每日干货

主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。

『前端』

有很多类库在用 IntersectionObserver 实现懒加载,但更精准的描述是,IntersectionObserver 提供了一种异步观察目标元素与根元素(窗口或指定父元素)的交叉状态的能力,这项能力不仅能用来做懒加载,还可以提供无限滚动,精准曝光的功能。

在前端里面有一个很重要的概念,也是最原子化的内容,就是 AST ,几乎所有的框架,都是基于 AST 进行改造运行,比如:React / Vue /Taro 等等。 多端的运行使用,都离不开 AST 这个概念。

在大家理解相关原理和背景后,我们可以通过手写简单的编译器,简单实现一个 Javascript 的代码编译器,编译后在浏览器端正常运行。

你已经使用 Node.js 一段时间了,构建了一些应用程序,尝试了不同的模块,甚至对异步编程感到很舒适。但是有些事情一直在困扰着你——事件循环(Event Loop)。

如果你像我一样,花费了无数个小时阅读文档和观看视频,试图理解事件循环。但即使作为一个经验丰富的开发者,在完全理解它如何工作方面也可能会遇到困难。这就是为什么我准备了这份视觉指南,帮助您充分理解 Node.js 事件循环。请坐下来,拿杯咖啡,让我们深入探索 Node.js 事件循环的世界吧。

本文的起因是有在代码仓库发包后,同事问我“为什么package.json 里的版本还是原来的,有没有更新?”,这个时候我意识到,我们完全没有必要在每次发布的时候还特意去关注这个仓库的版本号,只要在发布打tag的时候同步一下即可,于是有了本文的实践。

最近一个粉丝公司项目由 Vue2 升级到 Vue3 了,他一下子不适应,有好多不会用的,所以我就写了这篇开发文档,包含了 Vue3 项目开发中使用的所有语法,希望所有像他一样还不熟的伙伴快速上手 Vue3 项目开发

本文所有语法为 Vue 3.2.41 版本,如果是3.0到3.2以内的版本个别地方可能会有些许不一样,但绝大部分都是一样的

『后端』

综上,我从很多方面,写了一点自己的浅见。只想说,面向对象也只是一种思想,你说Go不是面向对象的语言,你在很多场景下,也得用到相关的思想。所以,它 "Yes and no" 面向对象。希望能够说服你,那么我们一起来总结一下吧~

  • Go 语言中,没有对象(但是开发时通常叫做对象),没有类,也没有继承,也不能直接使用多态。
  • 它通过组合匿名字段的手段,来达到类似继承的效果。
  • 它只能通过接口,来实现的多态,使一个类可以有不同的实现。
  • 将一类事物,抽象成struct的过程,这才是封装的主要部分
  • Go语言 sturct 方法的写法,和其他面向对象语言中 this 的本质很像。

最后,再谈两个问题:

  • 难道Go语言不是面向的语言,你不也要抽象封装吗?
  • 难道Go语言不是面向的语言,你就不使用多态了吗?

以上的两个问题,就算你认为,Go不是面向对象的语言,你在开发的时候,也会用到一些面向对象的思想。Go语言通过一些手段,去掉了面向对象中复杂的部分,但也保留了基本的面向对象特性。所以可以说,它是不是面向对象,真的不重要!!!

介绍高性能队列Disruptor原理以及使用例子。

『移动端』

带大家了解kotlin1.7版本提供了哪些特性

这篇文章主要基于gradle 8.0源码讲解 kts script脚本的加载及运行

笔者整理收集了当下网上Kotlin常见的一些问题,但由于篇幅内容过长所以分了三个部分(基础篇,协程篇,Flow篇),以下是协程篇部分,简单收集了些经典问题,有需要的同学请自行补充

『 Swift 最佳实践 』系列对常用的语言特性逐个进行介绍,助力写出更简洁、更优雅的 Swift 代码,快速实现从 OC 到 Swift 的转变。

📖 投稿专区

大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。