zoukankan      html  css  js  c++  java
  • module.exports 和 exports,export 和export default的区别

    1、module.exports 

    module变量代表当前模块。这个变量是一个对象,module对象会创建一个叫exports的属性,这个属性的默认值是一个空的对象:

    module.exports = {};

    module.exports.Name="我是电脑";
    module.exports.Say=function(){
      console.log("我可以干任何事情");  
    }
    
    
    //上边这段代码就相当于一个对象
    
    var person={
      "Name":" 我是电脑""Say"    :function(){
               console.log("我可以干任何事情");  
            }
    }
    module.exports=person;

    使用方法如下:

    var req=require("./app.js");
    
    req.Name      //这个值是 "我是电脑"
    req.Say()      //这个是直接调用Say方法,打印出来 "我可以干任何事情"

    2、exports 与 module.exports的关系

    Node为每个模块提供一个exports变量,指向module.exports。可以通俗的理解为:

    var exports = module.exports;
    
    //两个是相等的关系,但又不是绝对相当的关系
    例如:
    1.module.exports可以直接导出一个匿名函数或者一个值
    module.exports=function(){
      var a="Hello World"  
      return   a;
    }
    但是exports是不可以的,因为这样等于切断了exports与module.exports的联系。
    exports=function(){           //这样写法是错误的
      var a="Hello World"        //这样写法是错误的
      return   a;                //这样写法是错误的
    }                            //这样写法是错误的

    3、export和export default的区别

    export是es6引出的语法,用于导出模块中的变量,对象,函数,类。对应的导入关键字是import。

    二者的区别有以下几点:

    • export default在一个模块中只能有一个,当然也可以没有。export在一个模块中可以有多个。
    • export default的对象、变量、函数、类,可以没有名字。export的必须有名字。
    • export default对应的import和export有所区别
    1.export写法
    //./aap.js
    var name="我是电脑"var say=function(){
     console.log("我可以干很多事");
    }
    
    export {name,say};
    
    //也可以直接一个一个的export但是必须得有名字
    export const a=1;
    export function data(){
      return data;
    }
    
    
    //其他页面引入时必须这样
    import {name,say} from "./app.js"
    
    2.export default
    //app.js
    //可以没有函数名字
    export default function(){
      return data;
    }
    //这里export不能这样导出
    
    export default const a=12//应该这样导出
    const a=12;
    
    export default a
     
     
    
    //其他页面引入时必须这样
    import data from "./app.js"
  • 相关阅读:
    如何在一个控件上同时实现单触和多触事件
    看看iOS 5.0 beta 6都有哪些变化吧
    转,net实现下载
    转检测到潜在危险
    如何分析已有项目如何能够得到最快最大的提升???
    转Unity 入门
    近段总结
    转,net几个热点问题
    dll动态链接库
    转使用NUnit在.Net编程中进行单元测试
  • 原文地址:https://www.cnblogs.com/sure2016/p/10511879.html
Copyright © 2011-2022 走看看