我们有一个Angular 16 Universal项目,我们希望找到使用 SVG 图标的最佳方式。性能对于我们的网络应用程序至关重要。我们不能使用 Icomoon 等字体,因为图标是多色的,并且很难定制和维护。
首先,我们开发了一个Angular 指令,可以在运行时内联图标。我们尝试了以下模式:
仅客户端:当应用程序在浏览器中运行时,通过 HttpClient.get() 内联图标。但是,在加载整个 main.js(包含该指令)之前,不会开始下载图标。这会导致明显的闪烁。
SSR + 客户端:激活 Angular Hydration 后,服务器执行 get 调用来获取图标,客户端不会重复所述调用。这解决了闪烁问题,因为返回的页面已经包含 SVG。但是,我担心在服务器端引入这些请求时会产生瓶颈。
此外,图标目前由资产服务器提供服务,我们希望能够将我们的组件作为库发送给其他团队,以便他们可以重用它们。如果这些团队从不同的主机名 (CORS) 向我们的资产服务器发出请求,这可能会产生问题。因此,提出了一些建议:
在构建时内联 SVG,特别是对于那些关键且必须始终显示的 SVG。这将解决我们指令的潜在问题,但会增加脚本的大小。而且,我还没有找到通过 Webpack 配置它的简单方法。将它们直接粘贴到我们的模板中似乎是一个不可取的解决方案。
使用 asset 文件夹,以便在将我们的库传递给其他团队时将图标包含在 dist 文件夹中。
考虑到所有这些想法,将图标包含为 SVG 的最佳方式是什么?
我有两个向量,a [n]和b [n],其中n是一个大数.
a[0] = b[0];
for (i = 1; i < size; i++) {
a[i] = a[i-1] + b[i];
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,我们尝试实现a [i]包含b []中所有数字的总和,直到b [i].我需要使用openmp并行化这个循环.
主要的问题是a [i]取决于[i-1],因此我想到的唯一直接方法是等待每个[i-1]数字准备就绪,这需要花费大量时间并没有任何意义.openmp中有没有解决这个问题的方法?