欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

node里exports的用法

node里exports的用法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chijiajing/article/details/83147965

目录

共享变量

共享方法

共享构造

共享类


exports可以共享方法、变量、构造、类。
exports的本质是一个数组,访问域是共有的。

  1. //打印一下exports
  2. console.log(exports);
  3. //结果是一个空数组

共享变量

exportDemo.js(被引用的)

  1. //打印一下exports
  2. console.log(exports);
  3. //结果是一个空数组
  4. //共享变量
  5. var aa=123;
  6. exports.aa=aa;
  7. //打印的结果是一个键值对关系的数组{aa:123}
  8. console.log(exports);

exportsUse.js(引用方)

  1. //导入被引用的js文件
  2. var exportsDemo=require("./exportsDemo.js");
  3. //直接调用aa,这里的aa对应的是exports对应的key
  4. console.log(exportsDemo.aa);

共享方法

exportDemo.js(被引用的)

  1. //打印一下exports
  2. console.log(exports);
  3. //结果是一个空数组
  4. //共享方法
  5. function aa(num1,num2){
  6. console.log("被共享的方法哦~");
  7. return (num1+num2);
  8. }
  9. //注意共享方法不能有小括号(哪怕是有参方法),一但有了括号就会根据return的内容直接返回对应的值
  10. exports.aa=aa;
  11. console.log(exports);
  12. //打印结果: {aa:[Function:aa]}
  13. //若加了括号
  14. exports.bb=aa();
  15. console.log(exports);
  16. //打印结果:{aa:[Function:aa],bb:NaN}

exportsUse.js(引用方)

  1. //导入被引用的js文件
  2. var exportsDemo=require("./exportsDemo.js");
  3. //直接调用aa,这里的aa对应的是exports对应的key
  4. console.log(exportsDemo.aa(2,5));
  5. //打印的结果是 被共享的方法哦~ 7

共享构造

exportDemo.js(被引用的)

  1. //定义一个构造方法
  2. function Person(name,age,sex){
  3. this.name=name;
  4. this.age=age;
  5. this.sex=sex;
  6. }
  7. //这里就需要用到module了,module使用场景:类、构造方法
  8. module.exports=Person;
  9. console.log(exports);
  10. //打印结果为空

exportsUse.js(引用方)

  1. //导入被引用的js文件
  2. var exportsDemo=require("./exportsDemo.js");
  3. var per=new exportsDemo("吴师傅",18,"男");
  4. console.log(per);
  5. //打印结果Person { name: '吴师傅', age: 18, sex: '男' }

共享类

exportDemo.js(被引用的)

  1. var React=require("react");
  2. var ReactDom=require("react-dom");
  3. class Header extends React.Component{
  4. render(){
  5. return (<div>这是头部</div>)
  6. }
  7. }
  8. module.exports=Header;


exportsUse.js(引用方)

  1. var React=require("react");
  2. var ReactDom=require("react-dom");
  3. //导入子组件
  4. var Header=require("./Header.jsx");
  5. var Footer=require("./footer.jsx");
  6. //例子:定义参数以及方法调用
  7. class Main extends React.Component{
  8. //定义参数得放在constructor里
  9. constructor(){
  10.     //定义参数
  11.     super();
  12.     this.state={timer:0}
  13. }
  14. //自定方法每次加1
  15. tick(){
  16.     console.log(this);
  17.     this.setState({
  18.     timer:(this.state.timer+1)
  19.     })
  20. }
  21. //点击方法
  22. trach(){
  23. console.log("运行点击方法了")
  24. }
  25. //类似Vue里的created钩子函数
  26. componentDidMount(){
  27.     //若不用箭头函数包裹起方法(this.tick())那么tick里面的this就是一个window对象.会报错
  28.     //包裹起来后的this就是main,这样的this才能指向timer
  29.     setInterval(()=>{this.tick()},1000)
  30. }
  31. render(){
  32. return (
  33. <div>
  34. <Header/>
  35. <p>{this.state.timer}
  36. <span><button onClick={this.trach.bind(this)}>点击事件</button></span>
  37. </p>
  38. </div>
  39. )
  40. }
  41. }
  42. ReactDom.render(<Main/>,document.getElementById("box"));

 


普通分类: