網頁設計教學:課程學習攻略與工具大補帖

網頁設計/架設網站要學些什麼?

網頁設計通常用來描述網頁前端(用戶端)設計相關的設計過程。比較廣泛的網頁設計定義,涵蓋許多不同的Web開發技能、包含介面設計、網路工程、網路應用程式設計等,這篇講的是以網頁前端開發 Web App 網路應用程式的角度出發。從畫wireframe 開始,用 HTML/CSS 與 JavaScript 呈現網站體驗,並套用 Bootstrap 框架,做出RWD響應式網頁、DOM操作與事件,你做出一個網路應用程式要學會的前端網頁設計技能。

零基礎高效自學網頁設計,用HTML/CSS/JavaScript打造第一個網頁

Web App 網路應用程式是什麼?

能夠直接在網路上執行的軟體被稱為「網路應用程式」(Web application)。我們常聽到的前端 (front-end) 與後端 (back-end),是開發網路應用程式的分工方式。

前端開發者專注在建立一個流暢、友善的使用者介面,他們更重視視覺化。

後端開發人員負責應用程式的資料管理,以及商務邏輯,這會讓他們投資更多時間在設計與實作抽象的概念,例如演算法 (algorithm) 與資料結構 (data structure)。

不同性質的工作,可能會需要由不同的語言來完成,例如:

  • 前端的語言:HTML/CSS/JavaScript
  • 後端的語言:PHP、Python、JavaScript、Ruby、Perl

全端開發技能樹:JavaScript 全端工程師23周養成攻略

設計網路應用程式

Persona & User Story 人物誌與使用者故事:Persona 是根據使用族群的行為以及喜好所虛構出的角色。通常一個 Persona 會包含個人資訊與生物數據,像是個人與專業特徵、人口統計資料、教育、購買習慣與動機、偏好和行為。User Story「使用者故事」是根據使用者的需求,對網路應用程式功能的一個簡短描述。每個需求對應為一則故事。可以幫助你思考使用者所想要與需要的,並協助你聰明地設計出更好的產品。

工具:StoriesOnBoard

Wireframe :線匡搞會用非常簡單的灰階顏色、線條、符號或框線,來表達網頁的排版架構。目的是確認內容、排版、功能等等所有的頁面元素符合你的整體設計,根據線框稿,你可以在實際開發產品之前釐清關鍵行動並適當的配置資源。

工具:Balsamiq、JUSTINMIND

User Flow 顯示使用者在我們的網路應用程式中執行操作的路徑。通過設計使用者流程,你可以為你的網路應用程式 (或是行動應用程式),規劃更好的使用者體驗。

工具:overflowLucidchart

前端工程師要會什麼?工作上會遇到什麼挑戰

HTML

超文字標示語言(Hypertext markup language,HTML),指的是透過各種標籤,為網頁訂出整體的元件、區塊與框架。

大多的 HTML 標籤是語義元件(semantic element)。也就是說,這些標籤帶有意義,而目的是為了讓瀏覽器在讀取時,從字面上就能理解它的用途(如此一來,就可以讓搜尋引擎透過閱讀標籤,大致判定網頁內容。更多請閱讀:HTML 語法教學,快速攻略網頁HTML 標籤的基本元素

網頁設計入門,一文讀懂HTML、CSS

CSS

CSS(階層樣式表,Cascading Style Sheets)可以將網頁上各個元素定義精確的位置與樣式。而所謂的「階層式 (cascading)」,指的是我們可以在同一個元件上套用不同樣式,樣式與樣式之間則存在相對的階層關係。

Flexbox

Flexbox 是一種新的佈局系統,鑑於舊有的 float 或 positioning 等排版技術太曲折,而且常常對開發者帶來限制,flexbox 的發明極度適合用於一維排版,對單行或單列內的元件微調間距或對齊方式。

CSS 教學語法入門:認識階層樣式表與Box model 介紹

Bootstrap

Bootstrap 是一個免費且開源的CSS前端開發框架 (framework),也就是它已經預先做好一套網站的基礎建設,讓你能在框架的基礎上進行開發,不需要再去煩惱瑣碎的設定。這套框架由 HTML、CSS 和 JavaScript 寫成的,核心的設計目標是達成響應式與行動優先,也就是讓你的網站排版可以自動適應螢幕大小。

Bootstrap 最重要的貢獻是它的響應式佈局系統大幅加速了開發速度,另外,它做好了一整套可重覆使用的元件樣式,你只要套用它的 CSS 類別,就能立即使用,省去你調整校對 CSS 的時間。

延伸閱讀:Bootstrap 是什麼?給網頁設計新手的 Bootstrap 4入門教學


RWD
Responsive Web Design 簡稱 RWD,RWD 的核心是透過 CSS 的控制,讓同一份網頁能「回應不同的裝置尺寸,呈現出適當的佈局」,讓網站在不同裝置上都有流暢的排版以及良好的使用者體驗。

(程式設計入門課程,從用HTML/CSS/JavaScript 實作架設網頁開始)

JavaScript

JavaScript 是在瀏覽器中執行的程式語言,可以用它來增進網站或網路程式的互動性、及其他動態功能。

jQuery

jQuery 是 JavaScript 的函式庫,這個函式庫最大的貢獻是統合了各種校調 JavaScript 的重覆性作業,讓開發者在操作 DOM 元素減少麻煩,且較不容易發生錯誤。遭遇跨瀏覽器問題時,前端開發者會需要在程式碼裡寫入 if / else 來解決瀏覽器差異,因此前端開發者會依賴 jQuery 函式庫,jQuery 對 JavaScript 做了另一層函式封裝,除了簡化語法,更重要的封裝了處理瀏覽器相容性的枯燥工作,讓開發者可以使用一套統一的作法,專心寫功能。

延伸閱讀:什麼是 jQuery?前端框架盛行還需要JavaScript函式庫嗎?

DOM

DOM 的全名為 文件物件模型 (Document Object Model),他是一個由瀏覽器提供的 應用程式介面 (application programming interface),目的是讓 JavaScript 能存取網頁元素。

API

API 全名:Application Programming Interface,譯為「應用程式介面」,也就是「應用程式對外開放的介面」,API 的使用者是「能夠寫程式的開發者」,開發者可以透過 API 去使用其他人撰寫的應用程式。API是什麼?認識Web API、HTTP 和JSON 資料交換格式

例如:Facebook 圖形APIGoogle map APILine API

JSON

JSON是JavaScript Object Notation 的縮寫,是一種輕量級的資料交換語言,它參考了 JavaScript 中物件結構的表示方式。該語言以易於讓人閱讀的文字為基礎,用來傳輸由屬性值或者序列性的值組成的資料物件。幾乎所有網頁開發相關的語言都有解析 JSON 資料的函式庫。

AJAX

Ajax 是 Asynchronous JavaScript and XML 的縮寫,Ajax 並不是單一的技術,而是一套綜合性的瀏覽器端網頁開發技術。Ajax 技術的出現,讓瀏覽器可以向 Server 請求資料而不需費時等待。當瀏覽器接收到 response 之後,新的內容就會即時地添入原本網頁。
什麼是Ajax? 搞懂非同步請求(Asynchronous request)概念

管理程式碼版本控制

Git  是一套免費、開源、且有許多人使用的版本控制軟體,普遍適合各種開發流程;
GitHub 是一個以 Git 為基礎的服務平台,為開發者提供雲端版本控制服務(Repository Hosting)的平台

延伸閱讀:Git與GitHub介紹,軟體版本控制基本教學

框架Framework

一些大型的工具包會被稱為框架,框架會幫忙把最多人用、最常見、最穩定的套件整合在一起,涵蓋到各個可能需要解決的問題,讓開發者得到一個比較完整的解決方案。現今的「框架」其實就是一種提升開發效率、降低維護難度的開發架構。下面是一些主流的JavaScript框架,各自有自己的優缺點,而學習的路徑

自學Web學習資源

W3CSchool
MDN web docs
菜鳥教程

進一步學習用JavaScript從事網頁後端開發

Node.js

為了讓 JavaScript 除了能在瀏覽器(前端)執行,還可以在伺服器(後端) 上做不同的功能,於是出現了Node.js。Node.js 是一個 JavaScript 執行環境 (run-time environment)。有了 Node.js,JavaScript 可以直接建立、讀取、修改和刪除電腦內的檔案,並且能和資料庫連通。

Express.js

Express 是一套可以在 Node.js 上使用,讓開發者能更方便地建立網頁應用程式的網路框架(web framework)。

Node.js 的套件管理器 – Node Package Manager (npm)

NPM 上放了各式各樣用 JavaScript 撰寫的工具包,在這裡你幾乎可以找到所有你需要使用到的工具,像是 jQuery, Express, Vue 或 React

後端開發實務,學會用Node.js開發兼具前後端的Web App

網頁設計工具大補帖:

文字編輯器
Visual Studio Code
Sublime
Brackets
Atom

延伸閱讀:VSCode快速安裝教學,推薦常用外掛擴充套件


Web開發和調試工具
Chrome Developer Tools

Build Tools 構建工具與自動化系統
Gulp
Grunt

模組打包工具
Webpack

單元測試框架
Mocha

Chai

前端開發與設計工具
Zeplin
Avocode

測試沙盒
Codepen

開發文件
DevDocs

UI設計工具
Sketch

Adobe XD

色彩搭配
Coolors

分析網站
Wappalyzer
WhatFont:查詢網站字體
JSON Viewer

三分鐘小測驗,了解你該從哪開始自學網頁設計