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 相关文章推荐
用正则获取指定路径文件的名称
Feb 27 Javascript
javascript新手语法小结
Jun 15 Javascript
input 高级限制级用法
Mar 26 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
javascript 基础篇4 window对象,DOM
Mar 14 Javascript
详解Javascript中prototype属性(推荐)
Sep 03 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
javascript实现用户点击数量统计
Dec 25 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
Element Notification通知的实现示例
Jul 27 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 Javascript
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 中的输出缓冲
2006/12/21 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
python中return不返回值的问题解析
2020/07/22 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
后勤部长岗位职责
2013/12/14 职场文书
法律专业实习鉴定
2013/12/22 职场文书
高中学生评语大全
2014/04/25 职场文书
初中新生军训方案
2014/05/13 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
企业消防安全责任书
2014/07/23 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python