---
title: 簡介
slug: introduction
date: 0001/01/01
number: 1
points: 1
contents: Meteor 的特別之處|本書簡介|本書的內容結構
paragraphs: 35
---
先來活動一下大腦。假設你坐在電腦面前,在兩個窗口中打開同一個文件夾。
在其中一個窗口中刪除一個文件,另一個窗口中的這個文件會消失嗎?
不用實際操作你也知道肯定會消失的。在本地文件系統中的操作,不用刷新或者回調,變動就能應用到所有地方。
我們再來看一下相同的事情在網頁中會有什么結果。例如,你在兩個瀏覽器窗口中打開同一個 WordPress 后臺頁面,在其中一個窗口中新建了一篇文章。和桌面系統不同的是,不管等待多長時間,另一個窗口都不會發生變化,除非你手動刷新網頁。
過去這些年,我們已經習慣了,人和網站之間的通信是離散的。
但是,作為新一代框架和技術之一的 Meteor,嘗試挑戰這一現狀,讓網頁能夠實時和響應。
### Meteor 是什么?
Meteor 是一個構建在 Node.js 之上的平臺,用來開發實時網頁程序。Meteor 位于程序數據庫和用戶界面之間,保持二者之間的數據同步更新。
因為 Meteor 是基于 Node.js 開發的,所以在客戶端和服務器端都使用 JavaScript 作為開發語言。而且,Meteor 程序的代碼還能在前后兩端共用。
Meteor 這個平臺很強大,網頁程序開發過程中的很多復雜、容易出錯的功能都能抽象出來,實現起來很簡單。
### 為什么使用 Meteor?
那么,你為什么要花時間學習 Meteor,而不去學其他框架呢?撥開 Meteor 的各種功能,我們認為原因只有一個:因為 Meteor 易于學習。
而且,和其他框架不同,使用 Meteor,幾小時之內就能開發出一個正常運行的實時網頁程序。如果之前做過前端開發,對 JavaScript 已經有所了解,甚至都不用再學習一門新的編程語言。
Meteor 可能就是你要找的理想框架,當然,也可能不是。既然只要幾晚或一個周末就能上手,為什么不試試呢?
### 為什么選擇這本書?
在過去的幾年中,我們一直在開發很多個 Meteor 項目,范圍從網站到移動應用,從商業項目到開源項目。
我們學到了很多,但總是不那么容易找到問題的答案。我們不得不從不同來源講東西拼湊在一起,并且在許多情況下,我們甚至創造了我們自己的解決方案。所以通過這本書,我們想分享所有這些經驗教訓,并創建了一個簡單的一步一步的指導,來引導你從零開始構建一個完整的 Meteor 應用。
我們即將構建的應用是一個簡化版的社交新聞網站,類似 [Hacker News](http://news.ycombinator.com) 或 [Reddit](http://reddit.com),我們稱之為 Microscope(借鑒 Meteor 開源應用 [Telescope](http://telesc.pe)),在開發的過程中,我們會解決 構建 Meteor 應用所會遇到的各種要素,例如用戶賬戶、Meteor Collection、路由等等。
### 這本書為誰編寫?
我們在寫這本書時,目標之一就是要讓內容通俗易懂。所以,即使你沒有任何 Meteor、Node.js、MVC 框架或服務器端編程經驗,都能夠讀完這本書。
但另一方面,我們也假設你熟悉基本的 JavaScript 語法和概念。但是如果你曾經玩過一些 jQuery 代碼或接觸過瀏覽器開發者控制臺,你應該是沒有問題的。
如果你還不太熟悉 JavaScript,我們建議你在開始閱讀本書之前,先閱讀一下我們的 [JavaScript primer for Meteor](https://www.discovermeteor.com/blog/javascript-for-meteor/)(英文)。
### 關于作者
如果你想知道我們是誰,為什么要相信我們,這里是兩位作者的一些背景介紹。
<%= image "tom-photo.jpg", "portrait" %>
**Tom Coleman** 是 [Percolate 工作室](http://percolatestudio.com/)的一員。Percolate 工作室是一個程序開發商,致力于高品質的產品和用戶體驗。他也是 [Atmosphere](http://atmosphere.meteor.com/) 包倉庫的維護人之一,同時也參與開發了多個 Meteor 開源項目(例如 [Iron Router](https://github.com/EventedMind/iron-router))。
<%= image "sacha-photo.jpg", "portrait" %>
**Sacha Greif** 是一名產品設計師和網頁設計師,為創業項目工作,例如 [Hipmunk](http://www.hipmunk.com/) 和 [RubyMotion](http://rubymotion.com/)。他開發了 [Telescope](http://telesc.pe/) 和 [Sidebar](http://sidebar.io/),還是 [Folyo](http://folyo.me/) 的創始人。
### 章節和附錄
我們希望這本書對 Meteor 初學者和有經驗的程序員都有所幫助,因此把內容分成了兩類:常規的章節(1-14 章)和附錄(帶 .5 的序號)。
常規的章節會講解如何開發程序,盡量保證你能跟著我們的步伐實際操作,只關注開發過程中最重要的步驟,不會太深入細節。
而附錄則會深入 Meteor 錯綜復雜的細節,幫助你更好的理解背后到底發生了什么。
如果你是初學者,第一次閱讀完全可以跳過附錄,熟悉 Meteor 之后再回過頭來閱讀。
### 代碼提交和線上演示
閱讀編程相關的書籍時最怕遇到這種事情,雖然一直跟著書中的步驟,但突然發現代碼和示例不一樣了,而且程序也不能正常運行。
為了避免這種情況發生,我們特意[在 GitHub 上為 Microscope 建了倉庫](https://github.com/DiscoverMeteor/Microscope)。改動一些代碼后,會給出指向 git 提交的鏈接,而且還會鏈接到該提交對應的線上演示,方便和你自己本地的版本對比。下面一個示例:
<%= commit "11-2", "在頭部顯示提醒" %>
我們提供的代碼提交鏈接,并不是為了讓你使用 `git checkout` 從一個提交跳到另一個提交。自己動手輸入程序的代碼,學習效果才能更好。
### 一些其他資源
如果想更深入地學習 Meteor 的各項功能,最好的資料就是[官方文檔](http://docs.meteor.com/)。
遇到問題我們建議到 [Stack Overflow](http://stackoverflow.com/questions/tagged/meteor) 網站上尋找幫助。如果想獲得實時幫助,可以加入 [IRC](https://webchat.freenode.net/) 的 #meteor 頻道。
<% note do %>
### 需要了解 Git 嗎?
閱讀本書雖然不完全要求你熟悉 Git 版本控制,但我們強烈推薦你去學。
如果想快速上手,我們推薦閱讀 Nick Farina 撰寫的文章《[Git Is Simpler Than You Think](http://nfarina.com/post/9868516270/git-is-simpler)》。
對 Git 初學者,我們推薦使用 [GitHub](http://mac.github.com/) (Mac OS),或 [SourceTree](http://www.sourcetreeapp.com/) (Mac OS & Windows),這兩個軟件都是免費的。
<% end %>
### 聯系方式
- 如果想和我們聯系,可以發送郵件到 [hello@discovermeteor.com](mailto:hello@discovermeteor.com)。
- 如果發現本書中有錯別字或不當之處,請到 [GitHub 上的倉庫](https://github.com/DiscoverMeteor/book/issues)中提交。
- 如果發現 Microscope 的代碼有問題,請到 [Microscope 的倉庫](https://github.com/DiscoverMeteor/Microscope/issues)中提交。
- 如果還有其他問題,可以直接在網頁的側欄中留言。