如何评价 node koa 框架.js 的koa框架

&& 上回说到怎样将Koa这个web框架运行在NodeJs环境中呢?我们来将上次写的那个hello.js 内容改成如下:
1 var koa = require('koa');
var app = koa();
app.use(function *(){
this.body = 'Hello World';
6 app.listen(8888);
&& 注意:现在你直接在命令行中运行:node hello.js 是会报错的。错误一般如下:function *respond(next){^SyntaxError: Unexpected token *at Module._compile (module.js:439:25)at Object.Module._extensions..js (module.js:474:10)at Module.load (module.js:356:32)at Function.Module._load (module.js:312:12)at Module.require (module.js:364:17)at require (module.js:380:17)at Object. (C:\Program Files\nodejs\node_modules\koa\index.js:2:18)at Module._compile (module.js:456:26)at Object.Module._extensions..js (module.js:474:10)at Module.load (module.js:356:32)这是因为& app.use(function *(){ 语句中有一个 * ,这种方式被称为generator functions ,一般写作function *(){...} 的形式,在此类function 中可以支持ES6的一种yield概念(什么?你不知道什么是yield...%$#@%....呵呵,好吧,其实我也不知道。不过我相信,我们后面会遇到它的,请耐心一点。)。于是我们需要让这种新型的javascript方法可以编译通过,就需要在运行node 命令的时候加上一个harmony参数(嗯,你知道什么是河蟹吧。呵呵,对了。harmony的英文意思就是和谐,就是为了让编译器不仅可以接纳旧的javascript语法也可以接纳新时代的语法。)语句如下:node --harmony hello.js好了,你已经看出来了。Koa 在 原生态的NodeJs的基础上进行了一番进化。从程序员的角度来看,首先变得更加简洁、易读了;然后,其实是最重要的一个进化:&使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。 &下一回我们就尝试着用这个东东做一个web应用吧。哦,提醒一下,最好使用最新的NodeJs v0.11.4。在命令行下查一下你的版本就可以知道了。NodeJs v0.11.4下载地址:
阅读(...) 评论()你的位置: >
> node.js Koa 框架 的基本用法
Node 主要用在开发 Web 应用。这决定了使用 Node,往往离不开 Web 应用框架。
就是一种简单好用的 Web 框架。它的特点是优雅、简洁、表达力强、自由度高。本身代码只有1000多行,所有功能都通过插件实现,很符合
Koa 目前需要 &=0.11.x版本的 node 环境。并需要在执行 node 的时候附带 –harmony 来引入 generators 。 如果您安装了较旧版本的 node ,您可以安装
(node版本控制器),来快速安装 0.11.x。
$ npm install -g n
$ n 0.11.12
$ node --harmony my-koa-app.js
如果你已经安装了Node,那么可以使用下面的命令检查版本。Koa 必须使用 7.6 以上的版本。如果你的版本低于这个要求,就要先升级 Node。
架设 HTTP 服务
上面我们已经做好了前期的准备公司,下面我就开始用 Koa 架设一个 HTTP 服务。
const Koa = require('koa');
const app = new Koa();
app.listen(3000);
新建一个xttblog.js文件,将上面的代码写入文件,运行下面的命令:
$ node xttblog.js
打开浏览器,访问 http://127.0.0.1:3000 。你会看到页面显示&Not Found&,表示没有发现任何内容。这是因为我们并没有告诉 Koa 应该显示什么内容。
Context 对象
Koa 提供一个 Context 对象,表示一次对话的上下文(包括 HTTP 请求和 HTTP 回复)。通过加工这个对象,就可以控制返回给用户的内容。
Context.response.body属性就是发送给用户的内容。
我们再新建一个codedq.js,写入下面的代码:
const Koa = require('koa');
const app = new Koa();
const main = ctx =& {
ctx.response.body = 'Hello World';
app.use(main);
app.listen(3000);
上面代码中,main函数用来设置ctx.response.body。然后,使用app.use方法加载main函数。
你可能已经猜到了,ctx.response代表 HTTP Response。同样地,ctx.request代表 HTTP Request。
然后在执行下面的命令:
$ node codedq.js
访问 http://127.0.0.1:3000 ,现在就可以看到&Hello World&了。
HTTP Response 的类型
Koa 默认的返回类型是text/plain,如果想返回其他类型的内容,可以先用ctx.request.accepts判断一下,客户端希望接受什么数据(根据 HTTP Request 的Accept字段),然后使用ctx.response.type指定返回类型。
在 ifxvn.js 文件中写入下面的代码:
const main = ctx =& {
if (ctx.request.accepts('xml')) {
ctx.response.type = 'xml';
ctx.response.body = '&data&Hello World&/data&';
} else if (ctx.request.accepts('json')) {
ctx.response.type = 'json';
ctx.response.body = { data: 'Hello World' };
} else if (ctx.request.accepts('html')) {
ctx.response.type = 'html';
ctx.response.body = '&p&Hello World&/p&';
ctx.response.type = 'text';
ctx.response.body = 'Hello World';
然后运行这个文件:
$ node ifxvn.js
访问 http://127.0.0.1:3000 ,现在看到的就是一个 XML 文档了。
实际开发中,返回给用户的网页往往都写成模板文件。我们可以让 Koa 先读取模板文件,然后将这个模板返回给用户。看下面的代码:
const fs = require('fs');
const main = ctx =& {
ctx.response.type = 'html';
ctx.response.body = fs.createReadStream('./hellword.html');
运行这个 ndislwf.js。
$ node ndislwf.js
访问 http://127.0.0.1:3000 ,看到的就是hellword.html文件的内容了。
限于篇幅,我们下章继续学习 koa 框架的路由功能。
本文原文出处:: &
相关文章推荐发现一个基于koa.js开发的框架,太好用了 - CNode技术社区
积分: 1285
KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架
官网:[]()
[![image](/public/ad.jpg &koahub软件市场&)]()
发现一个基于koa.js开发的框架,太好用了。从繁琐,笨重的路由定义中解放出来,从频繁的require中解放出来,支持中间件,路由,模型,控制器… 自动加载。新项目启动,简直不要太好用。
点击下面链接查看
你赢了。。。
。。。吗?
不得不说,太好用了
和x x x 比。
你呢 不擅长营销
你这样搞的后果只能是和微信朋友圈那些面膜广告一样臭大街的,所以即使你这真的是一个好的框架,估计都会因为你这种广告方式没人看
哈哈,楼主你太有意思了。直接说自己的项目就好了,还要以旁观者的角度说一堆赞美自己项目的话。666
强烈要求置顶,放在那颗蛋上面。
好用在哪里呢
不具有可比性
也没觉得那颗蛋有什么好的,不也置顶了?还有那个c n p m,就是个简单重复,不也置顶吗?
我不评论egg的用法,但从代码质量上看,还是非常棒的,真的不适合做对比。cnpm一直致力于提高大家的工作效率,解决npm依赖问题,源,还有安装优化,cnpm都是非常棒的,cnpm作者征集意见,置顶不过分的
难道我去找个专业的写一篇文章推广啊?koahub.js确实是我开发的,但是确实使用着非常方便。你们愿意提意见,我非常感谢,你们不愿意看,我也没啥办法,就当我在社区里增加点活力。
没办法,用着爽,给你们说一声。???
不要求置顶,现在node社区,特别是后端社区太小,egg代码质量高,每个月才不到8k下载量,不凑热闹。看完所有的框架,还是忍不住赞美赞美自己写的框架,就一个字,“好用”。
确实还不错,还有逼格的小图标哦,还有专门的主页。案例也有一些,不错不错
koa官方上Frameworks推荐是怎么上的啊(因为之前在这看过,所以有些印象)
wiki可以修改
强烈要求顶个蛋,偶尔也要让我们会员朋友爽一次,不要因为不是大厂就不能顶置
cnpm和那种nrm改仓库的方案比起来,觉得有些多余?直接改仓库地址不是更好吗?
那就把cnpm看低了, 苏老板在安装下载方面改进做了相当大工作
大家觉得cnpm不好的可以不用,我只是发个帖征求社区愿意帮忙的同学帮忙一下。置顶可以去掉,也免得大家只吐槽而又不去看看为何我们要做这些改进。
自豪地采用
如果我们不做一个中国镜像,nrm能做什么事情?
自豪地采用
苏老板别激动,我们都是受益者
各位说之前,请摸摸良心
问一下cnpm和npm用淘宝源有什么区别?
我不用cnpm,一点影响也没有。反对这种别人做啊,你就做a’的行为。
只是问问而已,没有冒犯的意思,况且我也是想了解下cnpm比nrm优秀的地方。cnpm和淘宝,都提供了中国镜像仓库,确实帮了很多人提高下载速度,值得尊敬
的确是,怎么下载量都这么小,我都有一个模块月下载量要超2w了
你的模块是不是前端模块?
不算,是个基础功能模块,前后端 / react native / cli 等等只要能跑js就能用
怎么样验证表单?
留名,看看源码再说
我实力够的时候,一定会去为egg做贡献。置顶一定要留着
现在成天忙于具体项目,没时间研究,提升。
可以看看说明,其实业界都在做installer改进,我们只是做了一种方案,没强迫大家使用,就如yarn一般。
自豪地采用
你赢了。。。
广告可以做到这个地步 哈哈哈哈
直接使用joi就行了
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的

我要回帖

更多关于 koa框架教程 的文章

 

随机推荐