我正在尝试使用 Node.js 以及 Express 和 Angularjs 编写一个应用程序。
有没有可能让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 应用程序分成两个不同的应用程序?有哪些方法可以做到这一点?
提前致谢!
显然,任何应用程序的设计和细微差别都将决定它应该如何设置,但您当然可以在 Angular 中运行一个单页 Web 应用程序,将 AJAX 请求返回给您的 node.js 服务器端 API。我用这种方式创建了许多中小型应用程序。
Node.js 可以按照您设计的方式处理您的 API,但是您需要在 Node 中使用一些初始路由,用户最初会点击这些路由来调出引导 angular.js 应用程序并加载任何其他 javascript 和您将需要的 css 库。您将定义该路由,然后在您的 Node 应用程序中设置静态资源,以便浏览器可以加载这些内容以启动 Angular 应用程序。
angular 应用程序本身将包含在 javascript 文件中,这些文件将位于 express 应用程序的静态资源文件夹中。通常,像/js/myNgApp.js 这样的东西会开始工作——但你可以通过将 Controller 、指令、服务等分离到它们自己的 js 文件中来变得更奇特。这是您稍后可以做的事情。
在浏览器中加载并运行 Angular 应用程序后,您只需要使用 $resource service在 angular 中定义你的 ajax url 到 Node 中的 api,然后让 angular 客户端对这些 url 执行获取或发布(或其他)请求。
如果安全性是您在应用程序中需要的东西,则需要在加载 Angular 应用程序之前将其实现为页面和 url。有一些用于 express 的安全框架可以帮助您解决这个问题。我用 passport .
在 Chrome 中,开发者工具(尤其是网络选项卡)将成为您最好的 friend 。