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 相关文章推荐
window.open以post方式将内容提交到新窗口
Dec 26 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
详解http访问解析流程原理
Oct 18 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
Apr 08 Javascript
typescript配置alias的详细步骤
Aug 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设计模式之命令模式的深入解析
2013/06/13 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
深入浅析Python字符编码
2015/11/12 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
校园创业策划书
2014/01/14 职场文书
高二物理教学反思
2014/02/08 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
建国大业电影观后感
2015/06/01 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Android Studio 计算器开发
2022/05/20 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android