JavaScript学习导图
2017-06-08 14:45:04 0 举报
AI智能生成
一个C++程序员学习JavaScript的路线图。 此图会持续更新。
作者其他创作
大纲/内容
关联主题
浏览器的工作原理
front-end-handbook
LogRocket
Google Developers
函数式编程1<br>
函数式编程2
performance
如何问问题
top-javascript-frameworks-topics-to-learn-in-2017
web前端开发评测系统,里面有面试题、实战代码等
HTML
HTML5元素
优化
<p>JavaScript Optimization Patterns</p>
范畴论
hindley-milner
React、Redux、ES6的github资源
gulp、webpack区别
MERN2.0
基本知识
基本概念
ES6
setting-up-es6
关于如何学习JS的
2016年如何学习JS
6周学习计划,(扯的)
2071,JavaScript应该学什么
一些网站
freecodecamp
weizhifeng
2017前端开发趋势
前端联盟月报
react digest
学习网站
http://javascript.info/
ES6 <span>Cheatsheet</span>
<p><span style="font-weight: normal;">Understanding ECMAScript 6</span></p>
<p><span style="font-weight: normal;">A re<wbr>-introduction to <wbr>Java<wbr>Script</span></p>
<span>编写高质量JavaScript代码的68个有效方法</span>
Effective JS
核心概念
技术点
generator
==与===的区分
transpile
执行上下文
创建阶段
变量对象
执行阶段
活动对象
原型链、继承
宏观解释
从探究Function.__proto__===Function.prototype过程中的一些收获
模块化
JavaScript模块化现状
ESM
CommonJS
AMD
阮一峰介绍系列
模块的写法
AMD(异步模块定义)规范
require.js的用法
JavaScript module in depth
ESL
require.js用法系列教程
require.js <span>为何用 Web 模块的方式</span>
自动化构建、打包
gulp
webpack
大概工作流程
devtool
<code>source-map</code><span> 是用于 </span><code>production</code><span>,</span><code>cheap-eval-source-map</code><span> 是用于 </span><code>development</code><span>。</span>
中文
webpack-dev-server
详解
<span>webpack-dev-server生成的包并没有放在你的真实目录中,而是放在了内存中</span>
博客
webpack四大核心概念
入门
<p><span itemprop="name" style="font-weight: normal;"><a data-pjax="#js-repo-pjax-container">WebpackTutorial</a></span></p>
快速入门
入门指迷
howto
优化
常用plugins
Babel
Babel User HandBook
<p><a>cross-env</a> </p>
状态管理
Redux
基本概念
tutorial
中文文档
Flux --> Redux --> Redux React 基础实例教程
受Flux影响的一种架构风格
Redux入门教程
基本用法
中间件与异步操作
React-Redux的用法
Building App with Redux
Getting Started with Redux
React-Redux
<font color="#000000">Provider<br></font>
New Component
connect(,,)(Component)<br>
<span>mapStateToProps</span>
mapDispatchToProps
Component组件
createStore
Reducer
action
Reducer
action
reducer是纯函数
完整流程描述
Store、State、Action、Reducer
Flux
React
基本原理
ReactDOM.render()
JSX语法
组件(VDOM),只允许一个顶层标签,且第一字母必须大写
this.props.children
React.Children.map
React.ProTypes
获取真实DOM
ref属性
this.refs.[refName]
this.props为静态,this.state为动态
props一般也是父组件传递给子组件的属性,<br>而state只能是自身的属性
组件生命周期,三个状态
Mounting:已插入真实DOM
<span>主要包括属性和状态的初始化阶段、组件即将加载(</span><span>componentWillMount</span><span>)阶段、组件渲染(render)阶段、组件加载完成(</span><span>componentDidMount</span><span>)阶段。<br></span><span>除了</span><span>render</span><span>可在存在期的时候再次进行组件渲染之外,其他阶段只会发生一次</span><span><br></span>
Updating:正在被重新渲染
<span>组件实例化之后,在组件存在的时期,随着与用户的交互,属性或状态的改变,组件可发生一些更新。<br></span><span>在实际开发中,为了防止无意义的渲染,通常会在</span><span>shouldComponentUpdate</span><span>添加判断,自定义是否需要更新</span><span><br></span>
<span>一般的做法是在</span><span>componentWillReceiveProps</span><span>中根据条件判断是否需要更新状态,然后在</span><span>shouldComponentUpdate</span><span>中再根据条件判断是否需要更新渲染组件</span>
Unmounting:已移出真实DOM
每个状态提供了两种处理函数
will函数在进入状态之前调用调用
componentWillMount()
componentWillUpdate()
componentWillUnmount()
did函数在进入状态之后调用
omponentDidMount()
componentDidUpdate()
特殊处理函数
componentWillReceiveProps<br>已加载组件收到新的参数时调用
shouldComponentUpdate<br>组件判断是否重新渲染时调用
React组件样式是一个对象,所已应该写成:<br>style={{opacity: this.state.opacity}}<br>第一个大括号表示这是JavaScript语法<br>第二个大括号表示样式对象
如果需要浏览器支持JSX语法,需要引入<span>browser</span>.js<br>
<pre><code><span>// The ES5 way</span>
<span>var</span> Photo = React.createClass({
handleDoubleTap: <span><span>function</span><span>(e)</span> </span>{ … },
render: <span><span>function</span><span>()</span> </span>{ … },
});</code></pre>
<pre><code><span>// The ES6+ way</span><br><span><span>class</span> <span>Photo</span> <span>extends</span> <span>React</span>.<span>Component</span> </span>{<br> handleDoubleTap(e) { … }<br> render() { … }<br>}</code></pre>
<span>browser.js 其实就是 babel-core 的浏览器版本<br></span><a>BABEL</a><span> is a javascript compiler, and importing its "browser.min.js" file, you are enabling it to "compile" the code inside "text/babel" script tags and execute it as vanilla javascript.</span><span><br></span>
tackoverflow上的解释
<span>React.</span>createClass VS extends Component
解释1
解释2
解释3
组件定义方式
函数式定义。<br>特点是无状态,没有被实例化,无法访问this对象,不能管理生命周期。多用于纯展示的组件<br>
React.createClass方式定义。<br>(已废弃,官方不推荐使用)
集成React.Component方式定义。<br>推荐使用
事件绑定方式
直接在构造函数中绑定
直接在事件中绑定
在事件绑定中直接使用回调函数调用
博客、学习资料
精益React学习指南
编写React组件的最佳实践
progressive web tutorial
React小书
React入门
tutorial
More than React,反面介绍React的缺点
视频
Controller View Pattern
npm命令
状态管理
MobX
middleware
Redux middleware的绝妙解释
middleware解释
understanding middleware
<p>A Beginner's Guide to Redux Middleware</p>
redux middleware的应用
redux middleware生命周期的图形化解释
redux from scratch
如何尽可能降低组件中的state复杂度,同时又不使用Redux
learn-react-before-using-redux
源码解析
Under the hood
React Internals
异步
Promise
promise迷你书
InfoQ
google, <span>Web Fundamentals</span>
介绍
<code>Promise</code><span>,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。</span><br>
特点
<span>对象的状态不受外界影响。</span><code>Promise</code><span>对象代表一个异步操作,有三种状态:</span><code>Pending</code><span>(进行中)、</span><code>Resolved</code><span>(已完成,又称 Fulfilled)和</span><code>Rejected</code><span>(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。</span>
<span>一旦状态改变,就不会再变,任何时候都可以得到这个结果。</span><code>Promise</code><span>对象的状态改变,只有两种可能:从</span><code>Pending</code><span>变为</span><code>Resolved</code><span>和从</span><code>Pending</code><span>变为</span><code>Rejected</code><span>。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。如果改变已经发生了,你再对</span><code>Promise</code><span>对象添加回调函数,也会立即得到这个结果。</span>
缺点
<span>首先,无法取消</span><code>Promise</code><span>,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,</span><code>Promise</code><span>内部抛出的错误,不会反应到外部。第三,当处于</span><code>Pending</code><span>状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。</span>
<span>如果某些事件不断地反复发生,一般来说,使用 </span><a>Stream</a><span> 模式(Nodejs)是比部署</span><code>Promise</code><span>更好的选择。</span>
异步系列介绍
<span>Generator</span>
<span>调用 Generator 函数,返回一个遍历器对象,代表 Generator 函数的内部指针。以后,每次调用遍历器对象的</span><code>next</code><span>方法,就会返回一个有着</span><code>value</code><span>和</span><code>done</code><span>两个属性的对象。</span><code>value</code><span>属性表示当前的内部状态的值,是</span><code>yield</code><span>表达式后面那个表达式的值;</span><code>done</code><span>属性是一个布尔值,表示是否遍历结束。</span>
<code>yield</code><span>表达式本身没有返回值,或者说总是返回</span><code>undefined</code>
子主题
async/await
使用注意点
<code>await</code><span>命令后面的</span><code>Promise</code><span>对象,运行结果可能是</span><code>rejected</code><span>,所以最好把</span><code>await</code><span>命令放在</span><code>try...catch</code><span>代码块中</span>
<span>多个</span><code>await</code><span>命令后面的异步操作,如果不存在继发关系,最好让它们同时触发</span>
<code>await</code><span>命令只能用在</span><code>async</code><span>函数之中,如果用在普通函数,就会报错</span>
视频
axios
TypeScript
DOM
VDOM
CSS
em
tutorial
收藏
0 条评论
下一页