# introduce
## 什么是nodejs
官方網站?[https://nodejs.org/en/](https://nodejs.org/en/)
Node.js? is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
* Node.js不是JS應用、而是JS運行平臺(JavaScript runtime )
* 構建在Chrome's V8 JavaScript engine之上
* event-driven, non-blocking I/O model簡單點講就是每個函數都是異步的,所以lightweight and efficient
* 使用npm作為包管理生態,目前是開源庫里包管理最大的生態,開源可用的庫非常多
## 它能干什么?
* 網站(如express/koa等)
* im即使聊天(socket.io)
* api(移動端,pc,h5)
* http proxy(淘寶首頁)
* 前端構建工具(grunt/gulp/bower/webpack/fis3...)
* 寫操作系統(NodeOS)
* 跨平臺打包工具(以前叫Node-WebKit現在叫nw.js)
* 命令行工具(比如cordova)
更多的見?[https://github.com/sindresorhus/awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs)
## WHY NODEJS
* 前端熟悉的語言,學習成本低
* 都是JS,可以前后端復用
* 體質適合:事件驅動、非阻塞I/O
* 適合IO密集型業務
* 執行速度也不差
* 模塊豐富,npm非常龐大、強大
## 什么是npm
NPM的全稱是Node Package Manager[1] ,是一個NodeJS包管理和分發工具,已經成為了非官方的發布Node模塊(包)的標準,通常稱為node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發布等。
NPM作為Node的模塊管理和發布工具,作用與Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget一樣。在當前前端工程化極速狂奔的年代,即使不做nodejs的開發,也需要學習和使用NPM的,誰叫grunt/gulp、bower、yeoman這一堆的工具都通過NPM發布呢?!
## 什么是nodejs模塊
Nodejs自身提供了基本的模塊,但是開發實際應用過程中僅僅依靠這些基本模塊則還需要較多的工作。幸運的是,Nodejs庫和框架為我們提供了幫助,讓我們減少工作量。但是成百上千的庫或者框架管理起來又很麻煩,有了NPM,可以很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。
* http
* net
* url
* path
nodejs以包的形式組織程序模塊,而包的定義卻十分簡單——包含文件內容符合規范package.json文件的目錄或歸檔文件。并通過@來唯一標識每個包。
- 前言
- 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 答疑問題收集