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的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
javascript验证身份证号
Mar 03 Javascript
jquery中radio checked问题
Mar 16 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
浅谈jquery的map()和each()方法
Jun 12 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
vue .sync修饰符的使用详解
Jun 15 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 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写的采集程序
2007/03/16 PHP
PHP实现下载功能的代码
2012/09/29 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
python自动生成证件号的方法示例
2021/01/14 Python
运动会广播稿60字
2014/01/15 职场文书
销售会计岗位职责
2014/03/15 职场文书
授权委托书范文
2014/07/31 职场文书
医院党员公开承诺书
2014/08/30 职场文书
工程承包协议书
2014/10/20 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS
nginx设置资源请求目录的方式详解
2022/05/30 Servers
设置IIS Express并发数
2022/07/07 Servers