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 相关文章推荐
Javascript 面向对象 命名空间
May 13 Javascript
jQuery实现动态添加和删除一个div
Aug 12 Javascript
整理JavaScript创建对象的八种方法
Nov 03 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
xmlplus组件设计系列之树(Tree)(9)
May 02 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
Sep 26 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
解决webpack dev-server不能匹配post请求的问题
Aug 24 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
vue分页插件的使用方法
Dec 25 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 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
制作美丽的拉花
2021/03/03 冲泡冲煮
如何正确理解PHP的错误信息
2006/10/09 PHP
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
python爬取招聘要求等信息实例
2020/11/20 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
致200米运动员广播稿
2014/02/06 职场文书
大学毕业感言200字
2014/03/09 职场文书
质量承诺书范文
2014/03/27 职场文书
竞聘上岗演讲
2014/05/19 职场文书
建筑工地质量标语
2014/06/12 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
银行求职自荐信范文
2015/03/04 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Python中的xlrd模块使用整理
2021/06/15 Python
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技