摘要:是文檔的一種表示結構。這些任務大部分都是基于它。這個實踐的重點是把你在前端練級攻略第部分中學到的一些東西和結合起來。一旦你進入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進行操作。它是在前端系統像今天這樣復雜之前編寫的。
本文是 前端練級攻略 第二部分,第一部分請看下面:
前端練級攻略(第一部分)
在第二部分,我們將重點學習 JavaScript 作為一種獨立的語言,如何向界面添加交互性,JavaScript 設計和架構模式,以及如何構建網絡應用程序。
想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你!
就像 HTML 和 CSS一樣,有大量的 JavaScript教程。然而,特別是對于一個新手來說,很難弄清楚使用什么樣的教程以及以什么樣的順序來學習它們。本系列的主要目標是為你提供一個路線圖,幫助你導航學習成為前端開發者。
JavaScript基礎知識JavaScript 是一種跨平臺的編程語言,現在幾乎可以用于任何事情。
語言在學習如何將JavaScript應用到web之前,首先要了解該語言本身。首先,閱讀 Mozilla Developer Network的語言基礎速成課程。本教程將教你基本的語言結構,如變量、條件和函數。
然后,閱讀 MDN 的 JavaScript 指南中的以下部分:
Grammar and types (語法和類型)
Control flow and error handling (控制流程和錯誤處理)
Loops and iterations (循環和迭代)
Functions(函數)
不要太擔心記住特定的語法,你可以隨時查一下文檔。相反,應該專注于理解重要的概念,比如變量實例化、循環和函數。如果知識密度難度太大,也沒關,先過一篇,你把這些概念付諸實踐,當你回過頭在來看,可能會理解起來會更加清晰。
基于文檔的學習可能會過于單調,可以看看 Codecademy 的 JavaScript課程,這課程是理論與實踐相結合的,相對會有樂趣一。 此外,如果你有時間,請參閱上面列出的每個概念,閱讀 Eloquent JavaScript中的相應章節以加強你的學習。 Eloquent JavaScript 是一本很棒的免費在線書籍,每個有抱負的前端開發人員都應該閱讀。
交互性現在你已經基本了解了 JavaScript 的語法,下一步就是將它應用到 Web上。 要了解 JavaScript如 何與網站交互,首先你必須了解 文檔對象模型(DOM)。
DOM 是 HTML 文檔的一種表示結構。它是一個樹形結構,由對應于 HTML 節點的 JavaScript 對象組成。要進一步了解DOM,請閱讀 CSSTricks 的 《什么是DOM》。它提供了對 DOM 的簡單而直接的解釋。
JavaScript 與 DOM 交互以更改和更新它。下面是一個例子,我們選擇一個 HTML 元素并更改它的內容
var container = document.getElementById(“container”); container.innerHTML = "New Content!";
別擔心,那只是一個簡單的例子。使用 JavaScript DOM 操作,你可以做更多的事情。要了解有關如何使用 JavaScript 與 DO M交互的更多信息,請閱讀 MDN 的“文檔對象模型”一節中的以下指南。
事件及DOM
Examples of web and XML development using the DOM
如何建立 DOM 樹
DOM概述
使用選擇器定位DOM元素
再次強調一下,重點是要先理解概念而不是語法,希望能夠回答以下問題:
DOM 是什么?
如何查詢元素
如何添加事件監聽?
如何更改 DOM 節點屬性?
有關常見的 JavaScript DOM 交互的列表,請查看 PlainJS 的 JavaScript 函數和助手。該網站提供了一些例子,說明如何在 HTML 元素上設置樣式和附加鍵盤事件監聽器。如果你想深入挖掘,你可以隨時閱讀 Eloquent 講的 JavaScript 中關于DOM的部分。
檢查要調試瀏覽器中的JavaScript,我們使用瀏覽器內置的開發人員工具。 大多數瀏覽器都提供了 inspector 面板,可以讓你查看網頁的來源。 你可以在執行時跟蹤 JavaScript,將調試語句打印到控制臺,以及查看網絡請求和資源等內容。
里有一個關于使用 Chrome 開發工具的教程。如果你使用的 Firefox,可以查看本教程。
實踐基礎在這一點上,關于JavaScript還有很多東西需要學習。然而,最后一節包含了許多新信息。我想我們該休息一下,做幾個實踐了。它們有助于鞏固你剛剛學到的一些概念。
實踐 1對于實踐1,轉到 AirBnB,打開瀏覽器的頁面檢查器,然后單擊控制臺選項卡。在這里,你可以在頁面上執行JavaScript。我們要做的是通過操縱頁面上的一些元素來獲得一些樂趣。看看你是否可以完成以下所有的 DOM 操作。
選擇具有唯一類名的標題標簽并更改文本
選擇頁面上的任何元素并將其刪除
選擇任意元素并更改其CSS屬性之一
* 選擇一個特定的區域標簽,并向下移動250像素
* 選擇任何組件,如面板,并調整其透明度
定義一個名為 doS??omething 的函數,該函數j里定義一下alert (“Hello world”) 然后執行它
選擇一個特定的段落標記,向其中注冊一個 click 事件,并在每次事件被觸發時運行 doSomething
如果您遇到困難,請參考 JavaScript 函數和幫助程序指南。這些任務大部分都是基于它。以下是如何完成第一個要點的示例:
var header = document.querySelector(‘.text-branding’) header.innerText = ‘Boop"
這個實踐的主要目的是學習一些關于 JavaScript 和 DOM 操作的知識,并看到它們的實際應用。
實踐 2使用 CodePen,編寫一個使用DOM操作并需要一些編程邏輯來運行的基礎JavaScript 實踐。這個實踐的重點是把你在《前端練級攻略》第 1 部分中學到的一些東西和 JavaScript結合起來。這里有幾個可以作為啟發的參考例子。
Mood Color Generator
計算器
JavaScript 測試
Playable Canvas Asteroids
更多的 JavaScript現在你已經了解了一些 JavaScript并進行了一些實踐,我們將繼續學習一些更高級的概念。下面的概念并不直接相關。我將它們分組在本節中,因為它們對于理解如何構建更復雜的前端系統是必要的。一旦你進入框架部分,你將更好地理解并使用它們。
語言當你使用JavaScript進行更多工作時,你將遇到一些更高級別的概念。 以下其中一些概念的列表。 如果有時間,仔細閱讀每一個要點 此外,如果你想補充學習其它內容,Eloquent JavaScript 涵蓋了大部分內容。
繼承與原型鏈
作用域
事件輪詢
事件冒泡
Apply, call, 和 bind
回調函數和 promise
變量和函數的提升
柯里化
命令式和聲明JavaScript如何與DOM交互有兩種方法:命令式和聲明式。一方面,聲明式編程關注所發生的事情。另一方面,命令式編程關注的是什么以及如何實現。
var hero = document.querySelector(".hero") hero.addEventListener(‘click’, function() { var newChild = document.createElement(‘p’) newChild.appendChild(document.createTextNode(‘Hello world!’)) newChild.setAttribute(‘class’, ‘text’) newChild.setAttribute(‘data-info’, ‘header’) hero.appendChild(newChild) }) }
這是命令式編程的一個例子,我們手動查詢一個元素并將 UI 狀態存儲在 DOM 中。換句話說,專注于如何實現某件事。這段代碼最大的問題是它很脆弱。如果處理代碼的人將 HTML中 的類名從 hero 更改為villain,事件偵聽器將不再觸發,因為 DOM 中沒有 hero 類。
聲明式編程解決了這個問題。你不必選擇元素,而是將其留給您正在使用的框架或庫。這讓你專注于做什么而不是如何做。要了解更多信息,請查看 JavaScript的狀態——從命令式轉換到聲明式,以及 Web開發:聲明式vs.命令式。
Ajax在這些文章和教程中,你可能已經多次看到 Ajax 這個術語。Ajax 是一種允許 web 頁面使用 JavaScript 與服務器交互的技術
例如,當你在網站上提交表單時,它收集你的輸入并發出 HTTP 請求,將數據發送到服務器。當你在Twitter 上發布一條 tweet 時,你的 witter 客戶機向 Twitter 的服務器 API 發出 HTTP 請求,并使用服務器響應更新頁面。
有關 Ajax 的閱讀,請查看什么是Ajax。如果你仍然沒有完全理解 AJAX 的概念,請看看 Explain it like i’m 5, what is Ajax。如果這些還不夠,你還可以閱讀關于 HTTP 的JavaScript 章節。
今天,HTTP 請求的瀏覽器標準是 Fetch。 你可以在 Dan Walsh 的這篇文章中閱讀有關 Fetch 的更多信息。 它介紹了Fetch 的工作原理以及如何使用它。 你還可以在此處找到帶文檔的 Fetch polyfill。
jQuery到目前為止,你一直在使用 JavaScript 進行 DOM 操作。事實上,有很多 DOM 操作庫提供api 來簡化你編寫的代碼。
最流行的 DOM 操作庫之一是 jQuery。請記住,jQuery 是一個命令式庫。它是在前端系統像今天這樣復雜之前編寫的。如今,管理復雜 UI 是聲明性框架和庫,如 Vue、Angular 和 React。但是,我仍然建議你學習jQuery,因為在你的前端職業生涯中很可能會遇到它。
要學習j Query 的基礎知識,請查看 jQuery學習中心。它一步一步地通過一些重要的概念,比如動畫和事件處理。如果你想要更多的動手教程,可以看看 Codecademy 的 jQuery課程。
ES5 vs. ES6理解 JavaScript 的另一個重要概念是 ECMAScrip t以及它與 JavaScript 的關系。今天,你平常看到是兩種主要的 JavaScript 風格:ES5 和 ES6。ES5 和 ES6 是 JavaScript 使用的 ECMAScript 標準。你可以將它們看作JavaScript的版本。ES5 的最終草案是在2009年完成的,到目前為止你一直在使用它。
ES6,也稱為 ES2015,是一個新標準,它為JavaScript帶來了新的語言結構,比如常量、類和模板字符串。值得注意的是,ES6 帶來了新的語言特性,但仍然使用 ES5 從語義上定義它們。例如,ES6 中的類只是JavaScript原型繼承的語法糖。
了解 ES5和 ES6 是非常重要的,因為今天你會看到使用這兩種方法的應用程序。 ES5, ES6, ES2016, ES.Next:下一步:JavaScript版本控制是怎么回事 這是一篇很好介紹了 ES6 相關的知識,
Dan Wahlin的 ES6入門-下一版本的JavaScript正在發生什么。之后,你可以在 ES6 特性中看到從ES5 到 ES6 的完整變化列表。如果你想要更多,請查看這個包含 ES6 特性的Github存儲庫。
如果你已經到了這一步,恭喜你自己。你已經了解了很多JavaScript。讓我們把你學到的一些東西付諸實踐。
練習 3練習3 將你所學的 HTML 和 CSS 知識與 JavaScript 入門課程結合起來。在這個實驗中,你將創建自己設計的時鐘,并使其與 JavaScript 交互。在開始之前,我建議閱讀 解耦HTML、CSS和JavaScript的教程,以了解在混合使用 JavaScript 時的基本 CSS 類命名約定。我還在 CodePen上準備了一份筆的清單,你可以作為這次練習的參考。有關更多示例,請在 CodePen 上搜索clock。
Flat Clock
jQuery Wall Clock
Fancy Clock
Retro Clock
Simple JavaScript Clock
你可以用兩種方法做這個實驗。你可以先用 HTML 和 CSS 設計和創建布局,然后用 JavaScript 增加交互性。或者你可以先編寫J avaScript 邏輯,然后再進入布局。此外,你可以使用jQuery,但也可以隨意使用純 JavaScript。
JavaScript框架掌握了JavaScript的基礎知識之后,是時候學習 JavaScript 框架了。框架是 JavaScript 庫,可以幫助你構造和組織代碼。JavaScript 框架為開發人員提供了復雜前端問題的可重復解決方案,比如狀態管理、路由和性能優化。它們通常用于構建web應用程序。
我不會講解每個JavaScript框架,這里有幾個框架的快速預覽:Angular、React + Flux、Ember、Aurelia、Vue和Meteor。你不必學習每個框架。挑一個,好好學習。不要追逐框架,相反,要理解框架所基于的底層編程哲學和原則。
架構模式在查看框架之前,理解框架傾向于使用的一些架構模式是很重要的:MVC(Model–view–controller)、MVVM(Model–view–viewmodel)v和vMVP(Model–view–presenter)。這些模式被設計成在應用層之間創建清晰的關注點分離。
關注點分離是一種設計原則,主要思想是將應用程序拆分為不同的域特定層。 例如,你可以使用JavaScript 對象(通常稱為模型)來存儲狀態,而不是讓 HTML 保持應用程序狀態。
要了解更多關于這些模式的信息,請先閱讀 Chrome Developers 的 MVC。之后,閱讀理解 MVC 和MVP(面向JavaScript和主干開發人員)。在那篇文章中,不要擔心學不會,看不懂,只需理解 MVC和 MVP 的部分概念即可。
Addy Osman 還寫了關于 MVVM 的 理解 MVVM 的JavaScript開發人員指南。要了解 MVC 的起源及其產生的原因,請閱讀 Martin Fowler 關于GUI體系結構的文章。最后,閱讀 JavaScript MV* Patterns一節,學習 JavaScript 設計模式。學習JavaScript設計模式是一本很棒的免費在線書籍。
設計模式JavaScript 框架不會重新發明輪子。它們中的大多數依賴于設計模式。你可以將設計模式視為解決軟件開發中常見問題的通用模板。
雖然理解 JavaScript 設計模式并不是學習框架的先決條件,但我建議在有時間的時候可以看看以下幾種設計模式。
裝飾器模式
工廠模式
單例模式
揭示模式
觀察者模式
理解并能夠實現其中的一些設計模式不僅會使你成為更好的工程師,而且還會幫助你理解一些框架的底層功能。
AngularJSAngularJS 是一個JavaScript MVC 框架,有時也是 MVVM 框架。它由谷歌維護,并在2010年首次發布時席卷了 JavaScript 社區。
Angular 是一個聲明性框架。幫助我理解如何從命令式編程過渡到聲明式JavaScript編程的最有幫助的文章之一是在StackOverflow上的 AngularJS 與 jQuery有何不同。
如果你想了解更多關于 Angular 的知識,請查看 Angular文檔。他們還提供了一個名為 Angular Cat 的教程,可以讓你馬上投入到編程中去。Tim Jacobi 在 Github知識庫中提供了一個更完整的 Angular 學習指南。此外,看看約翰·帕帕寫的這本權威的最佳實踐風格指南。
React + FluxAngular 解決了開發人員在構建復雜的前端系統時所面臨的許多問題。另一個流行的工具是 React,它是一個用于構建用戶界面的庫。你可以把它想象成 MVC 中的 V。因為 React 只是一個庫,所以它通常使用一個稱為 Flux 的架構。
Facebook設計React和Flux是為了解決MVC的一些缺點及其在規模上的問題。看看他們著名的演示 黑客方式:重新思考Facebook的Web應用程序開發。它超過了Flux,它起源于此。
要開始學習 React 和 Flux,首先要學習 React。一個好的入門讀物是 React文檔。在那之后,看看 React.js Introduction For People Who Know Just Enough jQuery To Get By ,幫助你 從jQuery 的思維模式過渡過來。
一旦你對 React 有了基本的了解,開始學習 Flux。一個好的起點是官方的Flux文檔。在那之后,看看 Awesome React,這是一個精選的鏈接列表,可以幫助你在學習上更進一步。
練習與框架現在你已經掌握了 JavaScript 框架和架構模式的一些基本知識,現在是時候將它付諸實踐了。 在這兩個練習中,重點是應用你學到的架構概念。 特別是,保持您的代碼 DRY,明確分離關注點,并遵守單一責任原則。
練習 4練習 5 是使用不依賴框架的 JavaScript 分解和重構 Todo MVC 應用程序。這個練習的目的是向你展示 MVC 如何在不混合框架特定語法的情況下工作。
首先,在TodoMVC上查看最終結果。第一步是在本地創建一個新項目,并首先建立 MVC 的三個組件。由于這是一個復雜的實驗,請參考 Github 存儲庫中的完整源代碼。如果你不能完全復制這個項目或者沒有時間,也沒關系。下載 repo 代碼并嘗試使用不同的 MVC 組件,直到你理解它們之間的關系。
練習 5練習 5 是應用 MVC 的一個很好的練習,理解 MVC 是學習 JavaScript 框架的重要一步。 練習 5 是按照 Scotch.io的教程來構建一個帶有 Angular 的 Etsy 克隆。
使用Angular構建一個Etsy克隆,Stamplay 將教你如何使用 Angular 構建一個 web 應用程序,如何使用 api 構建接口,以及如何構造大型項目。完成本教程后,能夠回答以下問題。
什么是 web 應用程序?
MVC/MVVM 如何應用于 Angular?
什么是API,它做什么
如何組織和構造大型代碼庫
將 UI 分解為指令組件有什么好處?
如果你想嘗試構建更多 Angular web 應用程序,可以嘗試使用 AngularJS & Firebase構建一個實時狀態更新應用程序。
持續關注時事就像前端的其他部分一樣,JavaScript的發展很快,保持持續關注是很重要的。
下面是一個網站、博客和論壇的列表,這些網站、博客和論壇閱讀起來既有趣又信息豐富。
Smashing Magazine
JavaScript Weekly
Reddit JavaScript
JavaScript Jabber
通過例子學習一如既往,最好的學習方法是以身作則。
樣式指南JavaScript樣式指南是一組編碼規范,旨在幫助保持代碼的可讀性和可維護性。
AirBnB JavaScript Styleguide
Principles of Writing Consistent, Idiomatic JavaScript
Node Styleguide
MDN Coding Style
代碼庫我無法強調閱讀好的代碼是多么有幫助,了解如何在獲取新內容時搜索Github的相關存儲庫。
Lodash
Underscore
Babel
Ghost
NodeBB
KeystoneJS
總結在本指南結束時,您應該已經牢牢掌握了 JavaScript 的基本原理以及如何將它們應用到網絡上。請記住,本指南為你提供了一個總體路線圖。如果你精通前端,花時間在項目上應用這些概念是很重要的。你做的項目越多,對它們越有熱情,你會學到更多。
原文:https://medium.freecodecamp.o...
你的點贊是我持續分享好東西的動力,歡迎點贊!
交流干貨系列文章匯總如下,覺得不錯點個Star,歡迎 加群 互相學習。
https://github.com/qq44924588...
我是小智,公眾號「大遷世界」作者,對前端技術保持學習愛好者。我會經常分享自己所學所看的干貨,在進階的路上,共勉!
關注公眾號,后臺回復福利,即可看到福利,你懂的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103334.html
摘要:下面我們從前端基礎和底層原理開始講起。對于和這三個對應于矢量圖位圖和圖的渲染來說,給前端開發帶來了重武器,很多小游戲也因此蓬勃發展。這篇文章受眾之大,后來被人重新整理并發布為,其中還包括中文版。 showImg(https://segmentfault.com/img/bVbjM5r?w=1142&h=640); 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 這...
摘要:第一部分介紹了如何使用和開發接口。由于系統變得越來越復雜,人們提出了稱為預處理器和后處理器的工具來管理復雜性。當您第一次得知有預處理器和后處理器時,你很有可能在任何地方已經使用它們。我之前建議的文章,,也涵蓋了預處理器相關的知識。 我記得我剛開始學習前端開發的時候。我看到了很多文章及資料,被學習的資料壓得喘不過氣來,甚至不知道從哪里開始。 本指南列出前端學習路線,并提供了平時收藏的一些...
摘要:感謝內容提供者金牛區吳迪軟件開發工作室文章目錄一高效學習端正學習態度面對枯燥和量大的知識深度,歸納和堅持實踐學習和閱讀源碼源頭原理和知識地圖二程序員練級攻略入門開篇詞零基礎啟蒙正式入門三程序員練級攻略進階程序員素養理論學科 ...
摘要:前端還有一個很重要的事就是設計。,中文版譯名為認知與設計理解設計準則。實驗室是布拉德弗羅斯特依照這個設計系統所建立的一套工具,可以前往的來試試。中文翻譯為流暢設計體系,是微軟于年開發的設計語言。微軟于年月日的開發者大會上公開了該設計體系。 showImg(https://segmentfault.com/img/bVbkgFI?w=1142&h=640); 想閱讀更多優質文章請猛戳Gi...
閱讀 2292·2021-11-25 09:43
閱讀 3445·2021-10-25 09:48
閱讀 1321·2021-09-13 10:24
閱讀 2734·2019-08-29 15:07
閱讀 1257·2019-08-29 13:14
閱讀 3265·2019-08-29 12:22
閱讀 1354·2019-08-29 11:32
閱讀 3229·2019-08-29 11:23