Node实战(第2季)5 基于Koa快速开发Web应用
2018-01-26 20:34
337 查看
讲解ES6中生成器、yield,以及Node.js下一代Web开发框架--Koa及其中间件的用法。
function和function* :function*就是上面提到的生成器函数
function* helloWorldGeneratorFunction() {
var hello = yield 'hello';
console.log(hello);
var world = yield 'world';
console.log(world);
return '!';
}
生成器函数也是函数,所以拥有所有函数的特性。比如作用域、闭包,以及遇到第一个return会执行结束等。生成器函数又有些普通函数没有的特性,比如可以使用yield并且yield只能在生成器函数内使用,如果在普通函数内使用yield将会报错。
yield和yield*:Array与String、arguments、Generator、Object。
区别在于:yield只返回右右值,而yield*则将函数委托(delegate)到另一个生成器(Generator)或可迭代的对象(如对象串、数组、类数组argument,以及ES6中的Map、Set等)。
co和Koa:Koa是基于Generator和co开发的新一代中间件框架。
过滤器:
koa-errorhandler:
config-lite:不管是小项目还是大项目,将配置与代码分离是一种非常好的做法。我们通常将配置写到一个配置文件里,如config.js/config.json,并放到项目的根目录下。
单元测试:自动化测试中的一种,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小的可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
单元测试又有许多风格,常见的两个风格有:测试驱动开发(TDD)和行为驱动开发(BDD),二者最主要的区别在于:TDD关注所有功能是否被正确实现,每个功能都具备对应的测试用例;BDD强调的是系统最终的实现与用户期望的行为是否一致,验证代码实现是否符合设计目标。
co-mocha和co-supertest:
路由和功能设计:
自定义模型:
theme的设计:
注册:
登录与登出:
主页与版块:
用户页:
发表页与话题页:
测试:
部署:使用pm2,申请MongoLab,部署到Heroku(云服务平台)
https://github.com/nswbmw/N-club
5.1 ES6时代的来临
ECMAScript6,简称ES6,也称作ECMAScript2015,于2015年6月正式定稿。ES6是一次重大升级,是自2009年发布的ES5规范后的首次更新。function和function* :function*就是上面提到的生成器函数
function* helloWorldGeneratorFunction() {
var hello = yield 'hello';
console.log(hello);
var world = yield 'world';
console.log(world);
return '!';
}
生成器函数也是函数,所以拥有所有函数的特性。比如作用域、闭包,以及遇到第一个return会执行结束等。生成器函数又有些普通函数没有的特性,比如可以使用yield并且yield只能在生成器函数内使用,如果在普通函数内使用yield将会报错。
yield和yield*:Array与String、arguments、Generator、Object。
区别在于:yield只返回右右值,而yield*则将函数委托(delegate)到另一个生成器(Generator)或可迭代的对象(如对象串、数组、类数组argument,以及ES6中的Map、Set等)。
co和Koa:Koa是基于Generator和co开发的新一代中间件框架。
5.2 模板系统
ejs和co-ejs:ejs是常用的模板引擎之一,co-ejs是经过改造ejs源码以支持生成器函数的一种尝试。所理解的模板引擎是将定义好的模板与静态数据(如JSON)结合渲染生成HTML。过滤器:
5.3 路由
在使用Express开发时,比较好的方式就是将路由写到一个文件中,如router.js5.4 参数验证与错误处理
koa-scheme:koa-errorhandler:
5.5 缓存和配置
koe-router-cache和co-cache:当一个网站的访问量越来越大后,增加缓存是提升性能的一个既简单又有效的方式。增加缓存的方式大同小异,无非是将缓存层放到业务逻辑层之前,当请求到到达时,首先经过缓存层,如果命中缓存则直接返回,如果没有命中则传递到业务逻辑层。缓存的更新机制也大同小异,通常有两种方式:一种是设置一个定时器定时更新缓存,一种是当业务逻辑层执行结束后更新缓存。第一种方式简单却浪费资源,第二种方式代码耦合严重也不优雅。而基于Koa的中间件特性,我们可以写出既简单又优雅也不耦合的缓存中间件。config-lite:不管是小项目还是大项目,将配置与代码分离是一种非常好的做法。我们通常将配置写到一个配置文件里,如config.js/config.json,并放到项目的根目录下。
5.6 测试
测试是软件开发过程中必不可少的一环,没有经过测试的程序是不完整的,也是没有保证的。手工测试既烦琐又容易出现人为失误,所以自动化测试变得越来越流行。在项目开发过程中,如何保证添加新功能后,之前的功能也都是可用的呢?如果没有写测试用例,那么需要从头挨个测试功能点;如果之前为每个功能都写了测试,那么只需运行一遍测试程序。单元测试:自动化测试中的一种,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小的可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
单元测试又有许多风格,常见的两个风格有:测试驱动开发(TDD)和行为驱动开发(BDD),二者最主要的区别在于:TDD关注所有功能是否被正确实现,每个功能都具备对应的测试用例;BDD强调的是系统最终的实现与用户期望的行为是否一致,验证代码实现是否符合设计目标。
co-mocha和co-supertest:
5.7 开发一个论坛系统
Nodeclub是一个优秀的开源论坛系统,已经在Node.js中文技术社区。路由和功能设计:
自定义模型:
theme的设计:
注册:
登录与登出:
主页与版块:
用户页:
发表页与话题页:
测试:
部署:使用pm2,申请MongoLab,部署到Heroku(云服务平台)
https://github.com/nswbmw/N-club
相关文章推荐
- KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架
- Node实战(第2季):1 通过Docker快速开发Node.js应用
- Node.js项目实战-构建可扩展的Web应用(第一版):3 Node.js基于Mocha的测试驱动开发和行为驱动开发
- KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架
- KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情
- Node实战(第2季) 3 基于RabbitMQ搭建消息队列
- express(基于 Node.js 平台,快速、开放、极简的 web 开发框架)
- KoaHub平台基于Node.js开发的Koa的rewrite and index support插件代码详情
- 基于node.js的快速开发透明代理
- KoaHub.JS基于Node.js开发的mysql的node.js驱动程序代码
- KoaHub平台基于Node.js开发的Koa的连接MongoDB插件代码详情
- KoaHub.JS基于Node.js开发的Lodash模块化实用程序代码
- KoaHub平台基于Node.js开发的Koa加载程序代码信息详情
- Koa -- 基于 Node.js 平台的下一代 web 开发框架
- 基于 Node.js 平台,快速、开放、极简的 web 开发框架。
- 采用基于NodeJS的express+Mongodb技术快速开发web应用
- 快速高效地开发和调试基于gradle管理的web应用
- node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发
- 基于node.js的快速开发透明代理
- KoaHub平台基于Node.js开发的Koa的get/set session插件代码详情