【发布时间】:2016-11-12 13:13:23
【问题描述】:
我编写了一个 Web 应用程序,它只是 2 个独立的项目,每个项目位于不同的文件夹和它们自己独特的文件中。
client 部分是使用 SystemJS Typescript 1.8.10(根据 here)在 Angular 2 (RC-4) 中编写的。 server 部分是一个使用 Typescript 1.8.10(也是)的简单 NodeJS 应用程序。
如前所述,每个人都有自己的文件夹和自己独特的文件(包括自己的tsconfig.json 文件。)
一切正常。
但现在,我想在这两个项目中使用 MySharedClass {} 类。 我到底该怎么做?
当然,我可以在每个项目中放置一个源代码副本(即有两个源文件副本),它可以正常构建和运行——但这不是我们做事的方式。
我想创建一个名为“common”的“第三个”项目并将MySharedClass {} 放在那里,但我做不到
import {MyClass} from "../../../common/my-class";
在我的每个项目中,因为在我运行它时它似乎没有引用它。 (我无法让它在运行时引用该文件,因为我认为原因是您不能在项目范围之外引用该文件?!?)
四处研究,似乎没有关于如何做到这一点的解释 - 我是否遗漏了一些明显的东西?
请随时为我指明正确的方向,了解人们正在做什么来解决这个问题 - 我需要学习什么吗?我很确定我了解 ES6 模块系统(根据最近的 Typescript ES6 方式),因为我一直在项目中使用这种方法。我目前没有使用构建工具,因为我不需要额外的复杂性:我只是使用package.json 文件中提供的脚本(根据here)。我现在需要考虑使用Gulp 吗?
【问题讨论】:
-
" 创建一个名为 "common" 的 "第三个" 项目并将 MySharedClass {} 放在那里" 完全没问题。编译好的js的路径在哪里设置?
-
@Zen 是对的。这很可能是包含路径的问题。您还可以在两个项目中作为 node_modules 安装的专用包中移动所有常用代码。
-
@jobou 不确定。如果 OP 使用 Visual Studio,则客户端应用程序由 IIS 托管在 localhost 上,因此,项目根目录之外的任何内容都不能被引用。
-
是的,但大多数时候你有一个 gulp(或其他任务运行器)脚本,它在服务器提供的 dist/build 文件夹中复制你的文件。所以在这种情况下,这将是包含路径的问题。但是在这里是的,我们可以假设 Web 服务器的根文档是客户端文件夹,并且公共依赖项在外部,因此 Web 服务器无法使用。
标签: typescript module