node中modules.exports与exports导出的区别
时间:2019-04-17
本文章向大家介绍node中modules.exports与exports导出的区别,主要包括node中modules.exports与exports导出的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一:node是什么?
node只是平台,或者说是环境,其实用的还是js语法
主要框架express以及koa,两个框架是同一个团队开发,node中也有类似于php的Ci框架的MVC模式
- M->model数据层的增删改差操作
- V->view视图层
- C->controller路由控制,主要起到转发工作
一个完整的node构成:node.js+express+mysql
二:工作代码的顺序:
- app.js为node的入口文件,
- 在view写好html文件,模板可以任意,
- rouer负责路由跳转
- controllers负责具体业务方法的操作,在这个文件里涉及到的增删改差放在model中
- model负责数据的操作
此外,默认的端口号为3000,底层如启动命令也可以配置,node支持的导出为module.exports(整体导出) / exports(单个导出),模块引用为require
三:node中modules.exports与exports
node中使用require和modules.exports以及exports是因为node遵循CommonJS规范。
CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)
使用范围
require | export / import | module.exports / exports |
---|---|---|
node 和 es6 都支持的引入 | 只有es6 支持的导出引入 | 只有 node 支持的导出 |
exports与modules.exports指向相同地址
exports ->{}<- modules.exports
我理解为实际上每次都是导出modules.exports,本来指向一个地址,如下会切断modules.exports和exports分别指向两个地址
a.js
modules.exports = {a:2} exports.a = 1
app.js
var a = require ('./a') console.log(a.a) // 执行node app 打印2
类比
var obj = new Object(); obj.name = 'lisi' //情况一:对象.属性 // obj.sayHello 相当于export.sayHello obj.sayHello = function () { console.log(this.name) // lisi } obj.sayHello(); //情况二:对象.方法 //obj相当于module.exports obj = { sayHello: function () { // . ... }. } console.log(obj.name) // undefined obj.sayHello(); obj.name(); // 打印不出lisi,已经重写obj,obj下面没有name方法
此文章也是自己的学习记录,如有不足,欢迎指正指导。也希望大家多多支持脚本之家。
- Java基础-17(01)总结,TreeSet,LinkHashSet
- 海量数据迁移之数据抽取流程 (r4笔记第72天)
- CSS Selectors Level 4新特性全面解析
- 巧用外部表避免大量的insert (r4笔记第71天)
- 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果
- 16(01)总结List的子类,ArrayList,Vector,LinkedList
- 16(02)总结泛型
- 基于 React + Webpack 的音乐相册项目(上)
- 16(03)总结增强for循环,静态导入,可变参数
- 基于 React + Webpack 的音乐相册项目(下)
- 通过图表简化sql语句的表关联(r4笔记第70天)
- 通过编程控制CPU利用率(r4笔记第69天)
- Java基础(01)-15总结对象数组,集合Collection,集合List
- 【专业技术】Android内存泄漏简介
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用 GitLab CI 与 Argo CD 进行 GitOps 实践
- Java 语言中十大“坑爹”功能!
- 面试:说说啥是一致性哈希算法?
- 问一下,线程池里面到底该设置多少个线程?
- 进程和线程基础知识全家桶,30 张图一套带走
- Python-matplotlib 学术柱状图绘制
- 为什么要避免大事务以及大事务如何解决?
- [即时通信IM]群@消息如何实现?
- 利用PySpark对 Tweets 流数据进行情感分析实战
- ConcurrentHashMap源码学习
- HashMap源码学习
- Pytest自动化测试fixture之conftest.py
- ArrayList源码学习
- 科技将带给我们什么变化?讲述基于 HTML5 WebGL 的 3D 科幻风机
- OOP面向对象编程(Object-Oriented Programming)概述