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 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
JavaScript 替换Html标签实现代码
Oct 14 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
Aug 26 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
点击button获取text内容并改变样式的js实现
Sep 09 Javascript
Javascript 高阶函数使用介绍
Jun 15 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
Oct 24 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
js实现开关灯效果
Mar 30 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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中文汉字验证码
2007/04/08 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python常见数据结构详解
2014/07/24 Python
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
详解Python中dict与set的使用
2015/08/10 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
Python logging模块原理解析及应用
2020/08/13 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
八一建军节部队活动方案
2014/02/04 职场文书
档案信息化建设方案
2014/05/16 职场文书
微笑服务标语
2014/06/24 职场文书
药店采购员岗位职责
2014/09/30 职场文书
语文复习计划
2015/01/19 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
如何理解PHP核心特性命名空间
2021/05/28 PHP
新手入门Mysql--sql执行过程
2021/06/20 MySQL
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python