查看dojo源码过程中,发现这三个模块名并不以dojo.dijit.dojox开头,在dojo加载器中属于特殊模块名. require 这是一个上下文智能的加载器. 我们通过dojoConfig配置了一个package:myApp,现在对myApp目录下的文件可以使用如下方式请求: // this is "myApp/topLevelHandlers" define(["dojo"], function(dojo){ dojo.connect(dojo.byId(&…
今天来扒一扒在node和ES6中的module,主要是为了区分node和ES6中的不同意义,避免概念上的混淆,同时也分享一下,自己在这个坑里获得的心得. 在ES6之前 模块的概念是在ES6发布之前就出现的,我感觉主要是为了适应大型应用开发的需要而引入了JavaScript世界.模块化编程已经从噱头上升为必备,所以ES6也顺应时代,把这个写进了标准. CommonJS和AMD都是JavaScript模块化规范,在ES6之前,Node主要遵循CommonJS,而AMD则主要运用在浏览器端,比如req…
原文:http://www.hacksparrow.com/node-js-exports-vs-module-exports.html 你肯定对Node.js模块中用来创建函数的exports对象很熟悉(假设一个名为rocker.js的文件): exports.name = function() { console.log('My name is Lemmy Kilmister'); }; 然后你在另一个文件中调用: var rocker = require('./rocker.js'); r…
1. module应该是require方法中,上下文中的对象 2. exports对象应该是上下文中引用module.exports的新对象 3. exports.a = xxx 会将修改更新到module.exports对象中 4. exports = xxx 直接改变了 exports的指向 上面这4条揭示了这两个对象的本质.也就是说exports指向module.exports. 如果写exports.a =1, 意味着module.exports.a也等于1. 但如果写成exports=…
还在为module.exports.exports.export和export default,import和require区别与联系发愁吗,这一篇基本就够了! 一.首先搞清楚一个基本问题: module.exports和exports是属于CommonJS模块规范!(不清楚commonjs?大神请这边逛一逛commonjs规范) export和export default是属于ES6语法(不清楚ES6?大神请这边逛一逛ES6模块)! 同样import和require分别属于ES6和Common…
小程序模块化 可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块.模块只有通过 module.exports 或者 exports 才能对外暴露接口. tips:exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误.所以更推荐开发者采用 module.exports 来暴露模块接口,除非你已经清晰知道这两者的关系. // common.js function sayHello(name) { console.l…
1. module应该是require方法中,上下文中的对象 2. exports对象应该是上下文中引用module.exports的新对象 3. exports.a = xxx 会将修改更新到module.exports对象中 4. exports = xxx 直接改变了 exports的指向, module.js的474行代码: module._compile(stripBOM(content), filename); module.js的437行代码: var wrapper = Modu…
还在为module.exports.exports.export和export default,import和require区别与联系发愁吗,这一篇基本就够了! 一.首先搞清楚一个基本问题: module.exports和exports是属于CommonJS模块规范!(不清楚commonjs?大神请这边逛一逛commonjs规范) export和export default是属于ES6语法(不清楚ES6?大神请这边逛一逛ES6模块)! 同样import和require分别属于ES6和Common…
module.exports Node 应用由模块组成,采用 CommonJS 模块规范.根据这个规范,每个文件就是一个模块,有自己的作用域.在这些文件里面定义的变量.函数.类,都是私有的,对外不可见,因此规避掉了作用域污染. 根据 CommonJS 规定,每个模块内部,module 变量代表当前模块,这个变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口.加载某个模块,其实就是加载该模块的 exports 属性. 举例:通过 module.exports…
CommonJS 规范中的 module.module.exports 区别 CommonJS规范规定,每个模块内部,module变量代表当前模块.这个变量是一个对象,它的exports属性(即module.exports)是对外的接口.加载某个模块,其实是加载该模块的module.exports属性. module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量. 为了方便,Node为每个模块提供一个exports变量,指向mo…