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 UI-Draggable 参数集合
Jan 10 Javascript
使用jquery动态加载javascript以减少服务器压力
Oct 29 Javascript
javascript框架设计读书笔记之数组的扩展与修复
Dec 02 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 Javascript
AngularJS实现的回到顶部指令功能实例
May 17 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
JS事件绑定的常用方式实例总结
Mar 02 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 Javascript
js实现拖拽元素选择和删除
Aug 25 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
js url传值中文乱码之解决之道
2009/11/20 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
python操作MongoDB基础知识
2013/11/01 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
Python中创建二维数组
2018/10/17 Python
Python面向对象实现方法总结
2020/08/12 Python
Python爬虫开发与项目实战
2020/12/16 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
工作表扬信的范文
2014/01/10 职场文书
模范家庭事迹材料
2014/02/10 职场文书
党在我心中演讲稿
2014/09/02 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
解析python中的jsonpath 提取器
2022/01/18 Python
python使用torch随机初始化参数
2022/03/22 Python