Node.js基础知识小结
什么是Node.js?
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让JavaScript在后端服务器端运行。它的最大特点是采用非阻塞方式,而传统的服务器都使用阻塞模式,也就是一个请求一个请求地处理,如果请求很多,性能会急剧下降。Node.js采用事件驱动、非阻塞I/O的模型,使得它非常适合开发高并发、高性能的网络应用程序。
安装Node.js
在Node.js官网上下载对应的操作系统的安装包。安装步骤简单,可以按照提示一步一步进行安装即可。
Node.js模块化编程
在Node.js中,每个js文件都被看作是一个单独的模块,都拥有自己的作用域,不能与其他模块共享定义的变量和函数,只有通过exports对象公开模块的接口,才能与其他模块进行交互。下面是一个模块的示例代码:
// 定义模块
var name = 'Tom';
exports.sayHello = function(){
console.log("Hello, " + name);
}
// 使用模块
var myModule = require('./my-module.js');
myModule.sayHello();
以上代码中,exports对象将模块的sayHello方法公开出去,并可以通过require方法引用该模块。
Node.js的异步I/O
Node.js是为了处理I/O密集型网络应用而设计的,使用异步I/O和事件驱动模型可以大大提高并发处理能力。Node.js的异步I/O模型可以通过以下代码演示:
const fs = require('fs');
fs.readFile('/path/to/file', function(err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
在Node.js中,fs.readFile是以非阻塞模式工作的,当文件读取完成后,系统将调用回调函数,并将读取的数据作为参数传递进来。
Node.js的web框架
虽然Node.js本身只是一个运行时环境,但是通过各种第三方模块,可以实现完整的web框架。以下是一些Node.js的web框架:
- Express: Express是Node.js最流行的web框架之一,它提供了完整、灵活的HTTP请求和响应,并且具有强大的路由功能。
- Koa: Koa是一个新一代Web框架,由Express团队开发,使用ES6+的语法,通过koa中间件机制优化了异步异常处理。
- Hapi: Hapi是一款用于构建大型和可扩展的Web应用程序的框架,它有强大的插件系统,支持多种插件,如路由、缓存、验证等。
示例说明
示例一:
下面是一个Node.js编写的简单的web服务,它实现了一个返回“Hello World”字符串的GET请求响应。这里使用了Express框架。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
});
运行这个简单的程序,可以通过http://localhost:3000来访问它。
示例二:
下面是一个Node.js编写的计算π的程序,使用了node-biginteger第三方库,它可以计算任意精度的π值,计算的结果也可以输出到文件中。
const fs = require('fs');
const bigInt = require("big-integer");
function calcPiDigits(n) {
let start = new Date().getTime();
n = parseInt(n);
let x1 = bigInt(4).multiply(calculatePi(n - 1, 1));
let x2 = bigInt(2).multiply(calculatePi(n - 1, 2));
let x3 = calculatePi(n - 1, 3);
let x4 = calculatePi(n - 1, 4);
let result = x1.minus(x2).minus(x3).minus(x4);
let end = new Date().getTime();
console.log("calcPiDigits time: ", (end - start) / 1000, "s");
return result;
}
function calculatePi(n, k) {
let s = bigInt(0);
for (let i = 0; i < n; i++) {
s = s.add(bigInt(-1).pow(i).multiply(bigInt(k).pow(2 * i + 1)).divide(2 * i + 1));
}
return s;
}
let digits = 1000;
let pi = calcPiDigits(digits);
console.log(pi);
fs.writeFile("pi.txt", pi.toString(), function (err) {
if (err) {
console.log("Write file failed: ", err);
} else {
console.log("Write file success.");
}
});
在以上示例代码中,我们计算了1000位π的精度,并且将结果保存到了pi.txt文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js基础知识小结 - Python技术站