我有一个相当大的应用程序(~650个文件),它目前混合了ES6模块和遗留的全局名称空间、内部模块和类的实现。
我想转移到100%的ES6模块。
为此,我需要通过添加“export”关键字将所有全局对象转换为ES6模块。
当我添加“export”时,该全局对象就不再是全局的,并且使用该对象的每个文件现在都有一个编译器错误“object not Found”(即无法读取未定义的属性“xxx”)。
为了解决这个问题,必须在文件中添加一个“导入”,从而将其变成一个ES6模块,这反过来又“去全球化”该文件中的所有对象,从而在其他文件中导致新的“对象找不到”错误。
简而言之,这种迭代方法似乎不会很好地工作。
这是最好的方法吗?有什么建议吗?
我怀疑这甚至不是一个好办法,当然不是最好的办法。
使用非模块化代码并试图以编程方式将其转换为模块只会造成混乱。我相信这是可以做到的,但它并没有真正的收获。这只会让事情变得比以前更糟。您将会把一个非模块化的体系结构变成一堆非模块化的、高度交叉依赖的模块。您的体系结构将不会得到改进,代码将变得更加复杂,而不是变得更复杂。
更好的方法是逐步重新设计功能领域,使之真正“模块化”。为一个功能区域创建一个接口,将其打包到一个模块中,然后转换该功能的所有用户来导入该接口并使用它。这实际上是可以做到的,一次一个功能区域。你不必一下子把整件事打碎,然后再试着把它全部重新组合起来。
摆脱共享全局需要重新思考设计。仅仅将一堆共享全局打包到一个模块中,现在让每个人都导入,并不能真正改善设计--事实上,它甚至可能使情况变得更糟。代码就像以前一样相互交织、相互依赖。
您可以增量地进行这种模块化的重新设计,一次只对代码的一个功能区域进行重新设计,而不是一下子创建一个巨大的混乱局面,实际上并没有改进您的代码的体系结构。
如果我要解决这个问题,我可能会创建一个程序中所有主要功能点的顶层图,并确保650个文件中的每一个都在图的某个地方表示。然后,我开始逐步地挑选出最容易模块化的部分(具有最干净的接口和最少的意大利面依赖关系的部分)。当你把越来越多的东西放到模块中时,剩下的部分开始变得不那么复杂了。如果真的可以访问交织在整个代码中的全局,那么您就必须重新考虑设计的部分,要么创建包含数据的html" target="_blank">对象并传递这些数据,要么将全局数据移到相关模块中,并为这些数据提供导出的访问器。
问题内容: 我有一个关于Bitbucket的项目。仅提交源。为了将项目检索到新机器上,我在IntelliJ中使用了Version Control> Checkout from Version Control。 然后,它询问我是否要从该源创建一个新项目,对此我回答“是”。到目前为止,一切都很好。它为我创建了一个不错的Java小项目,由一个模块组成。 但是,将这个项目引入IntelliJ的目的是将其变
我试图使用Eclipse的从maven开始。但如果我尝试将现有项目更改为Maven项目(),结果是: null 问题可能出在哪里? 更新(生成的pom.xml):
我有一个用Java编写的gradle项目,想把整个事情变成一个scala项目(仍然是gradle)。要做到这一点,需要采取哪些步骤? 我开始在scala中定义main方法,似乎Intellij不知道我要做什么。 到目前为止我所做的: > 在build.gradle中应用插件:“scala”--> 在build.gradle中编译'org.scala-lang:scala-library:2.10.
问题内容: 我有一个100M的CSV文件(实际上是许多单独的CSV文件),总计84GB。我需要将其转换为具有单个float数据集的HDF5文件。我在测试中使用 h5py 时没有任何问题,但是现在我无法在没有内存不足的情况下完成最终数据集。 如何在不必将整个数据集存储在内存中的情况下写入HDF5?我期望这里有实际的代码,因为它应该很简单。 我只是在研究 pytables ,但看起来数组类(与HDF5
问题内容: 我正在使用Eclipse Ganymede创建一个Web应用程序,但是该项目目前只是一个标准Java项目。我想将其转换为动态Web项目,并且需要这样做。 我曾就编辑.project文件提供了一些建议,但是当我重新启动Eclipse时,它拒绝打开该项目并声称该文件已损坏。项目属性中也没有构面管理选项。 有什么建议? 问题答案: 好。伙计们,我 告诉 你为什么。这是因为这些指南中有很多都遗
我尝试在eclipse中创建一个动态web项目,并将该项目转换为maven项目。我的项目有这样的结构 当我右键单击project>Configure>Convert to Maven project时,我会得到以下错误消息: