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 相关文章推荐
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
Mar 07 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
JS简单获取日期相差天数的方法
Apr 24 Javascript
React 子组件向父组件传值的方法
Jul 24 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
vuex state中的数组变化监听实例
Nov 06 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 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图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
跟老齐学Python之模块的加载
2014/10/24 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
南京软件公司的.net程序员笔试题
2014/08/31 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
财产公证书格式
2014/04/10 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
警察群众路线整改措施
2014/09/26 职场文书
入党转正申请报告
2015/05/15 职场文书
观后感的写法
2015/06/19 职场文书
尊师重教主题班会
2015/08/14 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL