react登录页面_用 React 做一个人脸识别网站 - 前端篇

news/2024/5/15 9:03:17/文章来源:https://blog.csdn.net/weixin_39974932/article/details/111617992

81022fa8b671fbf27d095361df0e4906.png

引言

React 可以说是近些年最热门的前端框架啦, 并且非常非常的好用 ~

很多的国外公司比如 Netflix、Feedly、Airbnb 都是用它来实现的网站主页。

那么 React 到底是个什么呢?它其实是一个为数据提供渲染为HTML视图的开源JavaScript 库。传说最早起源于Facebook 的内部项目,由于太好用了,就开源给大家使用了。

现在国内的很多公司都在招聘会 React 的前端工程师。说明如果会这项技术还是会很吃香哒。

那么我们应该怎么学习它呢?

它的官方文档当然是一个选择 ~

里面有官方人员给出的最严谨的定义和最全的方法解释,一步一步跟着学的话应该也能学会。

不过,稍显有那么点点枯燥啦。

想要更好玩的学习方法,不妨找个小项目来上手吧。

因为根据认知心理学的理论,学习的最好方法之一就是应用 ~

在“做中学” 会比单纯的 “看概念” 更记忆深刻哦 ~

我之前在初步学习 react 的时候,有小试牛刀,

做了一个机器人 ️网站,网址在这里:https://rocky-hamlet-79784.herokuapp.com/ 。

教程在此:https://zhuanlan.zhihu.com/p/296727460

今天想教大家一个升级版!!!一个可以有用户的人脸识别网站~

效果展示

https://wenjia-smartbrain.herokuapp.com/ (后端部分还没完全搭建好)

由于教程篇幅过长,将会分成四个部分:前端篇、后端篇、数据库篇 和 部署篇。

跟着我一起动手,不仅能掌握 react 框架的基本使用,还能拥有一个可以被访问的网站哦~~

前端篇

思路梳理

前端的页面想设计成这样:

378b390ec57d9893b8f5d7a43e8f289d.png

首页可以拆分成3个元素, 分别是登录、注册、导航栏。

那就每个元素为一个组件。

登录后的页面:

aaa7094ee92d0585c761f93811da8ad2.png

可以拆分成5 个组件。除去导航栏,还有logo、搜索框、排名区、面部识别功能区。

每个组块存储在一个文件夹 内, 而所有的模块都放在模块文件夹下, 像这样

b600f39109563288d2a116e7f851bca3.png

创造好的 component,可以在app.js中以 以下的形式被引用 。

Tips:app.js中的多个 components 要放在 <div></div> 里面哦。

​
function App() {return (<div><Navigation /><Logo /> <ImageLinkForm/><FaceRecognition />... 省略了其他组件们...
​</div>
​);
}
​

功能实现

讲完了思路,那我们就来动手写吧 ~

注册, 登录功能

css

因为要花好多时间调试好看的样式,而样式会根据项目的不同而进行很大的调整。

所以这里具体样式就直接给大家了,就不用花太多时间纠结样式了。

感兴趣的可以去找我的源码康康。

目前只要安装一个好用的插件 tachyons 就可咯。

npm install tachyons
npm tachyons
​

Index.js 导入

import "tachyons";

页面

App.js

功能: 没登入之前是注册页面, 登录之后是搜索图片页面。

实现: constructor()

Tips: jsx语法: html 里加了{ } 就可以写 js 了。

constructor(){super()this.state = {input: "",route: "signin"}}
​
​
render() {return (<div className="App"><Navigation />{ this.state.route === "signin"?  <div>< Signin /></div>:  <div> <Logo /> <Rank /><ImageLinkForm onInputChange={this.onInputChange} onButtonSubmit={this.onButtonSubmit}/><FaceRecognition /><Particles className="particles"params={particleOptions}/></div>}   </div>);}}​

同理,新建 register 页面。

// 新增代码<div className="mt3"><label className="db fw6 lh-copy f6" htmlFor="name">Name</label><inputclassName="pa2 input-reset ba bg-transparent hover-bg-black hover-white w-100"type="text"name="name"id="name"onChange={this.onNameChange}/></div>

页面跳转

设置

constructor(){super()this.state = {input: "",route: route// route: "signin"}}onRouteChange = (route) => {this.setState({route: route});}
​
render() {return (<div className="App"><Navigation onRouteChange = {this.onRouteChange}/>{ this.state.route === "signin"?  <div><Signin /><Particles className="particles"params={particleOptions} /></div>:  <div> <Logo /> <Rank /><ImageLinkForm onInputChange={this.onInputChange} onButtonSubmit={this.onButtonSubmit}/><FaceRecognition /><Particles className="particles"params={particleOptions}/></div>}   </div>);}

添加思路: 需要跳转到什么页面, onRouteChange(param)}, param就写什么参数。

Tips: 千万别忘了在函数头传参 {onRouteChange} !!!!!

Navigation.js (signout button)

onClick={({onRouteChange}) => onRouteChange("signin")}

Signin.js

// 千万别忘了传参 {onRouteChange} !!!!!
// 箭头函数:render的时候不调用这个函数,只有当onClick的时候才调用
//            onClick = {() => onRouteChange("rankpage")}<div class=""><input // 箭头函数:render的时候不调用这个函数,只有当onClick的时候才调用onClick = {() => onRouteChange("rankpage")}className="b ph3 pv2 input-reset ba b--black bg-transparent grow pointer f6 dib" type="submit" value="Sign in" /></div><div class="lh-copy mt3"><a onClick = {() => onRouteChange("register")} href="#0" className="f6 link dim black db">Register</a></div>       

Register

<input // 箭头函数:render的时候不调用这个函数,只有当onClick的时候才调用onClick = {() => onRouteChange("signin")}className="b ph3 pv2 input-reset ba b--black bg-transparent grow pointer f6 dib" type="submit" value="Register" /></div>

上传照片并识别

Step 1. 输入框,按钮框对于输入的识别

App.js 设置 state,并渲染

constructor(){super()this.state = {input: ""}}
​onInputChange = (event) => {console.log(event.target.value);}
​onButtonSubmit = () => {console.log("click");}render() {return (<div className="App"><ImageLinkForm onInputChange={this.onInputChange} onButtonSubmit={this.onButtonSubmit}/></div>);}  

ImageLinkForm.js

传参,用参

 <input className="f4 pa2 w-70 center" type="text" onChange={onInputChange}/><button className="w-30 grow f4 link ph3 pv2 dib white bg-light-purple" onClick = {onButtonSubmit}>Detect</button>

step 2. 能上传图片

调用人家已经做好的api

clarifai (https://www.clarifai.com/)

注册一个账户就能免费用了

(未完待续...)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746308.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站用户头像剪裁上传完整案例

做为网站前段开发人员来说&#xff0c;用户头像剪裁和上传是一个很常用的功能&#xff0c;一般这个功能涉及到图片的放大&#xff0c;缩小&#xff0c;移动&#xff0c;旋转&#xff0c;和剪裁。下面我们来做一个完整的demo&#xff0c;剪裁后的图片以base64的形式返回&#xf…

js记录用户在网站的浏览记录和停留时间(2)

问题&#xff1a;上次的代码确实解决了一部分用户访问记录的收集&#xff0c;但是还是存在一个问题就是 我们网站的注册 都是新页面打开的&#xff0c;如果用户刚进入网站就点击注册&#xff08;打开了新的页面&#xff09; &#xff0c;我代码里用到的 onbeforeunload 就无法将…

burpsuite只拦截特定网站数据包教程

一、背景说明 在配置burpsuite代理截包时经常会遇到这样的情况&#xff1a; 浏览器经常自己发一些包&#xff08;收集用户信息&#xff09;&#xff0c;干挠渗透测试人员对目标网站的检测&#xff1b; 如果是代理手机&#xff0c;那就是很多APP都时不时发一些包&#xff0c;干挠…

【转载】大型网站性能

参考这篇文章&#xff1a;http://www.csdn.net/article/2014-09-30/2821940 把整个过程&#xff0c;分为三段路径&#xff1a; 第一段在用户和浏览器端&#xff0c;主要负责发出用户请求&#xff0c;以及接受响应数据进行计算渲染显示给用户&#xff1b;第二段在网络上&#xf…

用户域名注册后 需要在租服务器吗,搭建论坛需要租用什么样的网站服务器

搭建论坛可能对于普通的站长还是比较遥远的事情&#xff0c;但是对IT行业有比较深刻了解的站长&#xff0c;他们往往喜欢选择搭建一个论坛&#xff0c;聚集一些属于自己的人气。那么搭建论坛需要租用什么样的网站服务器呢&#xff1f;我们知道&#xff0c;论坛它比普通网站需要…

40个新鲜的 jQuery 插件,使您的网站用户友好

作为最流行的 JavaScript 开发框架&#xff0c;jQuery 在现在的 Web 开发项目中扮演着重要角色&#xff0c;它简化了 HTML 文档遍历&#xff0c;事件处理&#xff0c;动画以及 Ajax 交互&#xff0c;这篇文章特别收集了40个新鲜的 jQuery 插件&#xff0c;使您的网站对用户更友…

一些好用的网站

一些好用的网站 Latex公式&#xff1a;http://www.mohu.org/info/symbols/symbols.htm Latex公式&#xff1a;https://www.luogu.org/blog/IowaBattleship/latex-gong-shi-tai-quan 在线latex公式编辑器&#xff1a;http://private.codecogs.com/latex/eqneditor.php LaTeX入门…

php xml网站地图生成,dedecms程序后台生成XML网站地图方法

网站为什么要生成XML地图&#xff1f;因为蜘蛛只能用XML地图来导航&#xff0c;为了更好的被收录&#xff0c;所以才要利用XML地图文件做sitemap。像我们的主站也是有导航的xml文件的哦&#xff0c;51PHP百度MAP 51PHP谷歌MAP&#xff1b;今天无忧主机小编教您如何制作简单可…

网站服务器和与主机区别,网站服务器和主机的区别

网站服务器和主机的区别 内容精选换一换本文介绍通过华为云市场镜像“Drupal内容管理系统(LAMP)”搭建Drupal网站的方法。Drupal是使用PHP语言编写的开源内容管理框架(CMF)&#xff0c;它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。Drupal用于构造提供多种功能和服…

一个成功的响应式网站该怎么策划

原文链接一个成功的响应式网站该怎么策划建站宝盒 2017-05-18 15:40:28 浏览55 评论0html5 网站建设 用户体验摘要&#xff1a; 一个成功的响应式网站需要具备公信力、营销力、传播力&#xff0c;要达到这样的要求网站策划就显得非常关键&#xff0c;网站策划是企业网站建设的重…

SharePoint Online 创建门户网站系列之母版页

前 言 虽然SharePoint中母版页看起来只是头部Banner和底部版权信息这两个部分&#xff0c;但是实质在SharePoint Online中的页面模型中占有重要地位&#xff0c;而且SPO对母版页有着完善的签入签出机制和版本控制&#xff0c;方便使用。 同时&#xff0c;除了保持网站所有页面的…

华纳云香港CN2站群服务器,1C/2C/4C不同C段可选,多达253个独立IP,SEO优化推广首选 含测评

香港站群服务器应用场景&#xff1a; **1.PBN站群SEO&#xff1a;**PBN站群拥有多个独立ip&#xff0c;且互不干扰。快速稳定的网站表现才可以吸引到更多的用户及蜘蛛爬行。 **2.跨境电商运营&#xff1a;**无论第三方平台开店还是自建店群都要求能够让买家快速访问&#xff0c…

Hulu李彬:看到不一样的视频网站,所遇挑战何尝不是一次革新的机会?

Hulu软件技术开发有限公司&#xff08;以下简称Hulu&#xff09;是美国三大电视网NBC、福克斯、迪斯尼合力在2007年建立的在线视频服务网站&#xff0c;主要目的是使传统媒体业务转型成数字新媒体&#xff0c;能够让更多的用户通过互联网上的不同的平台和方式访问视频内容。 此…

【ASP.NET基础】简单企业产品展示网站--产品编辑CRUD

摘要&#xff1a;本文记录创建一个小的、简单的产品网站的步骤。 一&#xff0c;搭建一个简单的产品展示网站&#xff0c;熟悉以下知识点&#xff1a;NVelocity模板引擎、Ajax无刷新页面请求&#xff0c;文件上传&#xff0c;Row_Number实现分页&#xff0c;ckEditor使用&#…

记一次JavaWeb网站技术架构总结

题记工作也有几多年了&#xff0c;无论是身边遇到的还是耳间闻到的&#xff0c;多多少少也积攒了自己的一些经验和思考&#xff0c;当然&#xff0c;博主并没有太多接触高大上的分布式架构实践&#xff0c;相对比较零碎&#xff0c;随时补充(附带架构装逼词汇)。俗话说的好&…

LVS和nginx反向代理网站架构

LVS和nginx反向代理网站架构 nginx反向代理和lvs的dr都存在单点&#xff0c;要keepalived做高可用&#xff0c;但是成本高了 f 转载于:https://www.cnblogs.com/MYSQLZOUQI/p/5100056.html

【web标准设计】学习、提高、欣赏网站推荐

【web标准设计】学习、提高、欣赏网站推荐(转&#xff09;文章包含的一些粗俗、庸俗、恶心的言语可能造成您阅读后的不适感&#xff0c;请谨慎选择是否阅读。如你自愿阅读本文&#xff0c;因粗俗、庸俗、恶心的言语给您所造成的任何后果&#xff0c;本文作者不负任何责任。 华丽…

zabbix-自定义监控项(监控网站80连接数)

自定义监控项&#xff08;监控网站80连接数&#xff09; 需求&#xff1a;监控某台web的80端口连接数&#xff0c;并出图&#xff1b; 第一步&#xff1a;客户端创建脚本&#xff1a; 客户端定义脚本&#xff0c;并编辑zabbix-agent配置文件实现运行定义的脚本&#xff1b; 客户…

大型网站技术架构(一)--大型网站架构演化

转自&#xff1a;https://blog.csdn.net/chaofanwei/article/details/26865169 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向…