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 相关文章推荐
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
JSON格式化输出
Nov 10 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
很不错的两款Bootstrap Icon图标选择组件
Jan 28 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
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通过COM使用ADODB的简单例子
2006/12/31 PHP
需要发散思维学习PHP
2009/06/29 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python如何在DataFrame增加数值
2020/02/14 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
护理专业大学生自我推荐信
2014/01/25 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
单位单身证明样本
2014/10/11 职场文书
实习单位证明范例
2014/11/17 职场文书
公司搬迁通知
2015/04/20 职场文书
休假证明书
2015/06/24 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL