作为后端攻城狮,写前端代码是一种什么体验?囧
非专业前端人员,如有不当之处,请指出,不甚感激!
1、运行前端项目
● 配置
修改 hosts 文件 127.0.0.1 项目中的域名
● 执行命令
前提:确保你安装了较新版本的 Node.js
终端(cmd)切换到前端项目目录下,一般开发工具自带,点击终端 Terminal,第一次运行:
>> npm install
注意:npm 从远程安装包,公司一般会有自己的库,如果安装包失败,发现含有公司的域名,找前端要 npm 源,切换即可,下载比较慢,可以先去喝杯咖啡,听首音乐。一切顺利然后执行
>>> npm start
这个主要用于本地项目启动,比如线上,使用 npm run prod,这个都是配置文件控制,咱不研究。
2、参考文档
● React 官方网站
不懂就扒拉一下文档
https://react.docschina.org/docs/getting-started.html
3、了解 React
● JSX 简介
使用 React 框架,你需要掌握 JSX 语法
① 在 JSX 中嵌入表达式
这个和 Python 中 format 参数化的形式一样。在 JSX 语法中,你可以在大括号内放置任何有效的 JavaScript 表达式。一般的话,我们把 JSX 拆分成多行,包裹到括号内。
② 注意事项
假如一个标签里面没有内容,你可以使用 /> 来闭合标签。
使用 React 框架,他会检测你的语法,如果不正确,会报错。
● 组件
我们 N 年前开发,主要是 html + js,修改东西,都得重启项目,往往可以看到某个开发人员浏览器打开了 N 个页面。什么是组件式开发,举个栗子,我现在要做一个表格,我只需要在一个html 里写一个 div 元素,剩下的表格部分,通过 React 虚拟dom 动态增加。当数据发生改变时,React 会高效地更新并重新渲染我们的组件。
有没有觉得,这段 js 代码像 Java 程序,ShoppingList 继承 React.Component,里面有一个 render(中文:渲染) 的方法,里面有我们熟悉的 html 代码
● props
当 React 元素为用户自定义组件时,它会将 JSX 所接收的属性(attributes)转换为单个对象传递给组件,这个对象被称之为 “props”。
① 我们调用 ReactDOM.render() 函数,并传入 <welcome> 作为参数。
② React 调用 Welcome 组件,并将 {name: 'Sara'} 作为 props 传入。
③ Welcome 组件将
Hello, Sara
元素作为返回值。④ React DOM 将 DOM 高效地更新为
Hello, Sara
。注意: 组件名称必须以大写字母开头。
React 会将以小写字母开头的组件视为原生 DOM 标签。例如,
代表 HTML 的 div 标签,而 <welcome> 则代表一个组件,并且需在作用域内使用 Welcome。所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。● state与生命周期
State 与 props 类似,但是 state 是私有的,并且完全受控于当前组件。
componentDidMount() 方法会在组件已经被渲染到 DOM 中后运行,所以,最好在这里设置计时器:
① 当 <clock> 被传给 ReactDOM.render() 的时候,React 会调用 Clock 组件的构造函数。因为 Clock 需要显示当前的时间,所以它会用一个包含当前时间的对象来初始化 this.state。我们会在之后更新 state。
② 之后 React 会调用组件的 render() 方法。这就是 React 确定该在页面上展示什么的方式。然后 React 更新 DOM 来匹配 Clock 渲染的输出。
③ 当 Clock 的输出被插入到 DOM 中后,React 就会调用 ComponentDidMount() 生命周期方法。在这个方法中,Clock 组件向浏览器请求设置一个计时器来每秒调用一次组件的 tick() 方法。
④ 浏览器每秒都会调用一次 tick() 方法。 在这方法之中,Clock 组件会通过调用 setState() 来计划进行一次 UI 更新。得益于 setState() 的调用,React 能够知道 state 已经改变了,然后会重新调用 render() 方法来确定页面上该显示什么。这一次,render() 方法中的 this.state.date 就不一样了,如此以来就会渲染输出更新过的时间。React 也会相应的更新 DOM。
⑤ 一旦 Clock 组件从 DOM 中被移除,React 就会调用 componentWillUnmount() 生命周期方法,这样计时器就停止了。
>>>正确地使用 State:
● 事件处理
注意:这里一般用箭头函数比较方便,自动绑定 this
● 条件渲染
使用 if
● 列表 & Key
● 表单
● 使用 PropTypes 进行类型检查
注意:
自 React v15.5 起,React.PropTypes 已移入另一个包中。请使用 prop-types 库 代替。
① 限制单个元素
你可以通过 PropTypes.element 来确保传递给组件的 children 中只包含一个元素。
② 默认 Prop 值
您可以通过配置特定的 defaultProps 属性来定义 props 的默认值:
● React 发起 ajax 请求(接口请求)
以 Axios 为例。
我们推荐你在 componentDidMount 这个生命周期函数中发起 AJAX 请求。这样做你可以拿到 AJAX 请求返回的数据并通过 setState 来更新组件。
● React 路由
我们访问一个 URL,最终定向到哪个资源,这部分工作的处理程序,就是路由。
路由也是有状态的,不同状态对应不同功能,路由的参数传递,同样也是绑定在 Props属性 上面。
>>>
閱讀更多 Python大星 的文章