> 原文出处: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的,也称为瘦客户端。
![](https://box.kancloud.cn/59d1bab5ff79926dffdc41850aa2b703_1576x1150.png)
从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 答疑问题收集