首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码从ES5迁移到带有命名空间的ES2015

代码从ES5迁移到带有命名空间的ES2015
EN

Stack Overflow用户
提问于 2016-02-04 10:13:08
回答 1查看 597关注 0票数 2

我们有一个基于聚合物的跨平台应用程序.

目前,我们所有的JavaScript依赖项都是在index.html中维护的,方法是以顺序导入它们!这种方法很快就会成为一场噩梦,编写测试和查看测试覆盖率并不是一件容易的事情。

作为未来的储蓄,我们决定使用ES2015的模块化方法。

现在,我们需要重新设计JavaScript文件,以便能够维护单个JavaScript模块之间的依赖关系。到目前一切尚好。但是,我们如何做到这一点来保存名称空间、闭包等呢?

这是一个示例代码:

代码语言:javascript
复制
//namespace check
var app_ns = app_ns || { };

// ****************************************************************************
// Module: app
// ****************************************************************************

app_ns.app = (function initialize () {

  // ***
  // basic APIs and definitions
  // ***

  // Application version will be replaced by Gruntfile task.
  // Don't change the version manually!!!
  var AW_VERSION = "1.4.32";

  function version () { return AW_VERSION; }
  ...

  // ***
  // exports
  // ***
  return {
    version : version
  };  
}());

从上面的代码可以看到,初始化被执行并分配给app_ns.app。由于简单,代码片段没有显示对其他模块的依赖,但我们确实有这些模块!

所以问题是

  • 如何在ES2015中使用命名空间
  • 如何自动执行闭包
  • 如何导出功能的模块,却不在全局范围内!

使用export { xxx };是在全局范围内导出{...}中的所有函数,对吗?如何将导出的函数绑定到正确的命名空间?在这个例子中,app_ns.app

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 14:58:25

“使用export{ xxx };是否导出全局范围内的所有函数,对吗?”并不完全正确。它将其导出到导入它的范围。目前,浏览器还没有一种处理模块的方法,所以大多数绑定器都会将它转换为CommonJs标准并对其进行范围调整,这样它就不会破坏全局。我将重新评估在模块范型下是否需要名称空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35198151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档