课程大纲:

https://miaov.com/index.php/news/newsDetail/nid/263  原文件

  • Npm 基本使用

    • 切换镜像, 国内的网络访问 npm 服务器可能比较慢, 切换到国内的镜像会更快
    • 安装卸载, 使用 npm 快速安装和卸载项目依赖, 同时也可以把项目依赖声明在 package.json 文件里
    • 运行命令, 在 package.json 的 script 字段里面, 你可以声明一些和项目相关的自定义命令, 这样可以快速对项目进行一些相应的操作
  • webpack

    • 模块打包器, 除了分析 js 模块依赖, 配合相应的 loader 还可以对你的资源依赖进行分析和打包
    • loader 相关, 在引入模块前, loader 会先预处理一下模块的内容
      • babel-loader 处理 js 模块, 配合不同的 babel 插件可以编译不同内容
      • css, style-loader 引入 css, 如果你要引入 css, 应该先让 css-loader 介入处理
      • file-loader 加载资源文件, css-loader 会帮你引入一些图片或者你会在 js 里面引入一些资源依赖, 这个时候需要你把这些路径和资源交给 file-loader 处理.
    • plugin 相关, 插件会做一些 loader 做不来的事情, 它可能会在构建的不同时间点起作用
      • html-webpack-plugin
      • clean-webpack-plugin
      • ProvidePlugin, 更快速的引入模块
    • devtool 找到源码的位置
    • webpack-dev-server, 开发测试的利器
  • react-router-dom

    • 构建多视图应用的最佳实践
    • 不同类型的Router, 你应该把你的组件置于这个组件之下
      • BrowserRouter, 使用 html5 history api, 需要后端的服务器配置
      • HashRouter, 它使用起来兼容性更强, 也不需要在服务器做一些其他配置
    • Link和 NavLink, 一个增强的 a 链接, 你可以使用它来跳转页面
    • Route, 路由的核心组件, 如果 path 被匹配到, 它指定的组件会被渲染
      • 使用 component 渲染组件, 接受一个组件变量或回调函数用于渲染
      • 使用 render 渲染组件, 接受一个回调函数用于渲染
      • 使用 children 渲染组件, 接受一个回调函数用于渲染, 但此 route 一定会被匹配
      • match prop,
      • location prop
      • history prop
        • 被匹配到的组件可以通过不同的方式拿到以上三个组件
      • exact 级别的匹配, 这意味着你没法利用穿透特性去匹配路由
      • strict 级别的匹配, path 的后的 slash 大有不同, 它要求你的 location.pathname 也必须也有 slash
    • Switch , 有时候你想让一个的 pathname 匹配到多个 Route 来组合你的页面, 但有时候你只想挑选其中一个, 使用 Switch
    • Redirect 路由的重定向 , 如果它被渲染, 会重新跳转地址
    • withRouter 可以跨层级拿到 match, location, history
  • redux

    • 管理更复杂的应用状态, 提供可预测的状态管理
    • action 动作, 如果你要修改数据, 你应该先发起一个动作
      • action type, action是一个对象, 它应该有一个 type 属性标明它的身份
      • action creater, 它用来创建 action, 有中间件参与有你还可以在里面封装逻辑和异步操作
      • 使用 bindActionCreators 绑定 action creater, 这样你就可以直接发起 action 啦
    • reudcer , 计算出下一个应用状态
      • 纯函数, 确定的输入总会有相同的数据, 并且无副作用
      • 使用 combineReducers 合并子 reducers, reducer 只有一个, 此方法可以把你写的小 reducer 快速合并成一个
    • middleware, 中间件, 捕捉每一次 action
      • 理解 middleware, 在 action 的发起到 reducer 的执行的期间, 你可以让 middleware 介入并做一些其他操作
      • 一个简单的 middleware, redux-thunk, 这样你的 action creator 可以返回更多的数据类型
    • store, 应用中唯一 store, 使用这个对象用来维护整个应用的 state
      • getState 方法, 获取state
      • dispatch( action ), 更新 state
      • subscribe(listener) 注册监听器
    • react-redux, 让 react 和 redux 连接起来
      • Provider 应用中最顶层的组件
      • connect, 连接 react组件 和 store, 这个高阶组件可以返回一个增强过后的组件, 如果你想让某个应用从 state 里面拿到数据, 使用 connect
  • react

    • jsx 语法, 写结构的语法糖, 快速创建 dom 结构

      • 在 jsx 中嵌入表达式
      • jsx 本身作为表达式
      • 在 jsx 中指定属性
      • 在 jsx 中指定 children
      • jsx 中的防注入攻击, react 会把内容转成字符串
      • 写在 React 作用域内
      • 使用点符号
      • 大写开头的自定义组件
      • 运行时选择类型的解决方案
      • 在属性中使用表达式
      • 字符串字面量
      • 属性的默认值: true
      • 属性的展开写法
      • 字面量作为 children
      • jsx 作为 children
      • 表达式作为 children
      • 函数作为 children
      • 会被忽略的 Booleans, Null, Undefined, 不会渲染到页面
    • 定义组件, 构建一个可维护的应用

      • 类式组件, 有完整的生命周期和内部状态
      • 函数式组件, 为渲染而生, 没有生命周期和内部状态
      • 使用 PropTypes 对 props 进行类型检查, 在开发期间规范代码和数据检测
      • 定义默认 props, 在没有传入 props 的时候, 保证有一个默认值
      • 使用 refs 得到真实的 DOM, 可以调用浏览器 dom 的 API
      • 使用 refs 得到类组件实例, 可以访问组件实例的方法和属性
    • Event, 在 jsx 中使用事件

      • react 中的合成事件对象, 事件触发会往回调函数传入一个 event 对象, 这是 react 集成的, 也可以通过 event.nativeEvent 拿到原生事件对象
      • react 中支持的事件, react 中有着完善的事件支持, 而且不需要额外兼容
    • props, 构建视图, 在组件直接建立沟通的桥梁
      • 组件之间的交流, 组件之间可以通过 prop 传递数据
      • 单向数据流, 组件的数据永远是从顶层流向底层, 这会带来清晰的数据流
      • props 只读, 属性是只读的, 这样会保护单向数据流的特性
    • state, 更新视图, 把对页面的维护变成对数据的维护
      • 定义组件的内部状态, 内部状态意味它某个时刻可能会变化
      • react 更新视图的机制, 如果要修改 state, 应该使用 setState
      • state 的异步更新, 在一次事件循环中 state 不会马上改变
      • state 的合并更新, 多次 setStete 会合并在一起, 保证效率和性能
      • 让组件受控, 限制组件自身的行为, 接受 react 控制
      • setState API, 通过它来更新组件的状态
    • 生命周期, 利用钩子函数更简便的参与页面的状态变化
      • Mounting 阶段

        • constructor(), 构造组件实例
        • componentWillMount(), 组件将要挂载之前
        • render(), 返回 jsx, 用于渲染
        • componentDidMount(), 组件挂载完成之后调用, 可以在此发起数据请求
      • Updating 和相应的生命周期函数
        • componentWillReceiveProps(), 依赖于父组件更新阶段的 render 执行, 可以在此 setState
        • shouldComponentUpdate(), 可以拦截此次更新, 阻断 render 的执行, 在这里可以做一些性能优化的操作
        • render(), 返回 jsx, 用于渲染
        • componentDidUpdate(), 更新之后函数会执行
      • Unmounting 和相应的生命周期函数
        • componentWillUnmount(), 在组件卸载之前可以在此做一些清空操作, 比如不再等待数据返回, 清空定时器和事件

react大纲的更多相关文章

  1. React入门---基础知识-大纲-1

    -----------------在慕课网学习react入门笔记-------------- ---------博主边学边记录,手把手进行学习及记录---------- --------------- ...

  2. React Native 网络层分析

    文:志俊(沪江Web前端) 本文原创,转载请注明作者及出处 在使用React Native开发中,我们熟练的采用JavaScript的方式发送请求的方式发送一个请求到服务端,但是处理这个请求的过程其实 ...

  3. vue和react全面对比(详解)

    vue和react对比(详解) 放两张图镇压小妖怪 本文先讲共同之处, 再分析区别 大纲在此: 共同点: a.都使用虚拟dom b.提供了响应式和组件化的视图组件 c.注意力集中保持在核心库,而将其他 ...

  4. React.js 入门与实战课程思维导图

    原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,在这里分享了课程中的思维导图,供大家参考. 原文发表于我的技术博客 此导图为课程 ...

  5. React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了

    原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,文章中是目前整个课程的大纲,以后此课程还会保持持续更新,此大纲文档也会保持更新, ...

  6. react router @4 和 vue路由 详解(全)

    react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...

  7. React+DvaJS 之 hook 路由权限控制

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP 活动 招聘 ITeye 写博客 发Chat 登录注册 原 React+DvaJS 之 hook 路由权限控制 20 ...

  8. 【React】354- 一文吃透 React 事件机制原理

    大纲 主要分为4大块儿,主要是结合源码对 react事件机制的原理 进行分析,希望可以让你对 react事件机制有更清晰的认识和理解. 当然肯定会存在一些表述不清或者理解不够标准的地方,还请各位大神. ...

  9. react基础学习和react服务端渲染框架next.js踩坑

    说明 React作为Facebook 内部开发 Instagram 的项目中,是一个用来构建用户界面的优秀 JS 库,于 2013 年 5 月开源.作为前端的三大框架之一,React的应用可以说是非常 ...

随机推荐

  1. Spring 事务不回滚

    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚. 例:     类似这样的方法不会回滚 (一个方 ...

  2. C#调用windows命令行(CMD)

    using System.Diagnostics; public static void StartCmd(String command){Process p = new Process();p.St ...

  3. 在线测试正则表达式工具 jQuery.Validate验证库

    http://www.jb51.net/tools/zhengze.html http://www.cnblogs.com/weiqt/articles/2013800.html  

  4. 查看Linux系统是32位的还是64位的

    方法1: getconf LONG_BIT 上面显示我先用的是32位的系统. 方法2: .uanme -a .uname -m 显示i686或x86就是32位的系统,显示x86_64就是64位系统. ...

  5. 7、Semantic-UI之图标与按钮组

    7.1 图标按钮   Semantic-UI中可以定义一组图标样式,并且可以在按钮中使用图标. 示例:定义一个图标按钮 <button class="ui black button&q ...

  6. HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版

    <HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站>以HTML与CSS为主,配合jQuery制作网页,并搭配jQueryMobile制作移动网页,通过具体的范例从基 ...

  7. 理解ASP.NET MVC引擎处理模型字符串的默认行为,涉及Html.Raw()和HttpUtility.HtmlDecode()

    MVC引擎默认会将Model属性值中包含的html字符串做encode,所以如属性中包含类似 <br> 这样的标记,MVC引擎会将它们转换成html实体码 %3Cbr%3E 所以1:在编辑 ...

  8. Razor TagHelper实现Markdown转HTML

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 用途 Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人 ...

  9. coffee主题美化内容概要

    1.具备自动生浮动标题目录(可隐藏) 2.页首目录概要 3.主标题有明显的标志背景颜色,二级标题缩进合适 4.一级.二级标题下图片缩进合适 5.博客签名 6.背景音乐列表 7.打赏 8.联系方式(QQ ...

  10. CentOS 下安装 SNMP 服务

    CentOS 中搭建 SNMP 服务 0.前言 首先这个服务我不知道有什么用,学习CCNA的也许有了解.所以这里仅仅只是教做题,下面还有一些搜到的配置文件希望会大家有所帮助. 简单网络管理协议(SNM ...