首页 > 其他分享 >前端八股复习 1

前端八股复习 1

时间:2024-09-27 20:19:53浏览次数:7  
标签:__ 八股 复习 DOM 数据库 组件 属性 前端 请求

JWT

JWT 通常由三部分组成:Header(头部)、Payload(有效载荷)和 Signature(签名)。

jwt.sign 用于生成(签发)JSON Web Token (JWT)。它接受一个有效载荷(payload)、一个密钥(secret),以及可选的配置参数,最终返回一个签名的 JWT 字符串。
一般我的payload会传入用户名和密码这个对象,secret是自己设置的,配置参数写'1d token时长一天。

vite

http://localhost:5173/
快速启动、按需打包、模块热替换、支持多种框架

npm create vite@latest
npm install

vite做反向代理 vite.config.js

import { defineConfig } from 'vite';

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:5000', // 目标服务器的地址
        changeOrigin: true, // 是否更改请求源
        rewrite: (path) => path.replace(/^\/api/, ''), // 可选,重写路径
      },
    },
  },
});

vite中配置 环境变量 :创建环境变量文件 .env.development ,import.meta.env

跨域

CORS(跨域资源共享)
Vite、webpack 代理
jsonp 由于 <script> 标签不受同源策略限制,可以跨域请求。但这种方法仅支持 GET 请求,且已逐渐被 CORS 取代。
使用 Nginx 反向代理

同源策略是浏览器的一个重要安全特性,保护用户的数据和隐私。在同源策略中,“同源”是指两个 URL 具有相同的协议(如 HTTP、HTTPS)、相同的域名(如 example.com),以及相同的端口(如 80、443)。只有在这三个条件都相同的情况下,两个资源才被认为是同源的。

nginx

Nginx(发音为 “engine-x”)是一个高性能的开源 Web 服务器和反向代理服务器,广泛用于处理 HTTP 和 HTTPS 请求。它也可以作为负载均衡器、缓存服务器和邮件代理等使用。

部署

在阿里云购买云服务器,Xshell7远程连接
node部署(user/local/node) 本地下载安装包,xftp。tar -vxf node-xxxx。配置环境变量,软连接 node npm pnpm。把express上传,pnpm i + 启动。npm start app.js

pm2包 PM2 是一个功能强大的 Node.js 进程管理器,旨在帮助开发者管理和监控 Node.js 应用程序。它提供了许多实用的功能,使得应用的部署、管理和监控变得更加容易和高效。
npm i pm2 -g 之后,软连接。

mongodb
bin目录下,./mongob启动mongo数据库,出现下面的waiting for connection就是启动成功。连接数据库。

nginx ./configure; make; make instal

部署问题

node版本和centos7不匹配
阿里云端口号没有开启
mongodb数据库,无法连接数据库,且没有权限
mongodb配置环境变量出错了,p mongod 都能启动数据库,在任意路径下输入 mongosh 都能连接数据库。Mongodb后台服务,启动 MongoDB 数据库服务

linux 常见命令

rz
tar -vxf : v显示解压过程中的文件列表,解压缩,处理的归档文件名
mkdir
ln -s [源文件或目录] [目标文件或目录] 类似于 Windows 中的快捷方式,
apt install(zip)
unzip
chmod 755 读(r):4 写(w):2 执行(x):1
vi profile

axios二次封装

axios.create
baseURL 是一个非常有用的配置选项,它允许你为所有请求设置一个基础 URL。这使得在进行多个请求时

请求拦截器 响应拦截器,

config.headers.Authorization = `Bearer ${userStore.token}`

promise

Promise 是 JavaScript 中用于处理异步操作的对象

Promise 有三种状态:
Pending(待定):初始状态,既不是成功,也不是失败。
Fulfilled(已兑现):操作成功完成。
Rejected(已拒绝):操作失败。

使用 .then() 和 .catch() 方法来处理 Promise 的结果。

支持链式调用,可以将多个异步操作串联起来。

mongodb

数据库(database) 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
集合(collection) 集合类似于 JS 中的数组,在集合中可以存放很多文档
文档(document) 文档是数据库中的最小单位,类似于 JS 中的对象

mongoese
Mongoose 基于模式的解决方案以定义 MongoDB 集合中文档的结构。以下是 Mongoose 的一些关键特性和概念:

const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true }
});

const User = mongoose.model('User', userSchema);

const user = new User({ name: 'John Doe', email: '[email protected]', password: 'securepassword' });

http

  • HTTP状态码
    1xx:信息性状态码
    2xx:成功状态码
    3xx:重定向状态码,资源位置发生变动,需要客户端重新发送请求
    4xx:客户端错误状态码
    5xx:服务器错误状态码
200 OK: 请求成功并返回所请求的数据。
201 Created: 请求成功,并创建了新的资源。
301 Moved Permanently: 请求的资源已被永久移动到新位置。
302 Found: 请求的资源临时被移到另一个 URL。

304 客户端的缓存资源仍然有效,无需重新下载。

403 表示服务器理解请求,但拒绝执行
权限问题 跨域请求

http请求
restful api
TOP(I- H)C

HEAD:类似GET,只要求服务器返回头部信息,不返回实际的资源内容。
1. TRACE:⽤于测试。要求⽬标服务器返回原始的HTTP请求内容
2. OPTIONS:⽤于获取服务器⽀持的HTTP⽅法列表,以及针对指定资源⽀持的⽅法
3. PATCH: ⽤于对资源进⾏部分更新。
4. CONNECT:⽤于代理服务器

RESTful API 需要遵循统一的接口,使得不同客户端能够以标准方式访问资源。

网络

vue

  • vue2vue3
  • proxy使用
const target = {
  message: "Hello"
};

const handler = {
  get: function(target, prop) {
    console.log(`Getting property: ${prop}`);
    return target[prop];
  },
  set: function(target, prop, value) {
    console.log(`Setting property: ${prop} to ${value}`);
    target[prop] = value;
    return true; // 返回 true 表示设置成功
  }
};

const proxy = new Proxy(target, handler);

// 使用代理访问和修改属性
console.log(proxy.message); // 输出: Getting property: message
                             //        Hello

proxy.message = "Hi"; // 输出: Setting property: message to Hi
console.log(proxy.message); // 输出: Getting property: message
                             //        Hi
  • reactive & ref

reactive:用于创建一个响应式的对象,适用于复杂的数据结构,如对象和数组。
ref:用于基本数据类型(如 string、number、boolean)

reactive:是深度响应的,这意味着它会递归地让嵌套的对象属性都变成响应式的。
ref:只会对 .value 进行响应式处理,如果 ref 的值是一个对象,那么对象本身的属性将不会被深度响应,需要使用 reactive 进行处理。

  • 生命周期

创建阶段
beforeCreate 在组件实例被创建之前调用。在这个阶段,数据观测、事件和生命周期的逻辑尚未设置。
created 在组件实例创建后立即调用。此时,组件的数据已经初始化,观察者已经设置,可以访问 data 和 computed,但 DOM 还没有挂载。

挂载阶段
beforeMount 在挂载开始之前被调用,即在虚拟 DOM 被渲染到真实 DOM 之前。
mounted 组件挂载后调用,此时可以访问真实 DOM,也可以进行 AJAX 请求等操作。

更新阶段
beforeUpdate 在数据更新时,被调用之前。这时,虚拟 DOM 已经在更新,但还没有被应用到真正的 DOM。
updated 数据更新后调用。此时,组件的 DOM 也已经更新,可以执行基于最新 DOM 的操作。

销毁阶段
beforeUnmount 在组件实例卸载或销毁之前调用。这是清理工作、移除事件监听器的好时机。
unmounted 在组件实例卸载后调用。此时,所有的计时器、事件监听器等都已经被清理。

  • v-if v-show
    元素则从 DOM 中移除。
    CSS 的 display 属性来控制元素的显示与隐藏

  • vue router
    在 src/router/index.js 文件中,创建路由
    路由懒加载:使用 import() 动态导入组件:

  • 路由守卫
    全局守卫(在路由实例上使用),路由独享守卫(在路由配置中定义),组件内守卫(在组件中定义)。
    示例:使用全局守卫进行用户身份验证

  • 插槽

  • 父子组件通信
    props
    $emit
    pinia

  • pinia Vue 3 的状态管理库

创建文件夹 /src/store/index.ts

let pinia = createPinia()
export default pinia

在入口文件main.ts引入

import pinia from './store'
app.use(pinia)

用户仓库

// 创建用户相关的小仓库
import {defineStore} from 'pinia'

let useUserStore = defineStore('User', {略})
// 对外暴露获取小仓库的方法
export default useUserStore

state 是 Pinia store 中用于存储应用状态的地方。它通常是一个函数,返回一个包含状态属性的对象。这些属性可以是任何 JavaScript 数据类型,比如字符串、数字、数组、对象等。
Actions:包含业务逻辑和 API 调用

  • Scss
    全局变量
    嵌套样式
    在styles/variable.scss创建一个variable.scss文件!在vite.config.ts文件配置
  • eslint和prettier使用
    eslint针对的是javascript,他是一个检测工具,包含js语法以及少部分格式问题,package.json lint fix
    prettier属于格式化工具,它看不惯格式不统一 tabWidth semi

css

  • 居中
    display:flex
.parent {  
  position: relative;  
  height: 200px; /* 父元素高度 */  
}  
  
.child {  
  position: absolute;  
  top: 50%;  
  transform: translateY(-50%);  
  /* 其他样式 */  
}
  • flex
flex-direction  设置主轴的方向(即项目的排列方向)。
justify-content 设置主轴上的子元素排列方式。
	space-between:两端对齐,元素之间的间隔相等。
	space-around:每个元素两侧的间隔相等。
	space-evenly:每个间隔都相等(包括两端)。
align-content 设置侧轴上的子元素排列方式(针对多行)
	flex-start:在侧轴的起点对齐。
	flex-end:在侧轴的终点对齐。
  • 盒模型

JS

  • 闭包
  • 原型原型链

1.原型:函数都有prototype属性,称之为原型,也称为原型对象
原型可以放一些属性和方法,共享给实例对象使用
原型可以做继承
2.原型链:查找一个对象的属性和方法的时候,先在自身找,找不到则沿着__proto__向上查找,我们把__proto__形成的链条关系称原型链

__proto__属性是每一个对象以及函数都有的一个属性。__proto__属性指向的是创建他的构造函数的prototype。原型链就是通过这个属性构件的。

  • 模块化
    拆分出来每个文件就是一个模块,模块中的数据都是私有的,模块之间互相隔离
    CommonJS、ES6模块化
    ①分别导出
    ②统一导出
    ③默认导出
  • 节流防抖

node

  • express
    app.use((req,res,next)
    全局中间件的注册顺序很重要,因为它们是按照注册的顺序依次执行的。
    Services层封装了业务逻辑,使得controller层不需要关心具体的业务实现细节。访问数据库。
    Controller层是应用程序中处理HTTP请求和响应的入口点。
  • require
    它用于加载模块和文件。
  • npm pnpm 包管理工具

ts

标签:__,八股,复习,DOM,数据库,组件,属性,前端,请求
From: https://blog.csdn.net/yavlgloss/article/details/142504392

相关文章

  • 信息学奥赛复赛复习05-CSP-J2020-01优秀的拆分-对数函数、自然对数、以2为底的对数、
    PDF文档回复:2024092712020CSP-J题目1优秀的拆分[题目描述]一般来说,一个正整数可以拆分成若干个正整数的和例如,1=1,10=1+2+3+4等。对于正整数n的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,n被分解为了若干个不同的2的正整数次幂。注意,一个数x能......
  • 【计算机毕设教程】基于springboot+vue的农产品溯源系统 | 仓库管理系统 | 进销存系统
    【计算机毕设教程】基于springboot+vue的农产品溯源系统|仓库管理系统|进销存系统——前端篇系统演示02.系统功能&业务演示戳我查看页面解析  以采购管理功能为例,这样的一个基本的管理功能页面我们可以将他分为三部分,最顶层为功能介绍区,紧接着是用户搜索......
  • Pbootcms源码上传安装后前端显示错乱乱码问题解决方案
    PbootCMS前端显示错乱或乱码问题可能是由多种原因造成的,下面是一些可能的解决方案:检查字符集设置:确认前端页面的字符集设置是否正确。通常在HTML头部会有一个<meta>标签定义字符集,例如<metacharset="UTF-8">。同时检查PbootCMS后台的字符集设置是否与前端一致,确保数据库和......
  • Pbootcms源码上传安装后前端显示错乱乱码怎么办
    当PbootCMS源码上传安装后,如果前端显示错乱或出现乱码,这通常是由几个常见的原因造成的。以下是针对这种情况的一些解决方案:检查字符编码设置:确认HTML文档头部的字符编码设置是否正确。确保在HTML文档中包含正确的<meta>标签,例如<metacharset="UTF-8">。检查PbootCMS后台的......
  • Element UI 自定义Layout前端页面布局
    1.layout下新建front文件夹index.vue中内容<template><divclass="frontLayout"><el-container><el-header><divclass="navBar"><divclass="navBarLeft">......
  • 0基础学前端 day5
    JavaScript前端学习指南JavaScript是当今Web开发的核心语言之一。作为前端开发的基石,掌握JavaScript有助于开发者构建动态、交互丰富的网页应用程序。本文将详细介绍JavaScript的基本语法、DOM和BOM的使用、接口请求、最新的ES6+特性,以及一些重要的概念如变量提升、事件冒......
  • 前端功能页面展示笔记(一)
    同域:协议域名和端口号相同解决跨域问题 CORS(app)   fromflask_corsimportCORSapp=Flask(__name__)CORS(app)@app.route('/',methods=['GET'])defgenerate_images():配置路由后面要紧跟调用的函数通过this.images调用的数据一定要存在于data()中声明后端......
  • 前端必知必会-jQuery遍历DOM函数
    文章目录jQuery遍历元素什么是遍历?jQuery遍历-祖先遍历DOM树jQueryparent()方法jQueryparents()方法jQueryparentsUntil()方法总结jQuery遍历元素什么是遍历?jQuery遍历,即“移动”,用于根据HTML元素与其他元素的关系“查找”(或选择)HTML元素。从一......
  • 前端必知必会- jQuery - 尺寸函数
    文章目录jQuery-尺寸jQuerywidth()和height()方法jQueryinnerWidth()和innerHeight()方法jQueryouterWidth()和outerHeight()方法jQuery更多width()和height()总结jQuery-尺寸使用jQuery,可以轻松处理元素和浏览器窗口的尺寸。jQuery尺寸方......
  • 前端必知必会-jQuery - 获取和设置 CSS 类
    文章目录jQuery-获取和设置CSS类jQueryaddClass()方法jQueryremoveClass()方法jQuerytoggleClass()方法jQuery-css()方法返回CSS属性设置CSS属性设置多个CSS属性总结jQuery-获取和设置CSS类使用jQuery,可以轻松操作元素的样式。jQuery操......