• 模块对象


    1、核心模块与文件模块

    nodejs是一个js运行环境,是一个平台。nodejs基于操作系统,封装了一些功能,http、tcp、udp,i/o模块、path、fs、stream等等。
    以上这些通过nodejs内置的模块,它们就称为核心模块。http、fs、path等

    文件模块:只要咱们写一个js文件,每一个文件都是模块。
    注:核心模块是nodejs内置的一些功能模块,文件模块是开发人员编写的js文件

    2、从模块外部访问模块内部的成员


    在nodejs中,一个文件又被称为一个模块。从一个模块访问外部模块中变量或方法
    先创建了两个模块,demo1,demo2
    在demo1中声明的变量str,方法add()
    在demo2中没有权限访问,如果要访问到的话,就要把变量或方法做成全局属性
    用到global来把str和add函数变成全局属性
    global.str = "声明变量";
    global.add = function(){console.log('函数表达式');}
    在demo2中就可以访问到str和add().

     

    2.1、使用exports对象


    // exports 这个对象的属性 是可以将模块内的方法、变量等抛出,并且在其它引入的模块中可见(可使用)
    // demo1.js
    exports.str = "hello";
    exports.hello = function(){
       console.log('你好世界');
    }

    // 在demo2.js中引入demo1.js文件 可以使用demo1中的变量和方法
    var demo1 = require('./demo1');
    demo1.hello();
    demo1.str; // 这里是str变量的调用 需要console.log才能看到

     

    2.2、将模块定义为类


    // class是在ECMAScript2015版本之后加入的概念 es6
    // class 关键字:确定一个类型 Student以类概念的存在
    class Student {
       // 构造函数 默认存在一个无参的构造函数
       constructor(n,a){
           this.name = n;
           this.age = a;
      }
       // 函数表达式
       add = function(){
           console.log('add');
      }
    }

    module.exports = Student;

     

    2.3、将模块定义为类变量和类函数


    // 返回一个JSON Object
    var app = {
    name: 'app',
    version: '1.0.0',
    sayName: function(name){
    console.log(this.name);
    }
    }
    module.exports = app;
    // 调用模块
    var app = require('./app.js');
    app.sayName('hello');//hello

    // 定义变量

    // 定义函数
    var func1 = function() {
      console.log("func1");
    };

    var func2 = function() {
      console.log("func2");
    };
     
    exports.function1 = func1;
    exports.function2 = func2;
    // 函数调用
    var functions = require("./functions");
    functions.function1();
    functions.function2();

     

    3、模块对象的属性


    什么是模块对象?
    模块:核心模块(nodejs内置),第三方模块(第三方组织发布的),自定义模块(开发人员)
    在nodejs平台上,每一个文件就可以称为一个模块。
    定义了一个modules它在模块内就是一个模块对象。每一个模块内斗内置了一个对象就是module(模块)
    每个模块对象都代表当前模块。使用module.exports时才能把整个的模块文件作为一个对象抛出。
    模块对象的属性:exports就是module.exports 定义的属性。

     

    注:module.exports 和exports的区别

    1. module.exports 初始值为一个空对象 {}

    2. exports 是指向的 module.exports 的引用

    3. require() 返回的是 module.exports 而不是 exports

     

    4、npm包管理工具


    什么是npm?
    node package management:node包管理工具 (主要管理模块)
    模块:核心模块、文件模块
    文件模块:自定义模块、 第三方模块
    npm 就是用来管理和安装第三方模块的

    npm命令详解
    1、npm -v // v:version(版本)
    npm -v 查看当前npm的版本号
    2、安装模块
    命令: npm install model name (模块名称)
    比如:安装jquery模块
    npm install jquery
    查看 npm中模块的清单命令
    npm list 这个命令会列出所有安装的第三方模块

    3、卸载模块 uninstall:卸载
    命令: npm uninstall modelname (模块名称)
    卸载jquery模块  
    npm uninstall jquery

    4、npm清单指令
    npm list 把当前安装的所有第三方模块列出

    5、查看给定模块的信息
    指令:npm info modelName(模块名称)
    比如:查看jquery的信息
    npm info jquery

    6、指定模块版本号安装
    指令: npm install modelName@版本号
    比如: npm install jquery@1.12.1

    5、npm发布流程


    1、注册npm账号
    2、登录npm账号
    3、创建工程项目包 npm init 包名称 -y
    4、发布程序包到npm
    5、执行命令 npm publish

    6、安装淘宝镜像


    npm 中的淘宝镜像 cnpm C:中国china
    镜像:把国外一些数据放到国内服务器上。
    cnpm就是把npm平台上的模块等功能文件,都放到淘宝的服务器上。国内用户在访问的时候就方便了。
    npm install 模块,
    cnpm把npm的功能都复制了一遍,npm的指令在cnpm上都可以使用。
    注:使用 设置淘宝镜像地址

    安装cnpm
    通过npm指令安装: npm install cnpm -g --registry=https://registry.npm.taobao.org;

     

    package.json文件


    package.json文件作用
    1、用来描述工程项目的信息
    2、描述第三方模块之间的依赖

    注:1、通过npm init指令来创建package.json  
    2、快速创建package.json文件的指令 npm init -y
    3、给package.json文件增加模块依赖的指令
    npm install 模块名称 --save(将模块增加到当前package.json)

     

    7、组织与管理模块


    var http = require('http');
    // 管理模块 : 第三方模块 比如jquery s-date这样的开源模块
    var jq = require('jquery');
    var date = require('s-date');

    // 三种方式可以加载
    // 1、从node-modules文件夹下面加载
    // 2、从package.json文件的目录中加载
    // 3、从全局目录中加载(node配置的环境变量)
    // 注:建议把所有的第三方模块,都安装到本地文件夹的node-modules里面

     

    7.1、从node-modules目录中加载模块


    如果传递给 require() 的模块标识符不是一个核心模块,也没有以 '/' 、 '../' 或 './' 开头,则 Node.js 会从当前模块的父目录开始,尝试从它的 /node_modules 目录里加载模块。
    如果还是没有找到,则移动到再上一层父目录,直到文件系统的根目录。

    例子,如果在 '/home/ry/projects/foo.js' 文件里调用了 require('bar.js'),则 Node.js 会按以下顺序查找:
      /home/ry/projects/node_modules/bar.js
      /home/ry/node_modules/bar.js
      /home/node_modules/bar.js
      /node_modules/bar.js

    这使得程序本地化它们的依赖,避免它们产生冲突。

    7.2、使用目录加载模块


    可以把程序和库放到一个单独的目录,然后提供一个单一的入口来指向它。 把目录递给 require() 作为一个参数,有三种方式。

    第一种方式是在根目录下创建一个 package.json 文件,并指定一个 main 模块。 例子, package.json 文件类似:

    { "name" : "some-library",
    "main" : "./lib/some-library.js" }

    7.3、从全局目录中加载模块


    如果 NODE_PATH 环境变量被设为一个以冒号分割的绝对路径列表,则当在其他地方找不到模块时 Node.js 会搜索这些路径。

    在 Windows 系统中, NODE_PATH 是以分号(;)间隔的。
    强烈建议将所有的依赖放在本地的 node_modules 目录。 这样将会更快地加载,且更可靠。

     

  • 相关阅读:
    Dapr牵手.NET学习笔记:状态管理之dockercompose发布
    Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用
    Dapr牵手.NET学习笔记:状态管理进阶(一)
    ORACLE EBS 点滴积累之AP 应付
    SpringMVC框架搭建(idea2021.3.2) 操作数据库
    Linux判断服务进程存在,存在则重启,不存在则启动
    C++ thread lambda expression contains multiple function and pass argument
    C++ thread pass multiple functions and arguments via lambda expression
    C++ multi thread
    C++ bubble sort
  • 原文地址:https://www.cnblogs.com/0428mm/p/12069530.html
Copyright © 2020-2023  润新知