前端学习的心路历程

简介: 在我刚接触前端时,就被他的灵活自由度深深吸引。可以说在学校并没有前端这些知识,只能靠查阅W3school进行简单的Html标签学习。看别人的文章,看一些官方文档来进行学习,在这里我将我从零学习前端的经历进行慢慢的阐述。

可以说学习前端都是从

这个标签开始学习起来的,认识的第一个css属性一般都是width。什么事情都有

     第一步。

     .box{

           width: 100px;

           height: 200px;

       }

   

       Hello World!

   

   在这里我想吐槽一下为什么我不论是学习前端还是后端第一次打印出来都是习惯性的写Hello World!


HTML的全称为超文本标记语言,和他的搭档CSS层叠样式表,可以说是每个前端学习人员的第一步,当然HTML的标签没什么好介绍的,这里主要介绍CSS。CSS可以说只要你想要的样子他都能满足你,height、width、color、font...各种各样的样式。[W3school](https://www.w3school.com.cn/css/index.asp) 是学习css的手册你也可以翻阅文章书籍不断的强化自己的前端基础知识。只有基础好了才能胜任任何任务,Html、Css可以说是勾引我入门的原因。当然前端学习不止有这些搭建样式的语言,还有被我和小伙伴戏称的农夫三拳之一的JavaScript。


JavaScript

JavaScript有七种数据类型(到ES6):number、string、Boolean、undefined、null、symbol、object。前六种为基本类型、object为引用类型。


var、let、const

虽然都是用来定义一个属性但是,既然有三个可定会有不同的,要不创造出来干嘛。

 

var定义的变量,没有块的概念,可以跨块访问,不能跨函数访问

let定义的变量只能在块作用域里访问,不能跨块访问,也不能跨函数访问

const用来定义常量,使用时必须初始化,只能在块作用域访问,不能修改


<scripttype="text/javascript">// 块作用域    {
vara=1;
letb=2;
constc=3;
// c = 4; // 报错varaa;
letbb;
// const cc; // 报错console.log(a); // 1console.log(b); // 2console.log(c); // 3console.log(aa); // undefinedconsole.log(bb); // undefined    }
console.log(a); // 1// console.log(b); // 报错// console.log(c); // 报错// 函数作用域    (functionA() {
vard=5;
lete=6;
constf=7;
console.log(d); // 5console.log(e); // 6  console.log(f); // 7     })();
// console.log(d); // 报错// console.log(e); // 报错// console.log(f); // 报错</script>```<script>console.log(a)//打印出undefinedvar a=3console.log(b)//报错let b=3//实际上var可以理解为var aconsole.log(a)a=3</script>var与其他相比存在变量提升,在同一个代码块中,在let后声明之前引用了变量,则会报错。let则会打印出来undefined

const定义的值是不可变的吗?当然不是,大家可以试一试用const定义一个对象,改变对象里面的属性值看看是否会报错。

JavaScript的语法太多了,可以说他作为农夫三拳之中可以是最疼的一拳直接给你打拉了。在这里我不知道具体介绍什么,因为都很重要,之后的文章我会挑一个问题系统的讲解。

react

对于很多萌新来说js的框架不知道学习那个好,前端三大框架React、Vue、Angular,

Angular

AngularJS是一个客户端的JavaScript MVC开源框架,特别为使用MVC架构模式的单页面web应用而设计,可用于开发动态Web应用程序。它不是一个完整的堆栈,而是一个处理web页面的前端框架。

AngularJS完全基于HTML和JavaScript,因此无需学习其他语法或语言。

AngularJS将静态HTML更改为动态HTML。它通过添加内置属性和组件扩展了HTML的功能,还提供了使用简单JavaScript创建自定义属性的功能。

AngularJS最为核心的是:MVC(Model–view–controller)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。Angular通过指令扩展了HTML,以一个 JavaScript文件形式发布,通过script标签添加到网页中。Angular的优势在于:零配置、深度整合设计模式、约定才是框架的本质。


React


React是一个开源的JavaScript库,由Facebook和一个大型开发者社区共同维护。此库(也可转换为web开发框架)广泛用于开发web应用程序的用户界面。这个特殊的框架是为了构建大型应用程序而设计的,这些应用程序的数据会随着时间的推移不断变化。

React的主要功能是对DOM操作,声明式设计,更快的开发出Web应用系统。借助React,你可以非常轻松地创建用户交互界面,为你应用的每一个状态设计简洁的视图。在数据改变时,React也可以高效地更新渲染界面。


Vue


Vue是一个开源JavaScript框架,能够开发单页面应用程序。它还可以用作Web应用程序框架,目的在于简化Web开发。它的流行有很多原因,其中一个关键原因是它能够在没有任何动作的情况下重新渲染,它允许构建可重用,是一个小巧但功能强大的组件而且允许我们在需要时随时添加组件。

Vue提供了MVVM数据绑定和一个可组合的组件系统,具有简单、灵活的 API。从技术上讲,Vue集中在MVVM模式上的视图模型层,并通过双向数据绑定连接视图和模型。实际的DOM操作和输出格式被抽象出来成指令和过滤器,相比其它的MVVM框架,Vue更容易上手。

```

前端三大框架并没有什么太多先学习和后学习的分别,因为学习哪一个都是基于你JavaScript的功底。作者学过Vue和React并且都写过项目,对于给我的感觉,Vue更好上手,所以我推荐React。别问为什么,就是喜欢React。

state 状态

```js

React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。

React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。

class Clock extends React.Component {

   constructor(props) {

     super(props);

     this.state = {date: new Date()};

   }

 

   render() {

     return (

     

       

Hello, world!

       

现在是 {this.state.date.toLocaleTimeString()}.

     

     );

   }

 }

 

 ReactDOM.render(

  ,

   document.getElementById('example')

 );

```

props  

```

state 和 props 主要的区别在于props是不可变的,而 state 可以根据与用户交互来改变。这就

是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。

function HelloMessage(props) {

   return

Hello {props.name}!

;

}

 

const element = ;

 

ReactDOM.render(

   element,

   document.getElementById('example')

);

```

生命周期

React的生命周期从广义上分为三个阶段:挂载、渲染、卸载

-   Mounting:已插入真实 DOM

-   Updating:正在被重新渲染

-   Unmounting:已移出真实 DOM

因此可以把React的生命周期分为两类:挂载卸载过程和更新过程。

-   **componentWillMount** 在渲染前调用,在客户端也在服务端。

-   **componentDidMount** : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异步操作阻塞UI)。

-   **componentWillReceiveProps** 在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用。

-   **shouldComponentUpdate** 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。\

   可以在你确认不需要更新组件时使用。

-   **componentWillUpdate**在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。

-   **componentDidUpdate** 在组件完成更新后立即调用。在初始化时不会被调用。

-   **componentWillUnmount**在组件从 DOM 中移除之前立刻被调用。

学习前端已经过去了一年,我也渐渐慢慢适应了各种工作,但还要学习的还有很多,就让我在这里一边学习一边和大家分享吧。

相关文章
|
5月前
|
机器学习/深度学习 存储 缓存
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
大型语言模型(LLM)的推理效率是AI领域的重要挑战。本文聚焦KV缓存技术,通过存储复用注意力机制中的Key和Value张量,减少冗余计算,显著提升推理效率。文章从理论到实践,详细解析KV缓存原理、实现与性能优势,并提供PyTorch代码示例。实验表明,该技术在长序列生成中可将推理时间降低近60%,为大模型优化提供了有效方案。
928 15
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
|
6月前
|
存储 人工智能 Java
使用Spring AI调用AI模型
Spring AI是Spring框架的模块,支持人工智能和机器学习,提供简单易用的API集成主流AI服务(如OpenAI、Azure、百度千帆等)。其主要功能包括统一API接口、提示词工程、向量存储、文本嵌入与生成。核心概念涵盖AI Client、Prompt Template和Vector Store。通过添加依赖和配置API密钥,可快速对接Chat Model并使用Advisors API增强交互体验。此外,Spring AI Alibaba项目为阿里云通义模型提供了高层次API抽象,助力开发者构建AI应用。
984 2
|
API 调度 数据库
OpenStack核心组件Nova
【8月更文挑战第4天】
727 9
|
10月前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
1110 0
|
10月前
|
供应链 算法 区块链
深入浅出区块链技术:从原理到应用
【10月更文挑战第21天】 本文旨在为读者提供一个关于区块链技术的全面概述,包括其工作原理、关键技术特点以及在现实世界中的应用案例。通过本文,您将能够理解区块链如何在不依赖中心化机构的情况下确保数据的安全性和不可篡改性,并探讨这项技术如何被应用于金融、供应链管理等多个领域,以提高效率和透明度。
688 1
|
机器学习/深度学习 存储 算法
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
通过探索大语言模型(LLM)架构之间的潜在联系,我们可能开辟新途径,促进不同模型间的知识交流并提高整体效率。尽管Transformer仍是主流,但Mamba等线性循环神经网络(RNN)和状态空间模型(SSM)展现出巨大潜力。近期研究揭示了Transformer、RNN、SSM和矩阵混合器之间的深层联系,为跨架构的思想迁移提供了可能。本文深入探讨了这些架构间的相似性和差异,包括Transformer与RNN的关系、状态空间模型在自注意力机制中的隐含作用以及Mamba在特定条件下的重写方式。
538 7
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
|
9月前
|
存储 安全 Java
ConcurrentLinkedQueue详解
通过本文的介绍,希望您能够深入理解 `ConcurrentLinkedQueue`的工作原理、主要特性、常用方法以及实际应用,并在实际开发中灵活运用这些知识,编写出高效、健壮的并发程序。
246 3
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与艺术的融合:创意生成与审美判断的技术革新
【7月更文挑战第1天】人工智能与艺术融合,探索创意生成与审美判断的新边界。AI借助深度学习和GANs,生成图像、音乐和文本,革新艺术创作。同时,通过学习分析,AI在艺术鉴赏中提供客观审美判断,助力艺术家和观众理解作品。技术进步不断深化艺术与AI的合作,共创艺术未来。
|
11月前
|
前端开发 JavaScript 开发者
深入解析前端开发中的模块化与组件化实践
【10月更文挑战第5天】深入解析前端开发中的模块化与组件化实践
252 1
|
10月前
|
搜索推荐 API 决策智能
电商的强劲马达:京东商品详情API接口
在数字化商业时代,京东商品详情API接口为企业和开发者提供了丰富的数据资源和应用机会。本文深入探讨了该接口在电商平台建设、价格优化、个性化推荐、市场分析、移动应用开发和精准营销等方面的作用及其带来的商业价值和用户体验优化。
178 0