node中modules.exports与exports导出的区别


Posted in Javascript onJune 08, 2018

一:node是什么?

node只是平台,或者说是环境,其实用的还是js语法

主要框架express以及koa,两个框架是同一个团队开发,node中也有类似于php的Ci框架的MVC模式

  1. M->model数据层的增删改差操作
  2. V->view视图层
  3. C->controller路由控制,主要起到转发工作

一个完整的node构成:node.js+express+mysql

二:工作代码的顺序:

  1. app.js为node的入口文件,
  2. 在view写好html文件,模板可以任意,
  3. rouer负责路由跳转
  4. controllers负责具体业务方法的操作,在这个文件里涉及到的增删改差放在model中
  5. 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方法

此文章也是自己的学习记录,如有不足,欢迎指正指导。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
AngularJs导出数据到Excel的示例代码
Aug 11 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
Vue.js轮播图走马灯代码实例(全)
May 08 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
Vue不能观察到数组length的变化
Jun 08 #Javascript
Node.js中的child_process模块详解
Jun 08 #Javascript
详解使用 Node.js 开发简单的脚手架工具
Jun 08 #Javascript
使用JavaScript生成罗马字符的实例代码
Jun 08 #Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 #jQuery
Node.js中你不可不精的Stream(流)
Jun 08 #Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 #Javascript
You might like
PHP 一个随机字符串生成代码
2010/05/26 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
js同比例缩放图片的小例子
2013/10/30 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
浅谈Vue.js
2017/03/02 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python元组常见操作示例
2019/02/19 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
材料物理专业大学毕业生求职信
2013/10/15 职场文书
保安岗位职责
2014/02/21 职场文书
学雷锋演讲稿
2014/03/04 职场文书
优秀班组长事迹
2014/05/31 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
小学中队活动总结
2015/05/11 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL