2024年最新前端框架React快速入门,2024年最新2024年Web前端社招面试题

文末

逆水行舟不进则退,所以大家要有危机意识。

同样是干到35岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说35岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

image.png

image.png

image.png

  • 总结:傻瓜式的点下一步就行了
检测安装环境
  • 我们打开运行窗口 (win + r)
  • 写入 cmd 然后按下回车,来到我们的命令行

image.png

  • 然后再命令行写入一个指令:node -v
  • 然后按下回车,会得到一个 node 的版本号
  • 能看到版本号表示 node 环境安装成功

image.png

配置 vscode(win10)

  1. 右击VSCode图标,选择属性,选择兼容性,勾选以管理员身份运行此程序,最后点击确定

image.png
2. vscode 中 调出终端
3. 输入命令:get-ExecutionPolicy
4. 输入命令:set-ExecutionPolicy RemoteSigned
5. 输入命令:get-ExecutionPolicy

  • Restricted:表示禁止终端使用命令的
  • RemoteSigned:表示可以使用终端命令了

image.png

全局安装脚手架

React团队推荐使用create-react-app(相当于vue的vue-cli)来创建React新的单页应用项目,它提供了一个零配置的现代构建设置。

React脚手架(create-react-app)意义:

脚手架是官方提供,零配置,无需手动配置繁琐的工具即可使用
充分利用Webpack,Babel,ESLint等工具辅助项目开发
关注业务,而不是工具配置

  1. create-react-app会配置我们的开发环境,以便使我们能够使用最新的 JavaScript特性,
  2. 提供良好的开发体验,并为生产环境优化你的应用程序。
  3. 为了能够顺利的使用create-react-app脚手架,
    我们需要在我们的机器上安装:
  4. Node >= 8.10 和 npm >= 5.6。
  • 在终端输入命令:npm install -g create-react-app

image.png

  • 这需要等待一段时间,这个过程在安装三个东西
  • react: react的顶级库
  • react-dom: react在web段的运行环境
  • react-scripts: 包含运行和打包react应用程序的所有脚本及配置

创建项目

  • 先创建一个放置项目的文件夹www
  • 在终端中使用cd指令跳转到这个文件夹
  • 创建项目指令:create-react-app your-app(your-app是项目名,可以自己取)

image.png

  • 出现下面的界面,表示创建项目成功:

image.png

  • 通过cd your-app命令进入目录
  • 运行npm start即可运行项目

自定义React空项目

  • 上面创建的项目是一个例程项目,有自带的代码文件,若想编写自定义的React程序则需要先删除src目录中的所有文件,这样该项目就是一个空项目了
  • 重新创建一个index.js文件

JSX 语法

JSXReact中使用的一种语法,其建立在JS的基础之上,可以直接在JavaScript 中插入HTML,极大方便了前端页面的构建。

如下图所示,APP函数直接返回了一个HTML的标签:
image.png

React快速入门

例程

index.js

// 从 react 的包当中引入了 React。
//只要你要写 React.js 组件就必须引入React, 
//因为react里有一种语法叫JSX,要写JSX,就必须引入React
import React from 'react'


//ReactDOM 可以帮助我们把 React 组件渲染到页面上去,
//没有其它的作用了。它是从 react-dom 中引入的,
//而不是从 react 引入。
import ReactDOM from 'react-dom'


//从APP.js中引入函数APP
import APP from './APP'


//通过构建DOM树
const root=ReactDOM.createRoot(
document.getElementById('root'))


root.render(   //render 对根组件(DOM树)进行渲染

// <React.StrictMode></React.StrictMode> 该标签是
//React中一种标准的模式,用于排错,可以省略
<React.StrictMode>  

    <h1>欢迎进入React的世界</h1>
    <APP />                     

</React.StrictMode>

//<APP /> 该标签用于调用APP.js中的APP函数
  
)

APP.js

//构建函数,该函数用于页面渲染
function APP()
{
    const divContent="标题内容"
    const divTitle="标题"
    return(
        <div title={divTitle}>{divContent}</div>
       //{divContent}在标签div内容中的插值
       //{divTitle}在标签div属性中的插值
    )
    
    //当返回多行内容时,return后面必须加()
    
    //return 后面只能返回一个标签,若有多个标签要返回,
    //需要在最外面套一个共同的父标签
    
    //也可以采用下面两种方法:
    //1.<></>在外面套一个空标签
    //2.<Fragment></Fragment> 在外面套一个Fragment标签
}

export default APP;

map 循环遍历
render() {
  const data = ['apple', 'banana', 'orange'];
 
  const componentList = data.map((item, index) => {
    return <Component key={index} data={item} />;
  });
 
  return (
    <div>
      {componentList}
    </div>
  );
}

在这个例子中,data数组包含了三个水果名称,我们使用map()方法遍历data数组,并针对每个元素创建一个<Component>组件,通过key属性来唯一标识每个组件(下标index标识),同时将当前元素作为data属性传递给组件。最后,将生成的组件列表放在<div>容器中进行渲染。

需要注意的是,使用map()方法时,需要给每个生成的元素指定一个唯一的key属性,以便React能够准确地进行组件的识别和更新

事件

React 事件的命名采用小驼峰式(camelCase),而不是纯小写。如点击事件onClick

使用 JSX 语法时你需要传入一个函数作为事件处理函数,而不是一个字符串

  function hello (e) {    //事件函数
    console.log("哈喽我是点击事件",e);
  }
  //e 中存放的是该事件的一些信息,如鼠标坐标
  
  function A () {
    
    return (
      <div>
        <button onClick={this.hello}>你好</button>
      </div>
      //onClick后面跟上事件对应的方法名 
    )}

React Hooks(钩子函数)
useState 状态处理

useState 设置出的变量,叫状态变量,该变量的改变会引起页面的自动刷新

//构建函数,该函数用于页面渲染
function APP()
{

    const [content,setcontent]=useState("当前内容")   
    //设置状态变量,并设置其初始值,返回值为两个变量,
    //一个用于读取,一个用于修改
    //参数content用来读取该状态变量的当前值,参数setcontent
    //用来修改值

    function handle(e)   //事件函数
    {
        setcontent("修改后的新内容"); 
        //将setcontent对应的状态变量值进行修改
        //修改方式:用传入的值来替换原来的值
        //因此,若状态变量是一个对象,则修改时需要将所有成员
        //变量都书写出来
        
        //若成员变量太多,可以将对象展开
        //展开的代码属性形式: `...读取状态变量值的参数名,`
        //在这后面再对其中部分数据进行修改
        //(重复声明的变量,后面值会覆盖前面值)
        
        console.log("点击了按钮",e);
         //e 中存放的是该事件的一些信息,如鼠标坐标
    }
    

    return(
        <Fragment>
            <div >{content}</div>
            <button onClick={handle}>按钮</button>
        </Fragment>
        
    );
}

useContext逐层传递

CreateContext 设置出的变量,该变量能够逐层传递,从而由此可以改变每一层的Props(属性)

const levelContent=CreateContent(5)
//使用CreateContent()设置了一个Context变量,并为其设初值

//………………
const level=useContext(levelContent)
//获取对应Content变量的值,该值由上层组件中距离当前组件最近的 
//`<MyContext.Provider>` 的 `value prop(属性)` 决定。
//若已经是最高层了,则对应的Context变量值由其初值决定

<levelContext.Provider value={level+1}>
…………
</levelContext.Provider>

useReducer统一管理

useReducer 是一个 React hooks,它允许你在组件中使用状态管理。useReducer 接受两个参数:一个函数作为计算状态的 reducer(状态管理函数),以及初始状态(初始值)。reducer 函数接收 state(状态变量)action(对该状态变量进行什么操作) 作为参数,并返回一个新的 state(状态变量)

useReducer 还提供了一个函数 useReducerPayload,它可以直接在组件中获取由 action 传递的属性。

定义一个 reducer 函数,它接收 stateaction 作为参数:

const counterReducer = (state = 0, action) => {
//action.type 表示对state状态变量操作的类型
  switch (action.type) {
    case 'INCREMENT':
      return state + 1;
    case 'DECREMENT':
      return state - 1;
    default:
      return state;
  }
};

在组件中使用 useReduceruseReducerPayload

const Counter = () => {
  const [state, setState] = useReducer(counterReducer,0);
  //useReducer()参数1是该状态变量对应的状态管理函数,
  //参数2是状态变量的初始值
  
  //返回值为 state 状态变量,setState 状态管理函数触发函数
  const increment = () => {
    setState({ type: 'INCREMENT' });
    //传入操作类型
  };
  const decrement = () => {
    setState({ type: 'DECREMENT' });
  };
  const getPayload = () => {
    return state;
  };

  return (
    <div>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
      <p>Counter: {getPayload()}</p>
    </div>
  );
};

在这个示例中,我们定义了一个简单的计数器组件,它使用了 useReducer 来管理状态。我们定义了一个名为 counterReducer 的 reducer 函数,它根据 action 的类型来更新 state。然后,我们使用 useReducer 获取 state 并将其传递给组件。我们还定义了两个函数 incrementdecrement,它们分别用于增加和减少计数。最后,我们使用 useReducerPayload 函数直接获取 state,并在组件中显示它。

useRef获取状态

useRef 是一个 React hook,它允许你在函数组件中创建一个 ref。ref 是一个指向 DOM 元素的引用,你可以使用它来记录 DOM 元素的状态。ref 不会被渲染,所以它们不会出现在最终的 DOM 结构中。

在组件中使用 useRef

const Counter = () => {
  const [state,setstate]=useState(2)
  
  const count = useRef();
  //设置一个叫count的ref
  
  count.current=state;
  //将当前状态变量的值赋值给count
  
  const increment = () => {
    state++;
  };

  const decrement = () => {
    state--;
  };

//最终结果是点击按钮,状态变量state不断在改变,但count的值
//不变,想要改变count的值需要操作count.current




### 结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

![html5](https://img-blog.csdnimg.cn/img_convert/7856657d9850709a14eb9c724ffe27cb.webp?x-oss-process=image/format,png)

crement = () => {
    state--;
  };

//最终结果是点击按钮,状态变量state不断在改变,但count的值
//不变,想要改变count的值需要操作count.current




### 结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

[外链图片转存中...(img-cVLQLcAs-1715746223490)]

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值