我第一次尝试使用AMD& require.js构建核心包,但我遇到了循环依赖的问题.在阅读了这与require.js相同之后,commonJS更经常被建议用于大型项目我试过了.但是现在它与browserify一起设置,当我运行编译的bundle时,我在同一个地方出现了完全相同的问题.
我有类似10个基类的东西,它们相互依赖并形成多个循环依赖.我没有看到任何方法来删除所有这些.
一个简化的设置来解释为什么我认为我不能删除循环依赖项:
Triples are made of 3 Resources (subject,predicate,object) Resource has TripleCollections to keep track of which triples its used in Resource has multiple functions which rely on properties of Triple Triple has some functions which handle TripleCollections TripleCollection has multiple functions which uses functions of Triple TripleCollection.getSubjects() returns a ResourceCollection ResourceCollection.getTriples() returns a TripleCollection Resource keeps track of the objects of its triples in ResourceCollections ResourceCollection uses multiple functions of Resource
我已经在SO上阅读了多个相关问题(this one最有帮助),从我可以收集的内容中我只有几个选项:
1)将所有具有循环依赖关系的基类放在1个文件中.
这意味着它将成为一个文件的地狱.而且导入总是需要别名:
import core = require('core'); import BaseA = core.BaseA;
2)使用内部模块
当我使用内部打字稿模块和参考文件时,核心包工作正常(具有循环依赖性).但是,如果我想在运行时创建单独的bundle并加载它们,我将不得不使用带有require.js的所有模块的填充程序.
虽然我不太喜欢所有别名,但我想我现在会尝试选项1,因为如果它可以工作,我可以继续使用CommonJS和browserify,稍后我也可以更轻松地在节点上运行服务器上的所有内容.如果1没有成功,我将不得不求助于选项2.
Q1:我有没有提到过一些可能的解决方案?
Q2:具有1个核心捆绑包的打字稿项目的最佳设置是什么,它根据需要加载其他捆绑包(构建在核心上).这似乎无法绕过循环依赖.最好能在客户端和服务器上运行.
或者我只是要求不可能的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。