轻松创建nodejs服务器(3):代码模块化


Posted in NodeJs onDecember 18, 2014

nodejs的功能块大都以模块的形式存在的。

通常会有一个统一入口index.js,然后调用不同的模块来完成我们需要的功能。

我们先来看看怎么把server.js变成一个模块让 index.js 主文件使用。

var http = require("http");

...

http.createServer(...);

“http” 是nodejs自带的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。 我们可以用这个变量来调用 http 模块所提供的公共方法的对象,变量名不是固定的,你完全可以按照你的喜好来命名这个变量,不过我建议直接用模块名来做变量名,可以使代码可读性更高些。

我们按这个方式改一下server.js里的代码,我们把代码放到start()函数里,并通过expors将代码提供给其他页面引用。

var http = require("http");

function start() {

 function onRequest(request, response) {

  console.log("Request received.");

  response.writeHead(200, {"Content-Type": "text/plain"});

  response.write("Hello World");

  response.end();

 }

 http.createServer(onRequest).listen(8888);

 console.log("Server has started.");

}

exports.start = start;

这样,我们现在就可以创建我们的主文件 index.js 并在其中启动我们的HTTP了,虽然服务器的代码还在 server.js 中。

创建 index.js 文件并写入以下内容:

var server = require("./server");

server.start();

执行node index.js

这样做就可以把应用的不同部分放入不同的文件里,并且通过生成模块的方式把它们连接到一起了。

下一节我们要了解一下路由

NodeJs 相关文章推荐
Nodejs中自定义事件实例
Jun 20 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 #NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 #NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 #NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 #NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 #NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 #NodeJs
详谈nodejs异步编程
Dec 04 #NodeJs
You might like
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
Javascript typeof 用法
2008/12/28 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
PHP守护进程实例
2015/03/06 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python代码xml转txt实例
2020/03/10 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
2014年大学学生会工作总结
2014/12/02 职场文书
民事诉讼代理词
2015/05/25 职场文书
汉字听写大会观后感
2015/06/12 职场文书