Meteor 是一個 full-stack 的開發框架 (或者該說是平台),它可以利用一種語言 (JavaScript) 來輕鬆完成前後端的開發。是目前前景看好的選擇。
本階段的目標是:
- 了解 Meteor 是什麼樣的平台,基本架構,可以做到什麼樣的事情 (2.5 hr)
- 能夠自己獨立完成一個 Meteor 的 ToDo App (不斷的練習一樣的 App,直到完全熟悉,+10 hr)
這階段大約花 10-20 hr,可以利用一個週末的兩天時間,或是一個禮拜的晚上來完成。
在開始之前,你應該要有 JS/HTML/CSS 的基本知識;最好也懂 React。你可以在 "A Study Plan To Cure JavaScript Fatigue" 找到學習路徑 (或是看中文翻譯)。
先看以下影片,吸收一下 Meteor 的知識以及如何開發
- Complete Meteor.js Tutorial: 片長約 1:15,很好的初學者影片,介紹 Meteor/Blaze 的架構、功能、專案管理、到開發。
- Meteor + ReactJS - Project Set up and Register User - Build a Web App from Scratch [Part 1]: 共有 4 個部分,總片長約 1:15,不錯的 Meteor + React 教學。搭配上面的的教學,幾乎可以掌握如何開發 Meteor。
以上看完就可以開始以下的學習 (學完之後記得再回來看一次這兩個影片,可以注意到一些細節)。
我們利用官方提供的 tutorial 來學習。初學者第一個學習教材,就是官方 Tutorial 中的 ToDo App。在本教學的最終目標,是要能夠完全不用看文件,靠自己寫出一個跟官方一樣的 ToDo App。這個過程必須靠不斷的練習,直到將短期記憶變成長期記憶,並且熟悉整個開發流程。
官方 ToDo App 根據不同的前端技術,分成三種教學:Blaze、Angular、React。如果你沒有特定的偏好,建議選擇 React,畢竟是目前的主流,而且 Meteor 官方也有打算將 React 變成開發的主要框架。
-
先按照官方教學,把 ToDo App 做一次,了解每一步驟,並試著記住。
-
立刻閱讀下面整理的「開發提示」,並立刻按第三步開始練習自己實作,幫助記憶開發方式和架構。
-
練習自己開發 ToDo app (每次都重頭開始)
- 先靠自己的學到的,試著自己動手寫出一樣的 App。
- 忘記要做什麼,可以看本篇提供的「開發提示」(只有任務提示,但沒有關鍵代碼)。
- 不清楚 API 的話,試著查找官方 API (而不是查找官方的 ToDo 的 sample code 喔)。
- 遇到錯誤,先試著自己找原因、除錯。
- 真的不知道要如何進行的話,或是找不到問題,才看官方文件的代碼 (盡可能不要先看)。
- 做完後,核對一次代碼跟官方的有哪些不同,記錄下來,然後立刻複習、記憶。
// 每次的練習模式 靠自己思考怎麼做 -> 忘記則看本篇開發提示 -> 試著查官方 API、自己除錯 -> 真的不行再看官方 ToDo 教學的代碼
-
迭代練習:可以參考下一節的「學習日程表」,重簡單的章節重複練習,再慢慢增加
- 前幾次練習時如果忘記,可以先不查官方 API,直接看官方教學代碼
- 增加實作章節時,前面章節不可省略,都是重頭開始練習。
- 除非你對該章節已經可以完全不看文件即可完成 3 次,才可以跳過該章節不練習。
// 迭代程度 依靠本篇的開發提示,儘量自己寫,忘記時參考官方教學 -> 依靠本篇的開發提示,重頭開發,忘記時查官方 API、google,儘量不靠官方教學 -> 重頭開發,但儘量不靠本篇的開發提示, -> 可以不用看任何文件和提示就能寫出一個 ToDo App (合格標準)
-
一直練習直到「不用看任何文件和提示就能寫出一個 ToDo App」。可以分天練習,但是應該要每天練習。中間一旦空了幾天,很快就會忘記。通常轉換成長期記憶需要 7 天以上的持續練習。
從簡單到全部的練習,共分七個階段。每個階段練習 1-3 次,直到有把握進入下一個階段。你可以分七天完成。你會越做越快、越做越熟悉,直到完全記住、了解。
| 練習章節 | 開發提示 | 查API | 官方教學 | 方針
------|---------|-------------|---------|------|----- level 1 | Ch 1-5 | Ch 1-5 | 不用查 | Ch 1-5 | 快速模仿、加深印象 level 2 | Ch 1-5 | Ch 1-5 | Ch 1-5 | 不可看 | 不靠官方教學,實作出 1-5 的功能 level 3 | Ch 1-8 | Ch 1-8 | Ch 1-5 | Ch 7-8 | 加入 Ch 7-8 level 4 | Ch 1-8 | Ch 7-8 | Ch 7-8 | 不可看 | 不靠官方教學,實作出 1-7 的功能 level 5 | Ch 1-10 | Ch 7-10 | Ch 7-8 | Ch 9-10 | 加入 Ch 9-10 level 6 | Ch 1-10 | Ch 9-10 | Ch 7-10 | 不可看 | 不靠官方教學,實作出 1-10 的功能 level 7 | 全部 | 不可看 | 不可看 | 不可看 | 不看任何文件就可以寫出 ToDo App
"Practice, practice and practice."
"Practice makes perfect."
在這個練習中,你會發現寫 Meteor ToDo App 就像是在寫 Whatsapp 這樣的聊天軟體。如果你有試著用兩個不同的瀏覽器登入不同的帳號,分別新增不同的 task,那畫面看起來就像是在聊天一樣。而且你還能更新、刪除一個聊天內容 (並且在有權限底下)。開發一個聊天室的原型就是這麼容易 (只需要 1-2 小時)!但你還需要更了解 Meteor 的項目組成和管理,才能開發更大、更複雜的應用。
在練習的一開始,你會理解如何組成一個的頁面。Meteor 會在後端把你的代碼組成一個 App 後,再傳給客戶端。了解 Meteor 如何打包你的 Single Page Application 是下一階段的課題。
另外就是 Meteor 一開始就加入了 insecure
/autopublish
的功能,方便開發客戶端;但是當要上線的時候,要記得拿掉這些功能,改用 Meteor 的 methods
/call
/publish
/subscribe
來存取資料庫。理解 Meteor DDP 的資料同步機制,是學習 Meteor 重要的課題。
Meteor 提供了良好的帳戶管理,並提供套件,可以幫助你快速打造產品原型。你需要了解更多的 API 和支援套件,來幫助你快速完成各種任務。
在整個練習中,你了解知道如何拆分 front-end/back-end 的代碼。整個練習當中你可能會產生一些疑惑:「我沒有傳 userId 給後台,那後端怎麼知道 currentUser 是誰?」、「有 DDP 同步資料庫,那我是否還需要 RESTful API?」、「如何 Routing?如何呈現其他 URL link 的頁面?」。這些都是接下來的學習議題。
然後,你可以加入以下變化再次練習:
- 改用 TypeScript 開發一次
- 進行 test-driven development (TDD)
- 試著使用自己的 CSS 開發
- 加入一些有趣的功能
最後,進入下一個學習階段 (第二階段,待續)