Web-NodeJs模块

NodeJS 中的模块

现在将探讨如何在 NodeJS 中使用模块。

        NodeJS 中的模块可以通过使用 Node 的 require() 函数来完成。使用 require(),我们可以执行以下操作:

  • 我们可以加载属于 Node.js 的模块。其中包括HTTP模块,它允许我们制作Web服务器,以及fs模块,它允许我们访问计算机的文件系统
  • 同样,我们可以使用 require() 加载第三方库,例如 Express,这将减少我们必须编写的代码量。使用预先编写的库来解决复杂问题通常很有用,因此我们需要做的就是实现 require() 函数并调用相关方法。
  • 此外,我们甚至可以使用 require() 方法来要求我们自己的代码。通过使用这种技术,我们将能够将我们的应用程序分成多个较小的文件,这对于开发实际应用程序至关重要。

        require() 的用例可以在下面名为文件系统 (fs) 模块的部分中提供。

        有时,您的应用程序可能需要读取文件或目录的位置,为此,您可以使用以下命令

// to access the current directory
console.log(__dirname);

// to access the current file path
console.log(__filename);

        在Node.js中,require()函数用于加载模块,并将模块的内容导入到当前运行的脚本中。它接受一个字符串参数,该参数指定要加载的模块的路径。

        require()函数有以下几种用法:

        1. 加载Node.js核心模块: 当传递给require()的是一个Node.js核心模块的名称时,Node.js会查找该模块并加载它。例如,要加载fs模块(用于文件操作),可以使用require('fs')。

        2. 加载第三方模块: 当传递给require()的是一个第三方模块的名称时,Node.js会在当前项目的node_modules文件夹中查找该模块并加载它。例如,要加载Express框架模块,可以使用require('express')。

        3. 加载自定义模块: 当传递给require()的是一个相对或绝对路径时,Node.js会根据路径加载自定义模块。如果是相对路径,Node.js会根据当前脚本的位置来解析路径。例如,要加载位于当前脚本同级目录下的myModule.js模块,可以使用require('./myModule')。

        4. 加载JSON文件: 当传递给require()的是一个以".json"结尾的文件路径时,Node.js会自动解析并导入JSON文件。例如,要加载位于当前脚本同级目录下的config.json文件,可以使用require('./config.json')。 注意,require()函数在首次执行时会缓存加载的模块,以便在后续的调用中直接使用缓存的模块,而不会再次加载。如果要重新加载模块,可以使用delete关键字删除缓存的模块对象,然后再次调用require()函数。

Http 和 https 模块

        Node.js 提供了一个内置模块 HTTP,可用于通过 HTTP 传输数据。您必须在节点中使用 http 模块才能使用 HTTP 服务器。使用 HTTP 模块,客户端能够访问服务器的端口并接收响应。

var http = require('http');

        但是,如果我们需要一个安全的http模块,那么我们将不得不要求https模块

var https = require('https');

        下面是示例:

// To create a server
http.createServer((request, response)=>{
   
    // Sends a chunk of the response body
    response.write('Hello World!');
   
    // Signals the server that all of
    // the response headers and body 
    // have been sent
  response.end();
})
.listen(3060); // Server listening on port 3060

Readline模块

        Readline 模块允许用户一次一行地从可读流中读取数据(例如 process.stdin)。下面的代码演示了读取行模块。

var readline = require('readline');

var ask = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

ask.question(">>What's the year?  ", answer => {
  console.log(`Its `+answer);
  ask.close();
});

        Readline 接口是通过调用 createInterface() 并至少传递可读和可写流来创建的。输入由 process.stdin(标准输入流)提供,输出由 process.stdout 提供。

        函数 question() 是发布一个问题,然后提供一个回调函数来处理响应。使用函数 close() 关闭接口。

File System (fs) 模块

        接下来,我们将讨论文件系统 (fs) 模块,并完成创建文件并将其添加到系统的过程。

        使用 fs 模块,用户可以使用与 POSIX 兼容的方法与文件系统进行交互。可移植操作系统接口 (POSIX) 是一组基于 Unix 操作系统的标准操作系统接口。

        fs 模块为异步文件操作提供 appendFile() 函数,或为同步文件操作提供 appendFileSync() 函数。

        appendFile() 函数的语法是

fs.appendFile(filepath, data, options, callback_function);

        回调函数是必需的,并在成功完成数据追加时调用。

  • filepath是一个字符串,用于指定文件的路径,并且是必需的
  • data 是您附加到文件的数据,并且是必需的
  • options是指定编码/模式/标志,它是可选的

        创建一个新文件:append.js 和 file.txt 并将它们放在同一个文件夹中。

        在追加.js中,包括以下代码

const fs = require('fs');
const data = "\nThis data is for appending.";
 
fs.appendFile('file.txt',data, 'utf8',
    // callback function
    function(err) {     
        if (err) throw err;
        // if no error
        console.log("Successful")
});

        fs 模块包含其他函数,如 open() 和 writeFile()。有关更多练习,您可以参考以下资源。

Operating System (os) 模块

        OS 模块包含有关计算机操作系统的信息,例如操作系统的名称和当前用户的名称。

        操作系统模块的语法:

const os = require('os');

        有一些专有和方法在OS模块(如userInfo())中访问有关当前用户的信息。请参阅下面的代码以访问用户名的扣留。

const os = require('os');
const fs = require('fs');

var user = os.userInfo();

var data = "\hello " ; 

fs.appendFile('file.txt',data + user.username + "\n",'utf8',
    // callback function
    function(err) {     
        if (err) throw err;
        // if no error
        console.log("Successful")
});

Path 模块

        在访问文件系统并与之交互方面,path 模块提供了各种有用的功能。

var path = require('path');

        根据运行 Node.js 应用程序的操作系统,node:path 模块在默认情况下以不同的方式运行。例如,在 Windows 操作系统上运行时,node:path 模块假定正在使用 Windows 样式的路径。为了在任何操作系统上使用 Windows 文件路径时获得一致的结果,请使用 path.win32

        以下是路径模块的一些有用方法:

path.basename(path):此方法返回路径的最后一段。

path.dirname(path): 此方法返回特定路径的目录名称。

path.extname(path): 此方法返回 的路径扩展名。(点)字符到路径最后一部分中字符串的末尾。

path.isAbsolute(path):此方法确定路径是否为绝对路径

var path = require('path');
var filename = path.basename('httpserver/server.js');
var dirname = path.dirname('httpserver/server.js');
var extension_name = path.extname('httpserver/server.js');
var abs_path = path.isAbsolute('httpserver/server.js');

console.log(filename);
console.log(dirname);
console.log(extension_name);
console.log(abs_path);

URL 模块

        使用 URL 模块,将网址划分为可读块。

var url = require('url');

        让我们看一个将网址拆分为可读部分的示例:

var url = require('url');
var adr = 'http://localhost:8080/default.htm?year=2017&month=february';
var q = url.parse(adr, true);

console.log(q.host); //returns 'localhost:8080'
console.log(q.pathname); //returns '/default.htm'
console.log(q.search); //returns '?year=2017&month=february'

var qdata = q.query; //returns an object: { year: 2017, month: 'february' }
console.log(qdata.month); //returns 'february'
console.log(qdata.year); //returns '2017'

Querystring 模块

        本模块的目的是提供用于解析和格式化 URL 查询字符串的实用程序。

var querystring = require('querystring');

        让我们看一个示例,将查询字符串解析为对象,并提取 year 属性:

var q = querystring.parse('year=2017&month=february');
console.log(q.year);
console.log(q.month);

猜你喜欢

转载自blog.csdn.net/qq_54813250/article/details/133416381