5

我正在尝试使用带有 Express 和 Angularjs 的 Node.js 编写应用程序。

我是否有可能允许 AngularJS 处理所有登陆请求?而 Node.js 纯粹是为了 API?这意味着用 Node.js 编写的所有路由都将是这样的:

app.get('/api/users', users.showAll);
app.post('/api/users', users.create);
app.get('/api/users/fb/:fbId', users.findByFb);
app.get('/api/users/:userId', users.show);
app.put('/api/users/:userId', users.update);
app.del('/api/users/:userId', users.del);

AngularJS 将能够自己解析 URL,例如 localhost/users/Some-Name?

将两者集成在一起时要遵循哪些最佳实践?

另外,是否建议将 AngularJS 和 Node.js 应用程序分成两个不同的应用程序?有什么方法可以做到这一点?

提前致谢!!

4

1 回答 1

6

显然,任何应用程序的设计和细微差别都将决定它应该如何设置,但您当然可以在 Angular 中运行单页 Web 应用程序,将 AJAX 请求返回到您的 node.js 服务器端 API。我正是以这种方式创建了许多中小型应用程序。

Node.js 可以按照您设计的方式处理您的 API,但是您需要在节点中设置一些初始路由,用户最初会点击这些路由来调出引导 angular.js 应用程序并加载任何其他 javascript 和 css 库的 HTML 页面你会需要。您将定义该路由,然后在节点应用程序中设置静态资源,以便浏览器可以加载这些内容以启动 Angular 应用程序。

Angular 应用程序本身将包含在 javascript 文件中,这些文件将位于 express 应用程序的静态资源文件夹中。通常,像 /js/myNgApp.js 这样的东西可以开始工作——但是你可以通过将控制器、指令、服务等分离到他们自己的 js 文件中来获得更多的异国情调。这是您以后可以做的事情。

一旦 Angular 应用程序在浏览器中加载并运行,您只需要使用 Angular 中的$resource 服务将您的 ajax url 定义到节点中的 api,然后让 Angular 客户端对这些执行获取或发布(或其他)请求网址。

如果您在应用程序中需要安全性,则需要在加载 Angular 应用程序之前将其实现为页面和 url。express 有一些安全框架可以帮助你解决这个问题。我用护照

在 Chrome 中,开发者工具(尤其是网络标签)将成为你最好的朋友。

于 2013-08-18T04:21:21.313 回答