美文网首页我爱编程
<Node.js>总结:知识点

<Node.js>总结:知识点

作者: 玉圣 | 来源:发表于2018-06-11 14:37 被阅读40次

一、基础

1、模块化

1.1、说明:
  • 在Node.js中,一个模块中定义的变量,函数等都只能在这个文件内部有效,当需要从此JS文件外部引入这些变量、函数时,必须使用exports进行暴露,使用require引用

示例:

//test.js
let str = "hello world";
exports.str = str;

exports.fn = (...nums)=> {
    let sum = 0;
    for(let i=0; i<nums.length; i++) {
        sum += nums[i];
    }
    return sum;
};

//==================
//test1.js
let ff = require("./test");
console.log(ff.str);
let sum = ff.fn(1, 2, 5);
console.log(sum);
打印结果
1.2、exports和module.exports的异同
  • 值类型和引用类型
    exports为值类型,module.exports为引用类型
  • 区别:
    • exports只能使用“.”语法来向外暴露内部变量
    • module.exports既可以使用“.”语法,也可以直接复制一个对象
      module.exports.xxx = xxx;
      module.exports = {xxx: yyy}
  • module.exports包含了exports的所有功能,因为module.exports等于的就是exports(从源码中可以看出)

示例1:

//test20.js
exports = {
    str: "zs",
    fn: (...nums)=> {
        let sum = 0;
        for(let i=0; i<nums.length; i++) {
            sum += nums[i];
        }
        return sum;
    },
    obj: {name: "ls", age: 15}

};
//===================
//test21.js
let test = require("./test20");
console.log(test);  //打印结果为:{}

示例2

//test20.js
module.exports = {
    str: "zs",
    fn: (...nums)=> {
        let sum = 0;
        for(let i=0; i<nums.length; i++) {
            sum += nums[i];
        }
        return sum;
    },
    obj: {name: "ls", age: 15}

};
//===================
//test21.js
let test = require("./test20");
console.log(test);  //打印结果为:{ str: 'zs', fn: [Function: fn], obj: { name: 'ls', age: 15 } }
1.3、exports为何不能像module.exports一样通过直接赋值的操作?
  • exports和module都是global中的属性,只不过module是一个对象,而exports是一个变量
  • exports和module.exports指向的是同一地址,经过验证,exports和module.exports是相等的,都是{}
  • exports是值类型,而module.exports则是引用类型,module就是一个对象,其中有一个名为exports的属性变量

相关文章

  • <Node.js>总结:知识点

    一、基础 1、模块化 1.1、说明: 在Node.js中,一个模块中定义的变量,函数等都只能在这个文件内部有效,当...

  • <jQuery>总结:知识点

    一、jQuery基础和原理: 1、jQuery的本质是一个闭包: 闭包:一种立即执行的函数 说明:方式一和方式二的...

  • <Bootstrap>总结:知识点

    一、Bootstrap的基础 1、简介和集成使用 1.1、简介: Bootstrap是一个神奇的前端UI框架 是t...

  • <JavaScript>总结:知识点

    一、网页中的相关属性和参数使用: 1、获取的当前网页的路径: 2、获取网页的域名: 3、hash:需求:如果页面中...

  • <CSS>总结:知识点

    一、引入: 1、站点图标(logo)的引入 在HTML中的 标签中,通过link进行引入 快捷方式:link:f...

  • <Ajax>总结:知识点

    一、Ajax的基础: 1、使用步骤 1.1、步骤: 创建一个异步对象 设置请求方式和请求地址 发送请求 监听状态的...

  • iOS知识点总结<一>

    1、堆和栈的区别 (1)堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存(2)栈空间的内存有系统自动分...

  • iOS知识点总结<四>

    1、请简述什么是主键、什么是外键 主键: 一张表(关系)的一个列(睡醒)或多个列可以作为主键,但是前提是让这个列作...

  • iOS知识点总结<二>

    1、UITableView复用机制: UITableView通过重用单元格来达到节省内 存的目的:通过为每...

  • Read a story

    This is a lion. lt's big. lt's strong. lt has big teeth. ...

网友评论

    本文标题:<Node.js>总结:知识点

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