【精品】前端知识梳理(三)

简介: 最近有小伙伴私聊广东靓仔,能整理一份目前主流的前端知识点么? 因此有了这篇文章。

算法和手写编程题


算法:链表、栈和队列、二叉树


性能优化


web 性能优化?

降低请求量:合并资源,减少 HTTP 请求数,minify / gzip 压缩, webP,lazyLoad。

加快请求速度:预解析 DNS,减少域名数,并 行加载,CDN 分发。

缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存 localStorage。

渲染:JS/CSS 优化,加载顺序,服务端渲染,pipeline


如何提高小程序的首屏加载时间?

提前请求:异步数据数据请求不需要等待页面渲染完成

利用缓存:利用 storage API 对异步请求数据进行缓存,二次启动时 先利用缓存数据渲染页面,再进行后台更新

避免白屏:先展示页面骨架和基础内容 及时反馈:及时地对需要用户等待的交互操作给出反馈,避免用户以 为小程序没有响应

性能优化:避免不当使用 setdata 和 onpagescroll


webpack相关


webpack 的打包原理

Webpack 是把项目当做一个整体,通过给定一个主文件,webpack 将从这个主文件开始找到项目中所有依赖的文件,使用 loaders 类处 理,最后打包成一个或者多个浏览器可识别的 js 文件


webpack 中的 loaders 与 plugin 的区别

什么是 loaders:loaders 是文件加载器,能够加载资源文件,并对 这些文件进行处理,例如,编译,压缩等,最终一起打包到指定文件 中。


什么是 plugin:在 webpack 运行的生命周期会有许多事件,plugin 可以监听这些事件 区别:加载器是用来加载文件的,webpack 本身只能加载 js 文件(内 置 babel-loader),加载其他文件就需要安装别的 loader,比如: css-loader file-loader Plugin 是扩展 webpack 功能的,通过 plugin ,webpack 可以实 现 loader 不能完成的复杂功能


Webpack 与 gulp 区别

Gulp 是一种能够优化前端开发流程的工具

webpack 是一种模块化的解决方案 (grunt


git高级操作


git checkout -  导航 —— 跳到之前的分支
查看历史
# 每个提交在一行内显示 git log --oneline   # 在所有提交日志中搜索包含「homepage」的提交  git log --all --grep='homepage'  # 获取某人的提交日志  git log --author="Maxence"
不想提交,又要回滚
git reset --hard <提交的哈希值>
查看我的分支和 master 的不同
git diff master..my-branch
# 在最近 3 个提交上运行 `npm test` 命令
git rebase HEAD~3 --exec "npm test"


前端微服务


特点

  • 独立部署
  • 独立开发
  • 技术无关
  • 不影响用户体验

6种方式

路由分发式微前端

通过路由将不同的业务分发到不同的、独立前端应用上。其通常可以通过 HTTP 服务器的反向代理来实现,又或者是应用框架自带的路由来解决。


使用 iFrame 创建容器

iframe 可以创建一个全新的独立的宿主环境,这意味着我们的前端应用之间可以相互独立运行。采用 iframe 有几个重要的前提:

  • 网站不需要 SEO 支持
  • 需要设置加载机制
  • 需要设置通讯机制

框架之上设计通讯、加载机制

不论是基于 Web Components 的 Angular,或者是 VirtualDOM 的 React 等,现有的前端框架都离不开基本的 HTML 元素 DOM。那么,我们只需要:

1. 在页面合适的地方引入或者创建 DOM

2. 用户操作时,加载对应的应用(触发应用的启动),并能卸载应用。


通过组合多个独立应用、组件来构建一个单体应用

常见的方式有:

  • 独立构建组件和应用,生成 chunk 文件,构建后再归类生成的 chunk 文件。(这种方式更类似于微服务,但是成本更高)
  • 开发时独立开发组件或应用,集成时合并组件和应用,最后生成单体的应用。
  • 在运行时,加载应用的 Runtime,随后加载对应的应用代码和模板。
    但是,首先它有一个严重的限制:必须使用同一个框架。
    其次,采用这种方式还有一个限制,那就是:规范!**规范!**规范!。在采用这种方案时,我们需要:
  • 统一依赖。统一这些依赖的版本,引入新的依赖时都需要一一加入。
  • 规范应用的组件及路由。避免不同的应用之间,因为这些组件名称发生冲突。
  • 构建复杂。在有些方案里,我们需要修改构建系统,有些方案里则需要复杂的架构脚本。
  • 共享通用代码。这显然是一个要经常面对的问题。
  • 制定代码规范。


纯 Web Components 技术构建

Web Components 组件可以拥有自己独立的 ScriptsStyles,以及对应的用于单独部署组件的域名。然而它并没有想象中的那么美好,要直接使用纯 Web Components 来构建前端应用的难度有:

  • 重写现有的前端应用。是的,现在我们需要完成使用 Web Components 来完成整个系统的功能。
  • 上下游生态系统不完善。缺乏相应的一些第三方控件支持,这也是为什么 jQuery 相当流行的原因。需要设置通讯机制
  • 系统架构复杂。当应用被拆分为一个又一个的组件时,组件间的通讯就成了一个特别大的麻烦。
  • 浏览器兼容问题


现有框架(single-spa、qiankun、mooa)

其中single-spa已经实现了大部分框架(vue、react、angular)的启动和卸载处理,但不适用于生产环境

qiankun是基于spa-single实现的以运行在生产环境为目标的微前端服务框架

Mooa是一个仅仅基于angular框架的微前端框架


设计模式


简单工厂- 处理变与不变的

工厂模式:将创建对象的过程单独封装,实现无脑传参,核心:处理变与不变的


抽象工厂- 开放封闭原则

简单工厂因为没有遵守开放封闭原则, 暴露一个很大的缺陷。例如若我们添加管理层一些考评权限,难道我们要重新去修改Factory函数吗?这样做会导致Factory会变得异常庞大,而且很容易出bug,最后非常难维护


单例模式 - 保证一个类只有一个实例

保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式要求不管我们尝试去创建多少次,它都只给你返回第一次所创建的那唯一的一个实例


装饰器模式 - 实现只添加不修改

适配器模式 - 兼容就是一把梭

代理模式

事件代理:点击子元素,用父元素代理

缓存代理


观察者模式

结束

相关文章
|
存储 缓存 移动开发
【精品】前端知识梳理(二)
最近有小伙伴私聊广东靓仔,能整理一份目前主流的前端知识点么? 因此有了这篇文章。
|
前端开发 JavaScript Java
【精品】前端知识梳理(一)
最近有小伙伴私聊广东靓仔,能整理一份目前主流的前端知识点么? 因此有了这篇文章。
|
JavaScript 前端开发 程序员
好程序员Web前端培训入门之JS基础知识梳理汇总
好程序员Web前端入门之JS基础知识梳理汇总,Web前端工程师是当前各大企业都比较稀缺的人才,薪资待遇和就业前景都很不错。不论是专业还是非专业,有基础亦或是无基础,都想通过学习Web前端实现高薪就业。不过,学习要一步一个脚印,不能一口吃一个胖子,所有的实战经验都是基于理论而积累形成,今天的Web前端入门学习教程就给大家梳理汇总一下JS相关的基础知识点。
1458 0
|
1月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
128 2
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
38 0
|
1月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
2月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架