将模板 html 中的 <link> 标签重构为 styleUrls

Posted

技术标签:

【中文标题】将模板 html 中的 <link> 标签重构为 styleUrls【英文标题】:Refactoring <link> tag in template html to styleUrls 【发布时间】:2015-12-17 05:35:06 【问题描述】:

我正在尝试重构一个组件,它将其 html 模板中的样式表链接到使用 styleUrls 代替。

链接的模板有一个类似的包含;

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

我已将其重构为;

styleUrls: [
    'https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css'
],
encapsulation: ViewEncapsulation.None

我可以确认样式表已加载,但它是作为内联样式而不是通过链接标记加载的,例如引用:

src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');

不要指向;

https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/fonts/fontawesome-webfont.eot?v=4.4.0

宁可;

http://localhost:9000/fonts/fontawesome-webfont.eot?v=4.4.0

如何将 html 模板重构为使用 styleUrls,同时保留相对引用?

【问题讨论】:

这很有趣。但老实说,我认为不存在,或者永远不会有内置的东西来解决这个问题。所以你最好的选择就是把它放在你的 HTML 标题中。 我认为对这个链接有用你的作品点击链接golang.org/pkg/html/template 在优化和解决您的问题方面,将 repo 作为项目中的组件获取不是更好的主意,然后不要从外部“maxcdn ... “等等? 【参考方案1】:

我能找到的唯一方法是在随后的 cmets 中使用mentioned here。

您必须创建一个自定义 UrlResolver。 Here is a test 在 Angular2 Material 存储库中实现自定义 url 解析器。下面的相关部分。

import TestUrlResolver from './test_url_resolver';
import ..., bind from 'angular2/core';

bind(UrlResolver)
    .toValue(new TestUrlResolver());

这是 TestUrlResolver 的 TypeScript 版本(另一个版本在 Dart 中):

import UrlResolver from 'angular2/src/core/compiler/url_resolver';

export class TestUrlResolver extends UrlResolver 
  constructor() 
    super();
  

  resolve(baseUrl: string, url: string): string 
    // The standard UrlResolver looks for "package:" templateUrls in
    // node_modules, however in our repo we host material widgets at the root.
    if (url.startsWith('package:angular2_material/')) 
      return '/base/dist/js/dev/es5/' + url.substring(8);
    
    return super.resolve(baseUrl, url);
  

【讨论】:

以上是关于将模板 html 中的 <link> 标签重构为 styleUrls的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 3282Tree Link Cut Tree模板题

Smarty:评估存储在 PHP 变量中的模板

模板中的 UnicodeDecodeError

thinkphp模板html中用php输出html的标签中含有变量,怎么才能输出?

luogu P3690模板Link Cut Tree(动态树)

HTML & CSS - 将 <link> 标签放在 <head> 之外 [重复]