2016-03-15 133 views
1

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

我的问题是:

  1. 我应该在哪里把我Angular2应用程序的NPM包? 公用文件夹(所以应用程序有自己的packages.json)或 节点packages.json中?
  2. tsc编译器应该如何实现?

布鲁诺

+0

你应该去'gulp'任务来编译打字稿文件或者也可以单独编译。 –

+0

但推荐的方式是什么? – Bruno

+0

@Pradeep,'glup'在IDE中自行编译还是在浏览器中编译? – micronyks

回答

1

我有一个非常类似的问题,当第一次开始向angular2迁移。 Angular.io教程使用System.js作为模块,它基本上与使用CommonJS的Node不兼容。这给你两个选择。

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

  2. 在客户端上使用类似于Browserify的CommonJS模块。

现在对我来说,只有第二个选项是一个不错的选择。设置两次失败的原因是跨客户端&服务器使用相同的语言。

我已经准备好了用于Angular 2的Boilerplate以便快速开始使用Browserify。 您可以查看right here.

现在您只需为您的客户端应用程序创建一个公用文件夹,并为您的节点模块创建静态路由。它可能是这个样子:

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

我个人使用VS代码任务编译我打字原稿,然后用Watchify在客户端捆绑它一起。在服务器端,我使用nodemon监视任何更改并在编译时重新启动服务器。

+0

那么browserify和gulp有什么区别? – Bruno

+0

Gulp是一个构建工具,而browserify是模块解析的工具。如果您愿意,可以将两者一起使用,但是,我希望保持简单并仅使用Browserify。 –

+0

https://www.viget.com/articles/gulp-browserify-starter-faq –