【问题标题】:Angular 2 and NodeJS project setup [closed]Angular 2 和 NodeJS 项目设置 [关闭]
【发布时间】:2016-07-01 08:47:08
【问题描述】:

我有一些关于包括 Angular2 在内的 MEAN 应用程序的项目结构的基本问题。我按照angular.io 的入门教程构建了一个非常基本的Angular2 应用程序。现在我尝试在tutorial 之后将此应用程序集成到 NodeJS 项目中。问题是本教程是在第一个 Angular 时编写的。

我的问题是:

  1. 我应该把 Angular2 应用程序的 npm 包放在哪里?在 - 的里面 公共文件夹(因此应用程序有自己的 packages.json)或在 节点包.json?
  2. tsc编译器应该如何实现?

布鲁诺

【问题讨论】:

  • 你应该去gulp任务编译打字稿文件,或者也可以单独编译。
  • 但是推荐的方法是什么?
  • @Pradeep,glup 是在 IDE 中自己编译还是在浏览器中编译?
  • 我确信这一点,但是对于这个和专业来说,gulp 任务是最好和简单的。
  • 是的 gulp 能够在 IDE/public 文件夹中编译,而不是在浏览器中,我们必须创建简单的任务来做同样的事情

标签: javascript node.js npm angular project-structure


【解决方案1】:

当我第一次开始迁移到 angular2 时,我遇到了一个非常相似的问题。 Angular.io 教程使用 System.js 作为其模块,这与使用 CommonJS 的 Node 基本不兼容。这让您有两个选择。

  1. 分别为客户端和服务器设置 Typescript 编译器和节点模块。

  2. 在客户端使用带有 Browserify 之类的 CommonJS 模块。

现在对我来说,只有第二个选项是一个不错的选择。设置两次会破坏在客户端和服务器之间使用相同语言的全部目的。

我已经为 Angular 2 准备了一个样板,以便快速开始使用 Browserify。 你可以去看看right here.

现在您所要做的就是为您的客户端应用程序创建一个公共文件夹,并为您的节点模块创建静态路由。它可能看起来像这样:

app.use(express.static(__dirname + '/public'));
app.use("/node_modules",express.static(__dirname + '/../node_modules'));

我个人使用 VS Code Task 来编译我的 Typescript,然后在客户端使用 Watchify 将它们捆绑在一起。在服务器端,我使用 nodemon 监视任何更改并在编译时重新启动服务器。

【讨论】:

  • 那么 browserify 和 gulp 有什么区别呢?
  • Gulp 是一个构建工具,而 browserify 是一个模块解析工具。如果您愿意,您可以同时使用两者,但是,我希望保持简单并仅使用 Browserify。
  • 检查我的编辑,看看我是怎么做的。
猜你喜欢
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 2016-12-01
相关资源
最近更新 更多