我用angular创建了一个示例项目aspnet.core 2.1 Web应用程序,并用 import UIKit
struct Objects {
var sectionName : String!
var sectionObjects : [String]!
} class TableViewController: UITableViewController {
var TestArray = ["Hair": ["1","2","3"],"Nail": ["1","2"],"Makeup":["1","2","3","4"]]
var Sections:[String] = []
var objectArray = [Objects]()
var section = 0
var nameTest:String = ""
override func viewDidLoad() {
super.viewDidLoad()
for (name, path) in TestArray {
// print("The path to '\(name)' is '\(path)'.")
var nameTest = name as? String
// print("value count \(TestArray[name]?.count)")
Sections.append(nameTest!)
}
for (key, value) in TestArray {
objectArray.append(Objects(sectionName: key, sectionObjects: value))
}
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
print("Table View Number of Secltions \(objectArray.count)")
return objectArray.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return objectArray[section].sectionName
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Test", for: indexPath) as? TableViewCell
// Configure the cell...
section = indexPath.section //cell!.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row] cell?.TestCollectionView.delegate = self cell?.TestCollectionView.dataSource = self cell?.TestCollectionView.reloadData()
return cell!
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 160
}
} extension TableViewController:UICollectionViewDelegate,UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { print("Collection View Number Of Item in Section (objectArray[section].sectionObjects.count)") return objectArray[section].sectionObjects.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CCell", for: indexPath) as? CollectionViewCell
cell?.Name.text = objectArray[section].sectionObjects[indexPath.row] // here index out of range
return cell!
}
}
添加了pwa
然后创建了一个带有两个控制器进行测试的小型应用。
现在,如果我在spaextension中使用angular客户端运行该应用程序,则该serviceworker已注册并正在运行,但根本不缓存资产或数据组。
客户端是用ng add @angular/pwa
生成的,而--prod
不会启动开发服务器,它会从'dist'文件夹中加载文件。
如果我托管客户端和具有两个主机的后端(后端spaExtension
),它可以按预期工作,则应用程序,图像,字体和localhost:5555, Angular Client localhost:5556
将按配置进行缓存。
api
我不知道为什么当客户端在同一主机上运行时,它为什么不起作用,但是如果单独托管,它却可以工作。 API路由可能是错误的,但是我尝试了所有可能的方法。资产没有路线,因此它仍然可以正常工作。
在 services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
//if (env.IsDevelopment())
//{
// spa.UseAngularCliServer(npmScript: "start");
//}
});
,但是由于它在单独托管时有效,所以我认为问题不在这里。
ngsw-config