轉載: 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佈局
彈性滾動,慣性滾動
經常使用的庫