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实现的在新窗口打开链接的方法小结
Apr 22 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
微信小程序收藏功能的实现代码
Jun 12 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
Nov 14 Javascript
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 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 数组遍历顺序理解
2009/09/09 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
怎么清空javascript数组
2013/05/11 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
浅谈js中的bind
2019/03/18 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
如何利用find命令查找文件
2015/02/07 面试题
办公室年终个人自我评价
2013/10/28 职场文书
销售团队口号大全
2014/06/06 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书