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 插件学习(五)
Aug 06 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
基于WebUploader的文件上传js插件
Aug 19 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
详解使用angular的HttpClient搭配rxjs
Sep 01 Javascript
详解Nuxt.js Vue服务端渲染摸索
Feb 08 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
js 实现碰撞检测的示例
Oct 28 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
Node.js学习入门
2017/01/03 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
Python制作刷网页流量工具
2017/04/23 Python
Python File readlines() 使用方法
2018/03/19 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
Java程序员综合测试题
2014/04/25 面试题
作文评语集锦大全
2014/04/23 职场文书
会计求职信范文
2014/05/24 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
MySQL去除密码登录告警的方法
2022/04/20 MySQL