我正在使用Laravel和Angluarjs的前端单页应用程序构建RESTful Web服务.现在我应该在哪里放置
Angularjs文件?我应该将它们放在Laravel安装的公共文件夹中,还是应该将它们完全分开,因为我将向Web服务中的资源发出调用,它将返回JSON数据,因此不需要它们在同一个地方.什么是标准或最佳做法?
现在,第二部分.如果我正在构建一个简单的Todo应用程序,我应该如何管理Laravel中的路由和资源.这是我真的很困惑的地方,这有点难以解释,但与我保持一分钟.例如,我在/ users有一个用户资源,我可以通过在/ users发出GET请求来获取所有用户,或者通过在/ users发出POST请求来创建新用户.类似地,我可以在/ users / 1发出GET请求并获取第一个用户,依此类推其他请求动词.现在,我有另一个叫做tasks的资源.我该如何实现这个资源?我应该像嵌套资源说/ users / {user_id} / tasks一样实现它.当我在/ users / 1 / tasks发出GET请求时,它将获取第一个用户的所有任务.但现在它变得复杂,因为如果在/ users / 10 / tasks / 1发出GET请求,它应该为第10个用户获取第一个任务.但是,由于我必须寻找第10个用户的第一个任务,因此这种逻辑的实现变得非常困难.
我想通过在/ users / {user_id} / tasks中设置GET路由来解决这个问题,这显然会返回指定用户的所有任务.然后我会创建一个完全不同的资源/任务来处理所有其他请求动词.我这样做了吗?
而且,如果我使用像MongoDB这样的NoSQL数据库,在这种情况下数据将以/ users / {user_id} / tasks / {task_id}不会难以实现的方式存储,因为每个用户的任务将在他们自己的JSON对象中.
我在想正确的方向吗?我是新手,我不知道解决此类数据库架构问题的标准方法是什么?什么是最佳做法?
最佳答案 这是我的建议.
基本上,您需要将应用程序划分为模块.比如说登录,功能1,功能2等.现在你应该有每个模块的文件夹,你可以保存所有与之相关的文件(controllers.js,services.js,index.html,style.css,filters.js和[name]模块] .js)这样就可以将所有代码分开,从而可以移动代码.
您可以将模块定义为:
(function () {
'use strict';
angular
.module('myapp.login', [
'myapp.login.controllers',
'myapp.login.services'
]);
}());
你需要在app.js中包含这个,就像这样
angular
.module('myapp', [ 'ngRoute',
'ngResource',
'myapp.login'
])
这样您就可以添加所有模块.
您想要包含的一个更重要的文件夹是common文件夹.您可以在其中包含应用程序中可能包含的所有可重用组件的模块.
对于测试,您可以在其中包含一个单独的测试文件夹(e2e和单元文件夹).我一直在使用黄瓜进行测试,我创建了功能文件夹,我为每个模块创建了文件夹,我在其中定义了功能.您还可以创建一个名为steps的文件夹,您可以在其中为每个模块分别使用js文件.
最重要的是,您可以使用配置文件,您可以在其中为所有api创建变量,以便您可以从一个位置控制它.
希望这可以帮助 :)