zoukankan      html  css  js  c++  java
  • 模块

    1. 内置模块

    NodeJS中内置了很多模块,可以直接用require来进行引用。

    名字最好和模块的名字一样。

    var http = require("http");

    var qs = require("requrystring");

    内置模块的引用使用require函数,require表示引用的意思。

    2. 自定义模块

    每一个js文件就是一个模块。

    2.1 require谁就会运行谁

    同级目录中有两个文件  test.js 2.js

    test.js:

    require('./2.js');
    console.log('我是test.js文件里的语句')
     
    2.js
    console.log('我是2.js里的文件')
     
    运行text.js

    结论:require()谁,就会运行谁。

    注意点:

    require的文件中如果有异步语句,此时nodejs不会死等它结束,会返回执行主文件中的程序,如果文件读取完毕,执行回调函数。

    可以连续require

    如果循环引用  

    如果A引用BB引用A会发生什么?

    nodejs很智能,如果B重新引用了A,此时如同没有引用一样,会帮你自动抑制。

    test.js:

    require('./2.js');
    console.log('我是test.js文件里的语句')
     
    2.js
    require('./test.js')
    console.log('我是2.js里的文件')

    js文件天生是隔离作用域的

    test.js:

    require('./2.js');
    console.log('我是test.js文件里的语句.a的值是'+a)
     
    2.js
    var a=100
    console.log('我是2.js里的文件.a的值是'+a)
    程序报错
    在2.js中定义的a,不能再test.js中使用

    Node.js中,每个js文件是单独的作用域

     


    如果我们想在test..js中使用2.js定义的a

    可以使用exports.xx = xx的语法暴露

    test.js

    2.js

    运行test.js

    我们如果想要把变量或者函数向外暴露,此时可以使用exports.** = **向外暴露。

    此时引用这个模块的文件将用等号来接收,等号左边的变量将自动成为exports对象。

    使用module.exports暴露

    如果js文件中,仅仅向外暴露一个东西,

    使用exports.xx = xx很不方便

    此时可以使用 module.exports =xx的写法

    如果一个js文件要向外暴露多个变量、函数,此时exports.xx = xx;如果仅仅暴露一个东西,通常是构造函数,此时语法为module.exports = xx;

  • 相关阅读:
    为什么要有binary-to-text encoding?
    海量网络存储系统原理与设计(三)
    Java中的Inner Class (一)
    海量网络存储系统原理与设计(二)
    海量网络存储系统原理与设计(一)
    [JavaScript]顺序的异步执行
    [PAT]素因子分解(20)
    [PAT]求集合数据的均方差(15)
    [PAT]数列求和(20)
    【C-001】printf理解
  • 原文地址:https://www.cnblogs.com/kun666/p/9490947.html
Copyright © 2011-2022 走看看