美文网首页
CommonJs 和 Nodejs 中自定义模块

CommonJs 和 Nodejs 中自定义模块

作者: super静_jingjing | 来源:发表于2018-10-24 16:16 被阅读0次

    JavaScript标准定了的API是为了构建基于浏览器的应用程序,并没有制定一个用于更广泛的应用程序的标准库。CommonJs规范的提出主要就是为了弥补当前JavaScript没有标准的缺陷。

    Nodejs的终极目标是提供类似Python,Rudy和Java语言的标准库,而不只是停留在小脚本程序阶段。CommonJs是模块化的标准,nodejs就是CommonJs模块化的实现。

    在 Node 中,模块分为两类,一类是核心模块,是node提供的;另一类是用户编写的,成为文件模块;
    》》核心模块 :HTTP 模块 、URL 模块、Fs 模块都是 nodejs 内置的核心模块,可以直接引入使用。
    》》文件模块:文件模块则是在运行时动态加载,这些模块需要我们自己定
    新建一个js,然后将改js中的内容exports,就可以在其他文件中引入使用

    // 定义一个 tools.js 的模块 //模块定义
    var tools = {
      sayHello: function() { 
        return 'hello NodeJS';
      },
      add: function(x, y) { 
        return x + y;
      } 
    };
    // 模块接口的暴露
    exports.sayHello = tools.sayHello; 
    exports.add = tools.add;
    

    在需要引入的js中require

    // 引入自定义的 tools.js 模块
    var tools= require('./tools');
    tools.sayHello(); //使用模块
    

    如果将模块放入的node_modules,引入可以写成

    var tools= require('tools');
    

    因为nodejs如果找不到该模块,就自动默认进入node_modules中去寻找。
    但是如果在tools之前有一个目录,比如目录结构变成node_modules/tools/tools.js,直接写成require('tools');,程序是找不到的,只能写成require('tools/tools');
    但是如果使用 package.json即可以解决;解决方式:
    在tools目录下使用命令 npm init --yes,会生成一个 package.json,内容大致如下:

    {
      "name": "tools",
      "version": "1.0.0",
      "description": "",
      "main": "tools.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    

    这时的导入可以直接写成require('tools');

    相关文章

      网友评论

          本文标题:CommonJs 和 Nodejs 中自定义模块

          本文链接:https://www.haomeiwen.com/subject/hlhxtqtx.html