nodejs 有require方法吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 有require方法吗相关的知识,希望对你有一定的参考价值。

有的
require函数详解

路径

相对路径之当前目录:./xxx/xxx.js 或 ./xxx/xxx。
相对路径之上级目录:../xxx/xxx.js 或 ../xxx/xxx。
绝对路径:F:/xxx/xxx.js 或 /xxx/xxx.js 或 /xxx/xxx。

require函数语法

require(路径.扩展名):

如果 路径.扩展名 存在

执行加载 并 返回

否则

抛出异常

require(路径):

如果 路径.js 存在

执行加载 并 返回

如果 路径.node 存在

执行加载 并 返回

如果 路径/package.json 存在

执行加载(package.json 中 main属性对应的路径) 并 返回

如果 路径/index.js 存在

执行加载 并 返回

如果 路径/index.node 存在

执行加载 并 返回

抛出异常

require(模块名字):

如果 模块名字是系统模块

执行加载 并 返回

如果 require(./node_modules/模块名字) 能加载到模块 //参考require(路径)的介绍

执行加载 并 返回

如果 require(../node_modules/模块名字) 能加载到模块 //参考require(路径)的介绍

执行加载 并 返回

沿着目录向上逐级执行require(上级目录/node_modules/模块名字),如果能加载到模块 //参考require(路径)的介绍

执行加载 并 返回

抛出异常
参考技术A 有的
require函数详解

路径

相对路径之当前目录:./xxx/xxx.js 或 ./xxx/xxx。
相对路径之上级目录:../xxx/xxx.js 或 ../xxx/xxx。
绝对路径:F:/xxx/xxx.js 或 /xxx/xxx.js 或 /xxx/xxx。

require函数语法

require(路径.扩展名):

如果 路径.扩展名 存在

执行加载 并 返回

在NodeJS中将许多文件中的JSON对象插入MongoDB的最有效方法

我正在寻找将JSON对象从文件导入MongoDB集合的最有效方法。

文件看起来像这样:

[ { ... }, { ... } ]

每个文件大约有200个对象,有100个文件,总计20.000个对象。我尝试了很多方法,很多图书馆......

我目前的工作范例是:

const fs = require('fs');
const JSONStream = require('JSONStream');
const es = require('event-stream');
const MongoClient = require('mongodb').MongoClient;
const glob = require('glob');

const url = 'mongodb://localhost:27017/inventory';

console.time('import');

MongoClient.connect(url, function(err, database) {
    const db = database.db('inventory');
    const collection = db.collection('storage');

    let importer = [];

    glob('../data/*.json', function (error, files) {
        files.forEach(function (filename) {
            importer.push(new Promise(function (resolve) {
                fs.createReadStream(filename).pipe(JSONStream.parse('*')).pipe(es.map(function (document) {
                    collection.insertOne(document).then(resolve);
                }));
            }));
        });

        Promise.all(importer).then(function () {
            console.timeEnd('import');
        });
    });
});

在我的本地机器上平均需要20s(20074.834ms)。好吧,20多岁是好的,但我想改善这里的表现。

答案

以及这个代码没有完全优化,我不在这里做任何错误处理,但它假设减少插入的时间。(你的主要瓶颈)

const fs = require('fs');
const JSONStream = require('JSONStream');
const es = require('event-stream');
const MongoClient = require('mongodb').MongoClient;
const glob = require('glob');

const url = 'mongodb://localhost:27017/inventory';

console.time('import');

MongoClient.connect(url, function(err, database) {
    const db = database.db('inventory');
    const collection = db.collection('storage');

    let importer = [];

    glob('../data/*.json', function (error, files) {
        files.forEach(function (filename) {
            const documents = JSON.parse(fs.readFileSync(filename, 'utf8'));
            importer.push(collection.insertMany(documents),{w:0,ordered:false});
          });
        });

        Promise.all(importer).then(function () {
            console.timeEnd('import');
        });
    });
});

以上是关于nodejs 有require方法吗的主要内容,如果未能解决你的问题,请参考以下文章

无法在nodejs中导入带有require()的模块

NodeJs模块加载流程分析(require)

require.js扫盲版

有啥方法可以自动输出 requirements.txt 吗?

每日灵魂一问-Nodejs文件查找的优先级&Require 方法的文件查找策略?

为啥 nodejs 可能找不到“require”?