写在前面
文章,关于anguar的位置也没有一个比较好的一个标准。这里也是抛砖引玉,希望通过讨论,得到一个更好的结构。
项目结构
文件作为模板文件,这里将应用的js,及css文件,都凡在该页。如图所示:
文件夹:存放webapi接口。
文件夹,这样做,也是为了操作方便(文件多的话,来回的切换窗口,确实很麻烦)。
文件,以及app.js
包括module的注册,以及服务信息:
<span style="color: #0000ff;">var StoreService = angular.module('StoreService'<span style="color: #000000;">,[]);
<span style="color: #008000;">//<span style="color: #008000;">请求服务
StoreService.factory('requestService',<span style="color: #0000ff;">function<span style="color: #000000;"> ($http,$q) {
<span style="color: #0000ff;">var request =<span style="color: #000000;"> {
method: 'POST'<span style="color: #000000;">,url: ''<span style="color: #000000;">,headers: { 'Content-Type': 'application/json'<span style="color: #000000;"> },data: {}
};
<span style="color: #0000ff;">var postData =<span style="color: #000000;"> {
lists: <span style="color: #0000ff;">function<span style="color: #000000;"> (type) {
request.method = "get"<span style="color: #000000;">;
request.url = "../apI/Order/lists/" + type + ""<span style="color: #000000;">;
<span style="color: #0000ff;">return<span style="color: #000000;"> requestService($http,$q,request);
},submit_product: <span style="color: #0000ff;">function<span style="color: #000000;"> (data) {
request.method = "post"<span style="color: #000000;">;
request.url = "../apI/Order"<span style="color: #000000;">;
request.data =<span style="color: #000000;"> data;
<span style="color: #0000ff;">return<span style="color: #000000;"> requestService($http,request);
}
};
<span style="color: #0000ff;">return<span style="color: #000000;"> postData;
});
<span style="color: #0000ff;">function<span style="color: #000000;"> requestService($http,request) {
<span style="color: #0000ff;">var deferred = $q.defer(); <span style="color: #008000;">//<span style="color: #008000;"> 声明延后执行,表示要去监控后面的执行
<span style="color: #000000;"> $http(request).
success(<span style="color: #0000ff;">function<span style="color: #000000;"> (data,status,headers,config) {
deferred.resolve(data); <span style="color: #008000;">//<span style="color: #008000;"> 声明执行成功,即http请求数据成功,可以返回数据了
<span style="color: #000000;"> }).
error(<span style="color: #0000ff;">function<span style="color: #000000;"> (data,config) {
deferred.reject(data); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 声明执行失败,即服务器返回<a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a> </span>
<span style="color: #000000;"> });
<span style="color: #0000ff;">return deferred.promise; <span style="color: #008000;">//<span style="color: #008000;"> 返回承诺,这里并不是最终数据,而是访问最终数据的API
};
文件中,其中也包括请求的服务,考虑到减少一次静态文件的请求,所以将服务也放在了该文件中。
功能不是太多,还是放在一个里面,如果定义太多的js文件,一是静态文件的请求次数会很多,二是开发起来确实很头大,每次开发在vs打开n个tab页面,你会发现会让你非常的头大。
自定义的过滤器,(如果过滤器不多,建议还是合并到app.js文件中。)
名称建文件夹。如果视图不多,我是一股脑的都塞到views文件夹了。
一个例子
一个根据关键字搜索商品的列表的例子。
<span style="color: #0000ff;"></
<span style="color: #800000;">div<span style="color: #0000ff;">>添加视图,作为呈现的页面。
{
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StoreController : Controller
{
<span style="color: #008000;">//<span style="color: #008000;"> GET: Store
<span style="color: #0000ff;">public<span style="color: #000000;"> ActionResult Index()
{
<span style="color: #0000ff;">return<span style="color: #000000;"> View();
}
}
}
一个添加指定ng-view的div,用来呈现Views中的html模板的。
{
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> OrderController : ApiController
{
<span style="color: #008000;">//<span style="color: #008000;"> GET: apI/Order
<span style="color: #000000;"> [HttpGet]
[Route(<span style="color: #800000;">"<span style="color: #800000;">apI/Order/lists/{key?}<span style="color: #800000;">"<span style="color: #000000;">)]
<span style="color: #0000ff;">public <span style="color: #0000ff;">async Task
{
<span style="color: #0000ff;">return <span style="color: #0000ff;">await Task.Run(() =><span style="color: #000000;">
{
HttpResponseMessage response = <span style="color: #0000ff;">new<span style="color: #000000;"> HttpResponseMessage(HttpStatusCode.Accepted);
List
<span style="color: #0000ff;">new Order(){ Id=Guid.NewGuid(),Dt=DateTime.Now,Name=<span style="color: #800000;">"<span style="color: #800000;">飞机<span style="color: #800000;">",Price=<span style="color: #800080;">2222222<span style="color: #000000;">},<span style="color: #0000ff;">new Order(){ Id=Guid.NewGuid(),Name=<span style="color: #800000;">"<span style="color: #800000;">飞机2<span style="color: #800000;">",Name=<span style="color: #800000;">"<span style="color: #800000;">飞机3<span style="color: #800000;">",Name=<span style="color: #800000;">"<span style="color: #800000;">飞机4<span style="color: #800000;">",Name=<span style="color: #800000;">"<span style="color: #800000;">飞机5<span style="color: #800000;">",Name=<span style="color: #800000;">"<span style="color: #800000;">飞机6<span style="color: #800000;">",};
<span style="color: #0000ff;">var results = <span style="color: #0000ff;">string.IsNullOrEmpty(key) ? lst : lst.Where(x =><span style="color: #000000;"> x.Name.Contains(key));
response = <span style="color: #0000ff;">new<span style="color: #000000;"> HttpResponseMessage(HttpStatusCode.OK)
{
Content = <span style="color: #0000ff;">new StringContent(JsonConvert.SerializeObject(<span style="color: #0000ff;">new { _code = <span style="color: #800080;">200,_data =<span style="color: #000000;"> results }))
};
<span style="color: #0000ff;">return<span style="color: #000000;"> response;
});
}
}
}
标签添加指令ng-app。
总结
分享一下,在网上也找了一些资料,并没有具体的分层方式。我这里抛砖引玉,希望有个更好的方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。