> 原文出處:https://i5ting.github.io/wechat-dev-with-nodejs/index.html
## 課程概覽
我們這次講的課是《Node.js微信開發》,是StuQ推出的第一門課,期望做成一門可以打樣的課。
## Why
隨著移動互聯網的發展,app開發技術也逐漸從native到hybrid,當微信橫空出世之后,擁有大量用戶,很多公司為了能夠借力,集成微信作登錄為用戶授權管理,當微信推出公眾號后,h5技術就得到了大量應用,h5和web開發都是要使用js作為主要語言,無論是dom操作,動畫,還是ajax異步網絡請求等,故而js是必須會的。
如果能夠用js可以搞定h5端,還能搞定服務器端的微信開發,是不是更好呢?基于這個初衷,我們特地準備《Node.js微信開發》一課,Node.js是目前最火的技術,微信開發也是,而微信開發主要是以h5和js為主,以js為紐帶,鏈接Node和h5端開發,既能完成應用開發,又能讓大家在技術上有一定指導意義,為日后的全棧選擇提供了可能。
## 作者簡介
桑世龍(網名i5ting),空弦科技 CTO,StuQ 明星講師,開源項目 Moajs 作者,Node.js 技術布道者
曾就職在新浪、網秦,曾做過前端、后端、數據分析、移動端負責人、做過首席架構師、技術總監,全棧技術實踐者,目前主要關注技術架構和團隊梯隊建設方向。
[github](https://github.com/i5ting)和[cnodejs](https://cnodejs.org/user/i5ting)上的i5ting,目前在天津創業,空弦科技cto,公司目前使用技術主要是Node.js,Moajs作者, 技術棧算所謂的MEAN(mongodb + express + angular + node),所有代碼都部署在阿里云上
曾在新浪,網秦等工作過
算全棧程序員吧,java、php、perl、ruby,bi、云計算、ios、android、h5都做過,帶過前端、后端、數據分析、移動端負責人、做過首席架構師、技術總監、CTO
哈哈
我的名字i5ting,原因是我媳婦叫張婷,哈哈
閑言少敘,下面開始正題
## Node.js靠譜么?
我可以很負責的講,Node.js可以完成任何java、php等后端語言可以做的事兒,唯一的差別的是它們發展的時間比較長,在很多模塊、開源項目或庫等方面有先手優勢。
但單就web開發后端來說,Node.js是沒有任何問題的,
1. 穩定,支持cluster集群
2. 開發速度非常快,代碼復雜度較低
3. 支持mysql、postgre等主流關系型數據庫,支持mongodb、redis等NoSQL數據庫。無論是嚴格事務性,還是非嚴格事務性,都可以輕松應對。
4. 一切皆模塊,對抽象,復用等都非常簡單
5. 對微服務、SOA等架構支持非常好,有足夠的擴展性,可以放心與其他服務集成
## 課程目錄
本課程共6節,核心內容如下
1. 第0節:Nodejs入門 (14/14)
2. 第1節:Express和微信開發入門 (6/6)
3. 第2節:微信實例和h5實踐 (4/4)
4. 第3節:WeUI實戰 (7/7)
5. 第4節:微信支付
6. 第5節:實戰付費課程系統
為了能夠讓大家有更好的理解,贈送了基礎技能:Linux、Git、終端、編輯器。
## 主要內容
1. Node.js基礎和Express框架使用
2. 微信開發入門與實例
* 微信分享:對于展示頁,利用微信平臺來實現病毒式傳播
* 微信授權:集成微信用戶授權,可以輕松獲得大量用戶
* 微信支付:對于支付類的,可以通過快速實現
3. H5和WeUI前端實踐
4. 項目實戰,實現微信端的付費課程系統
我們花了很多精力把基礎知識和單一技能點
* 基本技能(Coding IDE,Git,命令行等)
* nodejs基礎
* express
* 微信基礎(后臺)
* 微信分享
* h5和weui實踐
* 微信支付
這些都太零散了,為了能夠讓大家有一個整體的項目認知,這里面我們再加一個項目實踐,《rework》一書里講,抓自己的癢,是說創業的時候選題,從自身的痛點出發,這樣更容易成功。那么,我們(StuQ)的這個課程,如果想要推廣,想讓更多人參與,怎么辦呢?
既然講的是這課,那我們就寫一個吧!
## 如何學習?
* 循序漸進,一次只學一樣不會的
* practice makes perfect,熟能生巧,一定要結合例子,多練,多思考
* 玩出樂趣,以一個更好的心態來面對編程,切勿急躁、抱怨
* 一萬個小時就會成為專家,堅持就是勝利,至少目前軟件開發是朝陽產業。
## 為什么前端越來越難?越來越有意思?
### 大前端
從架構上講,軟件從c/s到b/s過度,它的橋梁是瀏覽器,尤其是ajax促進了web2.0的成功,所以現在我們看到的絕大部分軟件的架構都是b/s的,也稱為瘦客戶端。

從prototype.js到yui,到jquery,到extjs等他們只是從用法和ui上演進,還有就是underscore等工具庫。
而backbone的出現,把mvc引入前端,于是前端開始了分層。
當angular.js橫空出世,又引入了雙向綁定,ioc依賴注入,指令等概念,這實際上在java里早有的概念,這又再一次增加了前端的復雜度。
上面說的是架構上得演進,還有一些enhance的提高,比如js方面有coffeescript和typescript,css方面有less/sass/scss/stylus等,這些不是什么新概念,是對web開發的增強。前提是你熟練使用js和css才能用。
最后是MEAN的full stack最新趨勢。有望替換LAMP.
這些還只是前端的發展,現在是移動互聯網時代,在微信淘寶等帶領下,h5正如火如荼的襲來,可以說是當下最火的技術。那么移動端h5開發和上面的前端技術如何結合就成了現下得趨勢。
我覺得大前端應該現下web的統稱,包含web開發最佳實踐,趨勢以及h5。 nodejs作為一個兼容js語法的平臺,更容易讓廣大前端開發者接受,在構建,工具等領域輔助大前端的成長。
### 如何學習
我們來想想一般的前端有什么技能?
* html
* css(兼容瀏覽器)
* js會點(可能更多的是會點jquery)
* ps切圖
* firebug和chrome debuger會的人都不太多
* 用過幾個框架,大部分人是僅僅會用
* 英語一般
* svn/git會一點
那么他們如果想在前端領域做的更深有哪些難點呢?
* 基礎:oo,dp,命令,shell,構建等
* 編程思想上的理解(mvc、ioc,規約等)
* 區分概念
* 外圍驗收,如h5和hybird等
* 追趕趨勢,如何學習新東西
以上皆是痛點。
現在來總結一下學習有2種,1是從頭來,2是從某一種框架起
第一種學習下來,沒個幾年很難學通,第二種只會用框架,補齊概念和基礎也比較費勁。總之,無論如何學習曲線都是比較陡峭的,那么如何來讓入門的開發者快速學習到這些呢?
軟件的精髓在應變,殊途同歸,學會如何學習才是我們最重要的道。
* 積極的心態,做好適應變化的準備
* 找到屬于自己的學習方式
* 如果有機會,改變或創新,貢獻開源社區
- 前言
- 1 skill
- 1.1 Coding WebIDE
- 1.2 git
- 1.3 extra practice
- 1.4 預習
- 2 nodejs入門
- 2.1 入門
- 2.2 安裝
- 2.3 helloworld
- 2.4 commonJS規范
- 2.5 模塊導出
- 2.6 Nodejs代碼調試
- 2.7 編寫Nodejs模塊
- 2.8 最小化問題
- 2.9 隨堂練習
- 3 異步流程控制
- 3.1 什么時候會用到異步流程控制
- 3.2 簡單做法async模塊
- 3.3 Promise/a+規范
- 3.4 Node.js Promise/a+實現
- 3.5 生成器Generators/yield
- 3.6 Async函數/Await
- 3.7 神奇的co
- 3.8 5種 yieldable
- 3.9 學習重點
- 3.10 隨堂練習
- 4 express和微信開發入門
- 4.1 入門
- 4.2 connect
- 4.3 靜態Http服務器
- 4.4 那些預處理器
- 4.5 路由
- 4.6 視圖與模塊引擎
- 4.7 中間件
- 4.8 更多實踐
- 4.9 微信入門
- 4.10 隨堂練習:完成登錄、注冊功能
- 5 微信實例與H5實踐
- 5.1 微信基礎和sandbox
- 5.2 公眾號菜單和自動回復
- 5.3 微信OAuth用戶授權
- 5.4 微信分享
- 5.5 wechat-api
- 5.6 H5-上篇
- 5.7 H5-下篇
- 5.8 隨堂練習
- 6 weui實戰
- 6.1 使用bower
- 6.2 移動端抽象
- 6.3 優化滑動列表
- 6.4 weui
- 6.5 讓weui和iscroll結婚
- 6.6 優化事件
- 6.7 how-to-write-h5
- 6.8 優化無止境
- 6.9 隨堂練習
- 7 微信支付
- 7.1 吹個牛
- 7.2 支付概述
- 7.3 科普幾個概念
- 7.4 準備
- 7.5 調試
- 7.6 公眾號支付(JSAPI)
- 7.7 對賬單
- 7.8 數據處理
- 7.9 隨堂練習
- 8 項目實戰《付費課程系統MVP》
- 8.1 需求分析
- 8.2 ui/ue
- 8.3 技術棧
- 8.4 模型
- 8.5 靜態api
- 8.6 開發
- 8.7 部署
- 8.8 監控
- 8.9 數據統計
- 8.10 demo
- 9 高級篇
- 9.1 前后端分離實踐?
- 9.2 如何展望未來的大前端
- 9.3 容器和微服務
- 10 答疑問題收集