Node.Js的Module System 以及一些常用 Module
在第7章结束与第10章结束时分别自己出一个小项目练练手。Node.Js的入门学习计划是这样。
QQ:1045642972 欢迎来索书以及讨论Node.Js。
Node.Js Demo
Node.Js官网提供了一个最基本的Demo Code:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
require('http'); 就是从Node.Js提供的http 这个module中获取导出的对象,以进行之后的创建侦听端口的操作。
Module
Module System的4个要点:
- 每个Js文件都映射一个Module。
- 在每个Js文件中,都可以通过module这个变量,来直接操作到Module。
- 导出模块借助于module.exports这个变量
- 导入模块借助于require这个全局函数。
直接上代码来说明
文件结构:PS:由于Js没有main(),Node.Js社区中约定将主流程写在app.js中。
utility模块如下:
var title = "Hello Node"; module.exports = { SetTitle : function(titleName){ title = titleName; }, Output : function () { console.log(title); } }
app.js对于该模块的测试代码如下:
var module = require("./utility"); module.SetTitle("Hello CNBLOG"); module.Output(); console.log(module.title);
结果:
Node.Js的Module是非常安全的,每个module只能拿到exports变量出来的东西。
Path Module
提供与文件路径有关的功能,并且可以适应操作系统的环境(即Windows的\与Unix的/)。
DEMO(测试环境为Windows):
var path = require("path"); console.log(path.normalize("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js")); //Output:C:\Users\Guan\WebstormProjects\NodeStudy01\app.js console.log(path.join("C:/Users/Guan/WebstormProjects", "NodeStudy01", "app.js")); //Output:C:\Users\Guan\WebstormProjects\NodeStudy01\app.js console.log(path.dirname("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js")); //Output:C:/Users/Guan/WebstormProjects/NodeStudy01 console.log(path.basename("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js")); //Output:app.js console.log(path.extname("C:/Users/Guan/WebstormProjects/NodeStudy01/app.js")); //Output:.js
fs Module
提供了异步与同步两种模式读写文件的功能。
DEMO:
var fs = require('fs'); fs.writeFileSync('testA.txt', "Hello Node"); console.log(fs.readFileSync('testA.txt').toString()); fs.writeFile('testB.txt', "Hello Node", function () { console.log(fs.readFileSync('testB.txt').toString()); });
os Module
该模块提供了获取当前系统OS有关的功能,如:获取CPU核数,内存余量等。
DEMO:
console.log('Total Memory', os.totalmem(), 'Bytes'); console.log('Available Memory', os.freemem() , 'Bytes'); console.log('This machine has', os.cpus().length, 'CPUs');
当然,Module还有很多,具体参考Node.Js官网的API DOC。