Node.js学习-一步步完善一个web框架-1
2017-11-22 19:20
816 查看
闲来无事,打算深入学习一下Node.js。之前虽说已有过一点Node.js的开发经验,但对Node.js还仅仅局限于了解,很多Node模块也没有比较深入的学习,如文件模块(fs)、http模块、path模块等。
到目前为止也用过两个Node的web框架(express和koa.js),也已经用koa.js搭建了一个完整的web项目。
借着现在这个机会正好深入学习下Node,所以根据自己的理解开始搭建一个web框架吧,也好巩固一下一些基础知识,对于这个框架,我想暂且将至命名为wa.js。
每日一更,借着写博客好好鞭策一下自己。
进入正文。
/[b]****************[/b]华丽丽的分割线[b]**********************[/b]/
一个最简单的Node.js服务器代码:
我们的web框架将从这个小例子开始扩展。所以对于弄清楚这段代码自我感觉也是蛮重要的
1.导入http模块,对于需要搭建一个服务器这个模块是必须的
2.创建一个服务器,并传入监听函数。当有请求到来时便会执行这个函数并且将
3.监听端口
当我们打开
讲一下这个结构,
- wa/core文件夹我将用于存放一些框架相关的文件
- wa/controller将用于存放控制器文件
- wa/middleware将用于存放中间件
- wa/public用于存放静态文件,
- wa/app.js是项目入口文件
接下来我们将上面写的简单服务器的例子放
a349
到wa.js中去,并且我设想这个框架也是得有中间件的所以wa.js的代码如下:
在wa/app.js中我们就可以这样使用wa.js:
和我们之前的例子,效果是一样的。
这一篇就到这吧,下一篇写一个中间件用于路由。
到目前为止也用过两个Node的web框架(express和koa.js),也已经用koa.js搭建了一个完整的web项目。
借着现在这个机会正好深入学习下Node,所以根据自己的理解开始搭建一个web框架吧,也好巩固一下一些基础知识,对于这个框架,我想暂且将至命名为wa.js。
每日一更,借着写博客好好鞭策一下自己。
进入正文。
/[b]****************[/b]华丽丽的分割线[b]**********************[/b]/
一个最简单的Node.js服务器代码:
const http = require('http'); var server = http.createServer(function(req,res){ res.statusCode = 200; res.setHeader('Content-Type','text/html'); res.end('<h1>Hello World!</h1>'); }); server.listen(8080);
我们的web框架将从这个小例子开始扩展。所以对于弄清楚这段代码自我感觉也是蛮重要的
1.导入http模块,对于需要搭建一个服务器这个模块是必须的
const http = require('http');
2.创建一个服务器,并传入监听函数。当有请求到来时便会执行这个函数并且将
request和
response作为参数传入
http.createServer(requestListener)
3.监听端口
server.listen(port)
当我们打开
localhost:8080是便能看到熟悉的
Hello World!了。
说好的要搭建一个web框架呢,那就开始吧
创建一个文件夹,名为wa,结构如下:wa |--core |--wa.js |-controller | |-middleware | |-public | |-app.js
讲一下这个结构,
- wa/core文件夹我将用于存放一些框架相关的文件
- wa/controller将用于存放控制器文件
- wa/middleware将用于存放中间件
- wa/public用于存放静态文件,
- wa/app.js是项目入口文件
接下来我们将上面写的简单服务器的例子放
a349
到wa.js中去,并且我设想这个框架也是得有中间件的所以wa.js的代码如下:
const fs = require('fs'); const http = require('http'); /** * Wa构造函数 * @constructor */ function Wa() { this.req = null; this.res = null; this.server = null; this.middleware = []; this.init(); } Wa.prototype = { /** * 创建一个服务器 */ init: function(){ this.server = http.createServer(this.requestListener.bind(this)); return this; }, /** * 监听端口 * @param {Number} port 端口 */ listen: function(port) { this.server.listen(port); return this; }, /** * 用于添加中间件 * @param {Function} middleware 中间件 */ use: function(middleware) { if (typeof middleware !== 'function') { throw new TypeError('middleware must be a function'); } this.middleware.push(middleware); }, /** * ‘request’事件 * @param {IncomingMessage} req 请求 * @param {ServerResponse} res 响应 */ requestListener: function(req,res) { this.req = req; this.res = res; for (var i = 0; i < this.middleware.length; i++) { var mid = this.middleware[i]; mid(this); } }, /** * 响应HTML文件 * @param {String} path HTML文件路径 */ render: function(path) { var file = fs.readFileSync(path); this.res.statusCode = 200; this.res.setHeader('Content-Type','text/html'); this.res.end(file); } } module.exports = Wa;
在wa/app.js中我们就可以这样使用wa.js:
const Wa = require('./core/wa'); var app = new Wa(); app.use(function(wa){ wa.res.statusCode = 200; wa.res.setHeader('Content-Type','text/html'); wa.res.end('<h1>Hello World!</h1>'); }); app.listen(8080);
和我们之前的例子,效果是一样的。
这一篇就到这吧,下一篇写一个中间件用于路由。
相关文章推荐
- 分享一个基于 Node.js 的 Web 开发框架 - Nokitjs
- JavaScript之node.js-web框架Koa学习
- Node.js学习-web框架-2-中间件
- 学习用node.js建立一个简单的web服务器
- (NodeJS学习文章收集三) node.js基于express框架搭建一个简单的注册登录Web功能
- 迷你MVVM框架 avalonjs 学习教程18、一步步做一个todoMVC
- 分享一个基于 Node.js 的 Web 开发框架 - Nokitjs
- 用Node.js 写web框架(五)
- 关于node.js的web框架的应用及并发性能测试 推荐
- node.js 学习笔记一:创建一个服务器
- Node.js 入门手册:那些最流行的 Web 开发框架
- Koa – 更加强大的下一代 Node.js Web 框架
- android WebView将新浪天气为我所用 ------>仅供娱乐(一个android webview 执行js的简单框架)
- Python web框架Django学习(1)——在win7 64bit下配置开发环境Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和
- Node.js Web 开发框架大全《中间件篇》
- Node.js简单介绍并实现一个简单的Web MVC框架
- 用Node.js 写web框架(四)
- 基于Node.js的Web框架集合
- node.js web应用基本框架
- Node.js Web 开发框架大全《静态文件服务器篇》