var bar=require('myModule')和only require(#39;myModul
What is the difference between var bar = require('myModule') and only require('myModule')?
我看到在一些项目中,它使用了常见的
var myModule = require('myModule');
但在其他一些情况下,它被使用类似于:
require('myModule');
这两者有什么区别?
一个将模块分配给变量,另一个只需要它。两个都加载并运行脚本。
使用require('foo')
,您需要模块并加载入口点脚本。当模块第一次加载时,这将评估该脚本中的任何静态代码。您无法访问任何导出,以后引用模块时也不需要再次引用。
var bar = require('foo')
的行为类似,只是它保留了对导出的引用,并允许您以后使用它们。
当"模块"实际上是某种其他类型的资源(如CSS文件),并且require
运行一些代码将该CSS加载到当前页面时,经常会看到无分配的require表单。在常见的JS模块中,在没有任何初始化代码的情况下,require without assign表单将预加载模块,但几乎不执行其他操作。
以这样的模块为例
let connection = new ServerConnection();
export default class Connection {
static getConnection() {
return connection;
}
}
require without assign表单将加载脚本、运行脚本并创建连接。你将无法使用它,但它将存在。
带有assign表单的require将加载、运行、创建并提供引用。您将能够呼叫bar.getConnection()
并访问该连接。
在上面的例子中,如果您在没有分配的情况下使用require
,您将无法访问该连接,也永远无法关闭它,这可能是一个问题。
相关文章:
- 如果连接类型为none,则Javascript Function Only警报
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- Typescript导入导出的类会发出require(..),从而导致浏览器错误
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 限制npm依赖模块's require(隔离)的用法
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- .scrollTop() only returning 0
- 在javascript中的require中传递变量
- Protractor only runs Chrome
- 避免重新评估和动态卸载用“require”调用的对象
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- Angular2, doe's EventEmitter require zone.run?
- 在混合基本 URL 下动态加载 require.js 模块
- require('babel/register')不'不起作用
- Require in nodejs
- 使用Require.js按照依赖关系的顺序加载JavaScript
- var bar=require('myModule')和only require(#39;myModul