转载: https://www.bougieblog.cn/article/Qk9VMTlHSUU.htmljavascript
String, Boolean, Number, Symbol, undefined, null
原生ajax写法
摘自youmightnotneedjqueryhtml
// post var request = new XMLHttpRequest(); request.open('POST', '/my/url', true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); request.send(data); // get var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (request.status >= 200 && request.status < 400) { // Success! var resp = request.responseText; } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send(); // 稍微封装一下 function ajax({ url, method, headers, data, success, error }) { headers = headers || 'application/x-www-form-urlencoded; charset=UTF-8' let request = new XMLHttpRequest() request.open(method, url, true) request.setRequestHeader('Content-type', headers) request.onload = function(progressEvent) { let response = progressEvent.currentTarget let {status, statusText, responseText, responseUrl} = response if(status > 199 && status < 400) { if(success) success(responseText) } else { if(error) error(statusText) } } request.onerror = function(error) { console.error(error) } request.send(data) }
严格模式-MDN前端
实现一个Event Bus
如下是简单模仿vue js
的vue
class EventBus{ constructor() { this.eventList = new Map() } $emit(evName, ...args) { let fn = this.eventList.get(evName) if(!fn) { console.error(`'${evName}' is undefined`) return } this.eventList.get(evName).apply(this, args) } $on(evName, fn) { if(this.eventList.get(evName)) { console.error(`duplicated event name : '${evName}'`) return } this.eventList.set(evName, fn) return { remove: () => { this.eventList.delete(evName) } } } }
这个所有看阮老师的就好了
ECMAScript 6 入门html5
el.getAttribute('data-custom')
取值,el.dataSet.custom
取值和赋值。双向绑定,深刻响应式原理,发布订阅模式,观察者模式
Vue.js双向绑定的实现原理
深刻响应式原理
发布-订阅者模式和事件监听器模式java
单向数据流,状态管理
单向数据流 和 Vuex 简介
Web前端的状态管理(State Management)react
路由的history和hash模式
前端路由的两种实现原理jquery
Vue和React的区别
Vue与React两个框架的区别和优点对比webpack
Vuex, Redux和Flux
Vuex,从入门到入门
React 技术栈系列教程
Flux 架构入门教程
Vue的render和React.createElement
React.createClass,React.Component和函数式申明组件的区别
React.createClass和extends Component的区别
React中函数式声明组件
Mixin
React需使用createClass建立组件
循环元素时为何要加key
React中key的必要性与使用
sass和less
多看官方文档
webpack, gulp, grunt, rollup, browersify的区别
Gulp / Grunt 是前端自动化的工具,旨在提供一个自动化的流程(省去了手动编译less,stylus,sass已经babel的转码,图片的压缩,代码的压缩复制等系列操做),传统的多页面应用很是适合用这个
browserify / webpack 提供的是一个前端模块化的方案,让咱们能够将commonJS的模块方式应用与浏览器端
webpack 是 browserify 的增强版,不但实现了browserify模块化思想,还将图片,样式等也归入了模块化中
rollup 打包代码量小,经常使用来进行类库的打包
babel和babel-polyfill的做用babel
会将ES6语法转化为ES5语法,可是不会转义Promise
和Object
、Array
等上的静态方法,这时候就须要babel-polyfill
ESLint代码风格
Airbnb JavaScript Style Guide() {
前端模块化的原理和意义
Javascript模块化编程(一):模块的写法
前端模块化开发的价值
karma, jasmine和mocha
js测试框架了解一下
开发人员看测试之TDD和BDD
rem布局
弹性滚动,惯性滚动
经常使用的库