HTML 中的可重用视图组件

发布于 2024-08-31 03:01:47 字数 94 浏览 9 评论 0原文

你能在 html 中创建可重用的组件吗?假设我想将一些 css / html 和 js 封装成一个整洁的可重用组件。网络开发人员如何做到这一点?我来自 Flex、C# 方面。

Can you create reusable components in html? Let's say I want to encapsulate some css / html and js into a tidy reusable component. How do web developers do this? I'm coming from the Flex, C# side of the planet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

勿忘心安 2024-09-07 03:01:47

2017 年更新

这个问题已有 7 年历史,自那以后发生了很多变化Web 组件现在已在每个主要浏览器中实现或可以与 polyfill 一起使用。这意味着您可以使用 Google 的 PolymerX-Tag 由 Microsoft 支持,正是为此而制作的。

使用 Polymer 的示例方法:

custom-tag.html 中的自定义标记声明:

<dom-module id="custom-tag">

    <template>

        <style>
            h1 {
               color: red;
            }               
        </style>

        <div class="text-holder">       
            <h1>[[name]]</h1>
            <p>[[description]]</p>
        </div>

    </template>

</dom-module>

<script>
    Polymer({
        is: "custom-tag",
        properties: {
            name: String,
            description: String
        }
    });
</script>

如何在页面中使用自定义标签:

在 head 中包含标签:

<link rel="import" href="path/to/custom-tag.html"/>

然后:

<custom-tag
    name="Lorem"
    description="Lorem ipsum dolor sit amet.">
</custom-tag>

由于 html 导入,您将需要一个简单的 http 服务器。您谈到的封装是由 Shadow DOM 支持的 - 自定义标记内打包的 javascript 和 css 不会“渗出”并更改元素外部的任何内容,反之亦然(除非您强制执行)。 Polymer 提供了相当多的元素资源,您可以在此处找到它。

此处介绍了有关使用元素和创建自己的元素的所有内容。

2017 update

This question is 7 years old and a lot has changed since. Web components and are now implemented or can be used with polyfills in every major browser. Which means you can use Polymer by Google or X-Tag supported by Microsoft made exactly for this.

Sample approach using Polymer:

custom tag declaration in custom-tag.html:

<dom-module id="custom-tag">

    <template>

        <style>
            h1 {
               color: red;
            }               
        </style>

        <div class="text-holder">       
            <h1>[[name]]</h1>
            <p>[[description]]</p>
        </div>

    </template>

</dom-module>

<script>
    Polymer({
        is: "custom-tag",
        properties: {
            name: String,
            description: String
        }
    });
</script>

how to use custom tag in your page:

include tag in head:

<link rel="import" href="path/to/custom-tag.html"/>

and then:

<custom-tag
    name="Lorem"
    description="Lorem ipsum dolor sit amet.">
</custom-tag>

You'll need a simple http server because of the html import. Encapsulation you talked about is backed by Shadow DOM - javascript and css packed inside of custom tag won't "bleed out" and change anything outside of the element and vice versa (unless you force it). Polymer comes out with quite large asset of elements, you can find it here.

Everything about using elements and creating your own is covered here.

爱你不解释 2024-09-07 03:01:47

您可以使用服务器端包含直接导入HTML片段(例如标头),但是如今大多数框架都倾向于在更高层次上处理问题,例如 Apache TaglibsDjango 模板

You can use Server-Side Includes to directly import pieces of HTML (e.g. a header), but most frameworks these days tend to approach things at a higher level, e.g. Apache Taglibs or Django templates.

梦太阳 2024-09-07 03:01:47

这取决于您的环境。 HTML(在简单的环境中)通常包含在服务器端包含中(其语法取决于您的服务器)。

这样你就可以:

<!-- #include header.html -->
<h1>Blog Page</h1>
<p>content...</p>
<!-- #include footer.html -->

Javascript 包含在外部,因此可以从任何地方调用。如果您处于“简单”环境(没有服务器端代码、CMS 等),您可能会调用 module.js ,它会加载特定的 CSS 样式并将您需要的 HTML 注入到 DOM 中。

如果您使用任何类型的 CMS,他们通常会提供一个模块 想法或插件 来为您完成此任务。你在这里做什么工作?

It depends on your environment. HTML is (in a simple environ) often included with a server-side include (the syntax of which will depend on your server).

That way you could have:

<!-- #include header.html -->
<h1>Blog Page</h1>
<p>content...</p>
<!-- #include footer.html -->

Javascript is included externally so can be called from anywhere. If you're in a "simple" environment (no server-side code, CMS, etc) you might call module.js which in turn loads specific CSS styles and injects into the DOM the HTML you require.

If you're using a CMS of any sort, they will often have a module idea or plug-ins that wrap this up for you. What are you working with here?

暗喜 2024-09-07 03:01:47

一般来说,您可以将代码片段放入一个单独的文件中,您可以使用服务器端包含来添加该文件:

<!--#include FILE="you_snippet.html" -->

如果可以选择,您可能想看看一些模板语言,例如 Apache Velocity。在 Velocity 中,您不仅可以包含不同的文件,还可以定义为您生成 html 的宏。

Generally you can put snippets into a separate file that you can add in with a server side include:

<!--#include FILE="you_snippet.html" -->

If you have the option, you might want to have a look at some template languages like Apache Velocity. In Velocity, not only can you include different files, you can define macros that will generate the html for you.

娇女薄笑 2024-09-07 03:01:47

您可以尝试模板引擎,例如 google Closure 模板工具

您在这里所做的基本上是在一个名为 soy 文件的特殊文件中创建 html 布局,您将为其提供作为参数传入的数据,并且这些数据将使用 javascript/java 动态解释。看看他们的教程,非常不错。闭包广泛应用于 Gmail、Youtube 以及几乎所有 Google 产品。

You can try out the templating engines, like google closure template tools.

What you do here is basically create html layouts in a special file called soy files for which you are going to feed the data passed in as parameters and these data are going to be interpreted dynamically with javascript/java. Check out their tutorials, its pretty good. Closures are widely used in Gmail, Youtube and mostly all of Google's products.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文