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的点击链接插入链接内容的代码
Jul 31 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
JQuery 在线引用及测试引用是否成功
Jun 24 Javascript
AngularJS基础知识笔记之过滤器
May 10 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
JS判断微信扫码的方法
Aug 07 Javascript
浅析Vue.js 中的条件渲染指令
Nov 19 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
layui下拉列表select实现可输入查找的方法
Sep 28 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
node中短信api实现验证码登录的示例代码
Jan 20 Javascript
详细聊聊vue中组件的props属性
Nov 02 Vue.js
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
文件上传类
2006/10/09 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP中cookie知识点学习
2018/05/06 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python检测QQ在线状态的方法
2015/05/09 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
中国好声音华少广告词
2014/03/17 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
勾股定理课后反思
2014/04/26 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
nginx rewrite功能使用场景分析
2022/05/30 Servers