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 相关文章推荐
收藏一些不常用,但是有用的代码
Mar 12 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
JavaScript汉诺塔问题解决方法
Apr 21 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
View.post() 不靠谱的地方你知道多少
Aug 29 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 Javascript
微信小程序聊天功能的示例代码
Jan 13 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无限分类源码分享(思路不错)
2011/10/13 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
php新建文件的方法实例
2019/09/26 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
详解Python3中yield生成器的用法
2015/08/20 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
演讲稿格式范文
2014/05/19 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
python如何获取网络数据
2021/04/11 Python
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
MySQL查询日期时间
2022/05/15 MySQL