首页>>前端>>Node->nodejs引入模块?

nodejs引入模块?

时间:2023-11-30 本站 点击:0

nodejs如何引入node_global文件下的模块

在Node.js中,可以使用require函数来引入模块。Node.js中的require函数是用来加载模块的函数,它会按照搜索规则,搜索模块的文件路径,并返回模块的导出对象。

要引入nodeglobal文件夹下的模块,首先需要使用fs模块来读取nodeglobal文件夹下的文件列表,以查找模块所在的路径。

然后,可以使用require函数来引入模块,例如:

const myModule = require('nodeglobal/myModule.js');

这样一来,就可以引入nodeglobal文件夹下的模块了。

另外,也可以使用Node.js的path模块来构造模块文件的完整路径,然后再使用require函数来引入模块。例如:

const path = require('path');

const myModule = require(path.join(__dirname, 'nodeglobal', 'myModule.js'));

这样一来,就可以正确的引入nodeglobal文件夹下的模块了。

nodeJs初学--Nodejs中的querystring(查询字符串)模块

1、querystring 模块提供用于解析和格式化 URL 查询字符串的实用工具

       直接在nodeJs环境中引入:

      const  querystring=require('querystring');

    1.0 ------ 基础:parse  字符串转对象

     默认是以   =  分割 键值对

         例如 字符串 let string ='name=chenchengposswer=123456sex=0';

         let obj = qs.parse(string);

         输出对象 如图

    1.1 ------ 拓展 如果不是分割键值对的不是     =  是其他的符号。

例如 字符串  以 # - 分割键值对的话

 let string ='name#chencheng-posswer#123456-sex#0';

 let obj = qs.parse(string,'-','#');

                             第一个参数 字符串

                             第二个参数 分割 键值对 

                             第三个参数 分割 键值

          2.0 ------ 基础:stringify  对象转字符串

   例如: let obj = {name:'cc',age:'30',sex:'0'}

   let string = qs.stringify(obj);  

   默认以 = 拼接    输出:'name=ccage=30sex=0';

       2.1 ------ 拓展:stringify  不以默认分隔符分割

     let string = qs.stringify(obj,'^','?');

    输出:  'name?cc^age?30^sex?0';

 

常用NodeJS中的模块

五大核心模块:

http----开启一个Web服务,给浏览器提供服务

url----给浏览器发送请求用,还可以传递参数(GET)

querystring----处理浏览器通过GET/POST发送过来的参数

path----查找文件的路径

fs----在服务器端读取文件用的

自定义模块:

一个.js文件就可以看成一个模块,如果我们想把模块中定义的变量,方法,对象给外面的js使用,就必须提供module将我们需要给外面用的东西,导出去。

导入模块用 require,在模块中导出 使用module.exports。

如何加载Nodejs模块

nodejs的几种模块加载方式

一.直接在exports对象中添加方法

1. 首先创建一个模块(module.js)module.js

exports.One = function(){

console.log('first module');

};

2.load.jsvar module =require('./module');

module.One();

这样我们就可以在引入了该模块后,返回一个exports对象,这里是指module对象,其实都只是两个引用或者句柄,只是都指向了同一个资源,在load.js里,module的名字可以是任意取的,因为它仅仅是指向require('./module');返回后的一个实例对象的引用,在load.js文件里的module和在module.js里的exports对象是同一个东西.因此上述两个文件可以用一个文件来表示:exports.One = function(){

console.log('first module');

};

exports.One();

其运行结果是一致的,这里我们可以很清晰的看到,我们在使用require('./xxxx')后其实返回的总是在 xxxx.js文件中的exports对象的引用,这个引用的名字我们可以任意取,但是为了规范我们还是最好取符号某些非标准规定(后面说道),但是这样会有不妥的地方,因为它是始终指向exports的实例对象,也就是说,我们虽然有了这个模块,但是这个模块我们只能使用一次,这取决于rquire('./module')只会加在一次该模块.比如我们修改上述代码,

module.js

var name ;

exports.setName = function(oName){

name = oName;

};

exports.getName = function(){

console.log(name);

};

load.jsvar module1 = require('./module');

module1.setName("felayman1");

module1.getName();

var module2 = require('./module');

module2.setName("felayman2");

module2.getName();

module1.getName();

我们可以看到,虽然我们使用了两次require('./module');,但是当我们修改module2后,module1的内容也被修改,这恰恰说明了,module1和module2是指向的同一个对象.有时候这并不影响我们的程序,但是如果我们的module是Person呢?我们希望我们require('./person')后返回的是不同的对象.因此,这种方式是有缺陷的,尽管很方便,这种方式在大部分nodejs的模块中都是很常见,比如fs模块,http模块等.

二.将模块中的函数挂载到exports对象的属性上

person.js

function Person{

var name;

this.setName = function(theName){

name = theName;

};

this.sayHello = function(){

console.log('Hello',name);

};

}

exports.Person = Person;

load.js

var Person = require('./person').Person;

var person1 = new Person();

person1.setName("felayman1");

person1.sayHello();

var person2 = new Person();

person2.setName("felayman2");

person2.sayHello();

person1.sayHello();

这样我们可以看到,我们就可以引入一个函数了,我们把在person.js文件中的Person函数设置为eports对象的一个属性,我们只需要在load.js文件中引入该属性,就可以获取到多个该函数的实例,在nodejs中的EventEmitter就是基于这种方式,但是这样我们总是在使用 require('./person').Person;这样的写法有点太复杂,因此nodejs允许我们使用其他更简洁的方式,利用全局变量--module,这样我们在其他文件中引入其他模块的时候,就更方便了.

三.利用全局变量module

person.js

function Person(){

var name;

this.setName = function(theName){

name = theName;

};

this.sayHello = function(){

console.log('Hello',name);

};

}

// exports.Person = Person;

module.exports = Person;

load.jsvar Person = require('./person');

var person1 = new Person();

person1.setName("felayman1");

person1.sayHello();

var person2 = new Person();

person2.setName("felayman2");

person2.sayHello();

person1.sayHello();

这样一修改,我们就在使用require函数的时候就方便了,如果觉得这里难以理解,我们可以把两个文件里语法放到一起:var Person = require('./person');

module.exports = Person;

这样,我们就可以看出,其实就是这样var Person = Person.

因为上述我们都已经说过,require('./person')其实就是module.exports 对象的,这里的module我们不用太在意,就跟javascript中的window一样,是一个全局变量,即 module.exports =exports就类似于window.alert() =alert()差不多的效果,这样我们就能看出,我们再次使用require('./person')的时候其实就是导入了我们所需要的exports对象的属性函数模板了,这样我们也可以多次实例化我们所需要的对象了.这种方式是综合了前两种的方法,因此也是官方推荐的使用方法.

怎么让nodejs能引用到全局模块

安装模块的时候要加-g确保模块被安装到全局了。

在nodejs文件里面直接require(模块名称)就可以了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Node/4200.html