博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js模块
阅读量:5755 次
发布时间:2019-06-18

本文共 6595 字,大约阅读时间需要 21 分钟。

每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js)、JSON文本文件(.json)和二进制模块文件(.node)。

mymodul.js

function Hello() {    this.hello = function() {        console.log('Hello');    };    this.world = function() {        console.log('World');    };}module.exports = Hello;

index.js

var Hello = require('./mymodule');var hello = new Hello();hello.hello(); // >> Hellohello.world(); // >> World

包用于管理多个模块及其依赖关系,包的根目录必须包含package.json文件,是CommonJS规范用于描述包的文件

npm是包管理工具

Node.js Events模块

所有发出事件的对象都是events.EventEmitter的实例,可以通过require("events");获得event模块

test4.js

var http = require('http');var server = http.createServer();server.on('request', function(req, res) {    res.writeHead(200, { 'Content-Type': 'text/plain' });    res.write('hello,111');    console.log('hello,111');    res.end();});server.on('request', function(req, res) {    res.writeHead(200, { 'Content-Type': 'text/plain' });    res.write('hello,222');    console.log('hello,222');    res.end();});// 移除绑定的所有监听器server.removeAllListeners('request');server.on('request', function(req, res) {    res.writeHead(200, { 'Content-Type': 'text/plain' });    res.write('hello');    console.log('hello');    res.end();});server.listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');

执行node test.js

在地址栏输入127.0.0.1:1337,即可看到页面上打印出了“hello”字样,说明前面的监听器被移除了,都没有执行,所以没有显示

console界面也只会输出'hello'字样

Node.js fs 模块

使用require('fs')载入fs模块

模块中所有方法都有同步和异步两种形式

读取文件

fs.readFile(filename, [options], callback)

写入内容到文件

fs.writeFile(filename, data, [options], callback)

eg:

var fs = require('fs'); // 引入fs模块// 写入文件内容(如果文件不存在会创建一个文件)// 写入时会先清空文件fs.writeFile('./aa.txt', 'test test aaa',{
'flag': 'a'},function(err) { if (err) { throw err; } console.log('Saved.'); // 写入成功后读取测试 fs.readFile('./aa.txt', 'utf-8', function(err, data) { if (err) { throw err; } console.log(data); });});

flag传递的值,r代表读取文件,,w代表写入文件,a代表追加写入文件

打开文件

fs.open(path, flags, [mode], callback)

关闭文件

fs.close(fd, [callback])

读文件

fs.read(fd, buffer, offset, length, position, callback)

 

read.js

var fs = require('fs'); // 引入fs模块// 打开文件fs.open('./aa.txt', 'r', function(err, fd) {    if (err) {        throw err;    }    console.log('open file success.');    var buffer = new Buffer(255);    // 读取文件    fs.read(fd, buffer, 0, 100, 0, function(err, bytesRead, buffer) {        if (err) {            throw err;        }        // 打印出buffer中存入的数据        console.log(bytesRead, buffer.slice(0, bytesRead).toString());        // 关闭文件        fs.close(fd);    });});

写文件

fs.write(fd, buffer, offset, length, position, callback)
var fs = require('fs'); // 引入fs模块// 打开文件fs.open('./bb.txt', `w`, function(err, fd) {    if (err) {        throw err;    }    console.log('open file success.');    var buffer = new Buffer('hello world!!!!!!');    // 读取文件    fs.write(fd, buffer, 0, 10, 0, function(err, bytes, buffer) {        if (err) {            throw err;        }        console.log('write success.');        // 打印出buffer中存入的数据        console.log(bytes, buffer.slice(0, bytes).toString());        // 关闭文件        fs.close(fd);    });});

 

创建目录

fs.mkdir(path, [mode], callback)

mkdir.js

var fs = require('fs'); // 引入fs模块// 创建 newdir 目录fs.mkdir('./newdir', function(err) {    if (err) {        throw err;    }    console.log('make dir success.');});

 

读取文件目录

fs.readdir(path, callback)

readdir.js

var fs = require('fs'); // 引入fs模块fs.readdir('./newdir', function(err, files) {    if (err) {        throw err;    }    // files是一个数组    // 每个元素是此目录下的文件或文件夹的名称    console.log(files);});
Node.js 的 http 模块

http模块主要用于创建http server服务

创建http server

// 引入http模块var http = require('http');// 创建http serverhttp.createServer(function (req, res) {    res.writeHead(200, {'Content-Type': 'text/plain'});    res.end('Hello World\n');}).listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');

新建一个文app件夹

server.js

//// 创建http server//// 加载所需模块var http = require('http');var url = require('url');var fs = require('fs');// 设置ip和端口var host = '127.0.0.1',    port = 8080;// 创建http serverfunction start(route, handle) {    // 参数    // route  判断url是否存在,存在则调用handle处理,不存在则返回404    // handle 处理不同的url请求    // 处理request请求    function onRequest(req, res) {        // 使用url.parse()方法解析url        // 它会把url string转化为一个object        // 这样我们就可以很方便的获取url中的host、port、pathname等值了        var pathname = url.parse(req.url).pathname;        console.log('Request for ' + pathname + ' received.');        // 判断并处理不同url请求        // 后面介绍此方法        route(handle, pathname, res, req);    }    // 使用http.createSserver()方法创建http server    // 并传入onRequest()方法    // 然后使用listen()方法监听指定地址    http.createServer(onRequest).listen(port, host);    console.log('Server has started and listening on ' + host + ':' + port);}// 导出 start 方法exports.start = start;

router.js

var fs = require('fs');// 路由函数// 处理不同url的请求// 并返回相应内容function route(handle, pathname, res, req) {    console.log('About to route a request for ' + pathname);    // 判断此url是否存在特定处理函数    // 存在则调用handle处理    // 不存在则返回404页面    if (typeof handle[pathname] === 'function') {        // 后面介绍handle函数        handle[pathname](res, req);    } else {        console.log('No request handler found for ' + pathname);        // 读取404页面        // 所有页面都存放在view文件夹下        var content = fs.readFileSync('./views/404.html');        res.writeHead(404, { 'Content-Type': 'text/html' });        res.write(content);        res.end();    }}// 导出 route 方法exports.route = route;

requestHandlers.js

// 处理url请求var fs = require('fs');// home.html 主页function home(res) {    console.log('Request handler "home" was called.');    // 读取home.html文件    var content = fs.readFileSync('./views/home.html');    res.writeHead(200, { 'Content-Type': 'text/html' });    res.write(content);    res.end();}// about.html 关于页面function about(res) {    console.log('Request handler "about" was called.');    // 读取about.html文件    var content = fs.readFileSync('./views/about.html');    res.write(200, { 'Content-Type': 'text/html' });    res.write(content);    res.end();}// 导出页面处理函数exports.home = home;exports.about = about;

main.js

// 主程序// 引入server,router及requestHandlervar server = require('./server');var router = require('./router');var requestHandlers = require('./requestHandlers');// 保存url处理方法var handle = {};handle['/'] = requestHandlers.home;handle['/about'] = requestHandlers.about;// 启动http serverserver.start(router.route, handle);

在app文件夹中新建views文件夹,在views文件夹中,新建home.html文件、about.html文件和404.html文件

执行node main.js

访问http://127.0.0.1:8080,显示home.html页

访问http://127.0.0.1:8080/about,显示about.html页

访问http://127.0.0.1:8080/,的其他页面,显示404.html

 

转载地址:http://ifckx.baihongyu.com/

你可能感兴趣的文章
Lnmp 配置多 PHP 开发环境
查看>>
Centos7安装Docker镜像仓库Harbor1.5.3之https
查看>>
负载均衡群集之一LVS-DR
查看>>
大学生为什么要参加软考
查看>>
linux学习第一月测验
查看>>
今日新闻-2019智能家居@智能硬件博览会
查看>>
今日头条架构演进之路——高压下的架构演进专题
查看>>
零基础学习嵌入式 嵌入式底层开发和上层应用
查看>>
shell编程进阶篇
查看>>
Pixelmator Pro mac专为macOS设计,与macOS High Sierra无缝集成
查看>>
system表空间空间解决(ORA-00604 ORA-01653 ORA-02002)
查看>>
sed 对目录进行操作
查看>>
How to convert Windows 7 on MBR/BIOS to GPT/UEFI
查看>>
四则运算总结
查看>>
【翻译】MVC Music Store 教程-概述(三)
查看>>
直接插入排序===
查看>>
表格基础操作
查看>>
求空间一点到另外一点(如原点)的距离
查看>>
gitolite push fail solutions
查看>>
WIFI电源管理
查看>>