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 相关文章推荐
JQuery下关于$.Ready()的分析
Dec 13 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
jQuery中next()方法用法实例
Jan 07 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
AngularJS实现分页显示数据库信息
Jul 01 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
JS数组去重常用方法实例小结【4种方法】
May 28 Javascript
vue实现简单图片上传
Jun 30 Javascript
js实现带积分弹球小游戏
Jul 21 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网站在线人数统计
2008/04/09 PHP
基于initPHP的框架介绍
2013/04/18 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
浅谈php扩展imagick
2014/06/02 PHP
php构造函数与析构函数
2016/04/23 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[03:48]大碗DOTA
2019/07/25 DOTA
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
规划编制实施方案
2014/03/15 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
倡议书格式
2014/08/30 职场文书
父亲节寄语大全
2015/02/27 职场文书
结婚通知短信大全
2015/04/17 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
北京青年观后感
2015/06/15 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python