小编dav*_*son的帖子

使用base-href和deploy-url构建Angular CLI以访问CDN上的资产

的背景

我正在使用Angular CLI来构建项目(具有多个应用程序).我想在我的域上的不同子路径上发布应用程序,例如example.com/apps/app1/.

如果我将--base-href参数设置为/apps/app1/它解决了有关路由器的任何问题,它将加载资产(js,css和图像等)就好了.

如果我使用该Location服务,我可以使用

this.location.prepareExternalUrl('/assets/data/data.json')
Run Code Online (Sandbox Code Playgroud)

解决动态加载的资产(他们将解决/apps/app1/assets/data/data.json).

到现在为止还挺好.但我现在想通过CDN提供应用资产,例如cdn.example.com,在原始网址上托管应用本身example.com/apps/app1/.现在我使用以下方法构建应用程序:

 ng build -prod --app app1 --base-href "/apps/app1/" --deploy-url "http://cdn.example.com/app-assets/apps/app1/"
Run Code Online (Sandbox Code Playgroud)

这次,我同时应用--base-href--deploy-url参数.它的工作原理很好,因为它使用base-href来帮助路由器解析URL,并从CDN加载js和css文件.它还使用CDN URL解析CSS文件中的图像URL引用.


问题

动态地(在服务或模板中)从资源文件夹加载图像或数据时,我找不到使用deploy-url配置解析URL的好方法.

如果我使用该Location服务,它仍然使用base-href解析网址,所以

this.location.prepareExternalUrl('/assets/data/data.json')
Run Code Online (Sandbox Code Playgroud)

仍然会解决/apps/app1/assets/data/data.json而不是http://cdn.example.com/app-assets/apps/app1/assets/data/data.json.

deploy-url如果定义了一个值,我本来期望它使用该值,特别是因为这将是在同一域上托管文件以及在外部域上托管文件时可以使用的通用解决方案.


这个问题

考虑base-hrefdeploy-url参数和参数,有没有办法解决资产URL ?

理想情况下是官方的Angular函数Location.prepareExternalUrl,但如果我能以某种方式从Angular获取base-href和deploy-url参数,我可以为它构建自己的服务.

我不想在环境配置中定义URL,因为:

  1. 它需要每个应用程序的特定环境配置
  2. 它会与构建应用程序时提供的值产生潜在冲突.

angular-cli angular

27
推荐指数
2
解决办法
7466
查看次数

iOS 8自动布局问题

我在iOS 8中出现了自动布局的烦人问题,而​​相同的设置在iOS 7中运行良好.

我已经简化并隔离了有问题的情况,以下是它应该如何工作 - 以及它如何在iOS 7 工作:

在iOS 7中工作的约束

该功能包含一个容器视图(蓝色)和三个子视图:

  • 一个标签
  • 图像视图(带有切片的缩放图像)
  • 一个按钮

我添加了一个滑块,通过修改容器的宽度约束来控制容器视图的宽度.

自动布局约束将标签锚定到左侧,将按钮锚定到右侧,并且图像视图锚定到两侧而没有宽度约束.

在iOS 8中,完全相同的设置如下所示:

iOS 8中的约束条件已被破坏

请注意图像视图(黑色线条)看起来如何锚定在容器视图右侧外部的偏移.

我已经尝试了一切,我无法弄清楚为什么这在iOS 8中表现不同.我已经删除并多次替换所有约束但我仍然得到相同的结果.

这些是在每个子视图上设置的约束,分别是:

子视图约束

这些是容器视图的约束:

容器视图约束

容器视图的宽度约束由滑块操纵,如下所示:

宽度约束连接

- (IBAction)handleSliderChange:(id)sender
{
    self.buttonWidth.constant = self.slider.value * 1024.0;

    [self.containerView setNeedsLayout];
    [self.containerView setNeedsUpdateConstraints];
    [self.containerView layoutIfNeeded];

    [self.view setNeedsLayout];
    [self.view setNeedsUpdateConstraints];
    [self.view layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)

其他在iOS 8中遇到自动布局问题的人似乎已经能够通过调用setNeedsLayout和/或setNeedsUpdateConstraints 直接在包含视图上解决类似问题,这就是为什么我非常明确地在包含视图和根视图.我已经尝试了上述所有组合,但似乎没有任何区别.

我开始失去寻找解决方案的希望,但也许这里的某个人已经处理过类似情况并且可以对这个问题有所了解吗?


编辑:我应该补充一点,我还尝试将约束从图像视图设置为标签和按钮,而不是包含视图的边缘具有相同的结果.


编辑2:这是我在尝试隔离问题时一直使用的测试项目:下载

objective-c ios autolayout ios7 ios8

12
推荐指数
1
解决办法
2630
查看次数

UIViewController - 神秘地加载缓慢

我正在编写一个基于选项卡的通用应用程序,其中一个选项卡比其他选项卡需要更长的时间(大约5s),并在执行时锁定主线程.

现在,这个特定的选项卡是一个图像库,因此可能需要一段时间来加载和显示图像,但是,我实例化我的任何变量之前发生延迟...(图像加载是在一个无论如何单独的线程...)

我在viewDidLoad方法中创建了子视图等,但延迟发生在init方法之后和方法之前viewDidLoad.

(即使我在viewDidLoad方法中注释掉所有内容,也会出现延迟.)

视图控制器初始化为一个只包含a UIScrollView和a 的nib UIImagePickerController.

有没有人知道在viewDidLoad方法之前加载/处理了什么?

objective-c uiviewcontroller uiview ios

5
推荐指数
1
解决办法
3408
查看次数