在 Node.js 应用程序中为我的前端包管理器使用 npm 的最佳方式是什么?
What is the best way to use npm for my front end package manager in a Node.js app?
我正在学习 Node.js 和 Express,并计划在前端使用 Angular。我正在为 Node.js 模块使用 npm,但我也想为我的前端依赖项使用 npm。我能找到的所有教程都将 Bower 用于前端库。两者都使用 npm 的推荐方法是什么?
我目前在 public 文件夹中有 Angular 应用程序 运行,我使用 express.static 将其设置为静态文件夹。我在根 node_modules 文件夹和 package.json 中也安装了前端依赖项。为了让 Angular 应用程序访问其中的库,我将 node_modules 也设置为静态目录。这感觉有点不对。
有两个 package.json 文件是个好主意吗?一个在根目录中,一个在 public 文件夹中?或者有没有办法告诉 npm 在根目录中安装一些库,在 public 文件夹(可能是 lib 子文件夹)中安装一些库?
这是我的节点应用程序代码:
var express = require('express');
var app = express();
var port = 3000;
app.use(express.static('public'));
app.use(express.static('node_modules'));
app.get('/', function(req, res) {
res.send('Hello world');
});
app.listen(port, function(err) {
console.log('Running server on port ' + port);
});
我的 Angular 应用代码的价值:
<html>
<header>
<title>My Test Site</title>
<script src="angular/angular.min.js"></script>
<script>
angular.module('MyApp', [])
.controller('MyController', [function () {
var ctrl = this;
// Properties
ctrl.myTitle = "My Angular App";
}]);
</script>
</header>
<body ng-app="MyApp" ng-controller="MyController as myctrl">
<h2>Welcome to {{ myctrl.myTitle }}</h2>
</body>
</html>
根据上面 mh-cbon 的评论,我将我的 npm 依赖项分成两个 package.json 文件,一个在 Node/server 端的根目录中,一个在 public 文件夹中对于 Angular/ui 方。安装每个都是通过构建过程处理的。这实际上非常有效,因为我计划将服务器端分成 Docker 图像。由于这两部分是分开的,我可以轻松地使用 Docker 卷来处理容器外部的 Angular 代码。
对 Node 应用程序的唯一更改是删除 node_modules 上的静态调用:
var express = require('express');
var app = express();
var port = 3000;
app.use(express.static('public'));
app.get('/', function(req, res) {
res.send('Hello world');
});
app.listen(port, function(err) {
console.log('Running server on port ' + port);
});
我正在学习 Node.js 和 Express,并计划在前端使用 Angular。我正在为 Node.js 模块使用 npm,但我也想为我的前端依赖项使用 npm。我能找到的所有教程都将 Bower 用于前端库。两者都使用 npm 的推荐方法是什么?
我目前在 public 文件夹中有 Angular 应用程序 运行,我使用 express.static 将其设置为静态文件夹。我在根 node_modules 文件夹和 package.json 中也安装了前端依赖项。为了让 Angular 应用程序访问其中的库,我将 node_modules 也设置为静态目录。这感觉有点不对。
有两个 package.json 文件是个好主意吗?一个在根目录中,一个在 public 文件夹中?或者有没有办法告诉 npm 在根目录中安装一些库,在 public 文件夹(可能是 lib 子文件夹)中安装一些库?
这是我的节点应用程序代码:
var express = require('express');
var app = express();
var port = 3000;
app.use(express.static('public'));
app.use(express.static('node_modules'));
app.get('/', function(req, res) {
res.send('Hello world');
});
app.listen(port, function(err) {
console.log('Running server on port ' + port);
});
我的 Angular 应用代码的价值:
<html>
<header>
<title>My Test Site</title>
<script src="angular/angular.min.js"></script>
<script>
angular.module('MyApp', [])
.controller('MyController', [function () {
var ctrl = this;
// Properties
ctrl.myTitle = "My Angular App";
}]);
</script>
</header>
<body ng-app="MyApp" ng-controller="MyController as myctrl">
<h2>Welcome to {{ myctrl.myTitle }}</h2>
</body>
</html>
根据上面 mh-cbon 的评论,我将我的 npm 依赖项分成两个 package.json 文件,一个在 Node/server 端的根目录中,一个在 public 文件夹中对于 Angular/ui 方。安装每个都是通过构建过程处理的。这实际上非常有效,因为我计划将服务器端分成 Docker 图像。由于这两部分是分开的,我可以轻松地使用 Docker 卷来处理容器外部的 Angular 代码。
对 Node 应用程序的唯一更改是删除 node_modules 上的静态调用:
var express = require('express');
var app = express();
var port = 3000;
app.use(express.static('public'));
app.get('/', function(req, res) {
res.send('Hello world');
});
app.listen(port, function(err) {
console.log('Running server on port ' + port);
});