① Web Components 是个什么样的东西
Web Components
Web Components 总的来说是提供一整套完善的封装机制来把 Web 组件化这个东西标准化,每个框架实现的组件都统一标准地进行输入输出,这样可以更好推动组件的复用。结合上边各个部分的内容,我们整合一起来看下应该怎么使用这个标准来实现我们的组件:
<!-- components/header.html -->
<template id="">
<style>
::content li {
display: inline-block;
padding: 20px 10px;
}
</style>
<content select="ul"></content>
</template>
<script>
(function() {
const element = Object.create(HTMLInputElement.prototype)
const template = document.currentScript.ownerDocument.querySelector('template')
element.createdCallback = function() {
const shadowRoot = this.createShadowRoot()
const clone = document.importNode(template.content, true)
shadowRoot.appendChild(clone)
this.addEventListener('click', function(event) {
console.log(event.target.textContent)
})
}
document.registerElement('test-header', { prototype: element })
})()
</script>
这是一个简单的组件的例子,用于定义一个 test-header,并且给传递进来的子元素 li 添加了一些组件内部的样式,同时给组件绑定了一个点击事件,来打印点击目标的文本内容。
看下如何在一个 HTML 文件中引入并且使用一个组件:
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="import" href="components/header.html">
</head>
<body>
<test-header>
<ul>
<li>Home</li>
<li>About</li>
</ul>
</test-header>
</body>
</html>
一个 import 的 <link> 把组件的 HTML 文件引用进来,这样会执行组件中的脚本,来注册一个 test-header 元素,这样子我们便可以在主文档中使用这个元素的标签。
上边的例子是可以在 chrome 正常运行的。
所以,根据上边简单的例子可以看出,各个部分的内容是有机结合在一起,Custom Elements 提供了自定义元素和标签的能力,template 提供组件模板,import 提供了在 HTML 中合理引入组件的方式,而 Shadow DOM 则处理组件间代码隔离的问题。
不得不承认,Web Components 标准的提出解决了一些问题,必须交由浏览器去处理的是 Shadow DOM,在没有 Shadow DOM 的浏览器上实现代码隔离的方式多多少少有缺陷。个人我觉得组件化的各个 API 不够简洁易用,依旧有 getElementById 这些的味道,但是交由各个类库去简化也可以接受,而 import 功能上没问题,但是加载多个组件时性能问题还是值得商榷,标准可能需要在这个方面提供更多给浏览器的指引,例如是否有可能提供一种单一请求加载多个组件 HTML 的方式等。
在现在的移动化趋势中,Web Components 不仅仅是 Web 端的问题,越来越多的开发者期望以 Web 的方式去实现移动应用,而多端复用的实现渐渐是以组件的形式铺开,例如 React Native 和 Weex。所以 Web Components 的标准可能会影响到多端开发 Web 化的一个模式和发展。
最后,再啰嗦一句,Web Components 个人觉得还是未来发展趋势,所以才有了这个文章。
② Microsoft office 2003 web components是什么
Microsoft office 2003 web components是是由微软Excel和Access的程序员开发的一组COM控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。
(2)webcomponent开发app扩展阅读:
Microsoft office 2003 web components的控件被设计成在外观,使用感受和行为表现上像是微软Office的精简版一样。这些控件不包含Excel和Access中的所有的功能,也不会为了在浏览器中查看一个报表而动态的下载完整的Excel和Access。
但这些控件还能够读写Excel 2000的HTML格式的文件,允许用户点击一个按钮,将当前的数据加载到Excel中,以便作更加强大的分析。
Microsoft office 2003 web components支持的操作系统有 Windows 2000 Service Pack 4; Windows Server 2003; Windows Server 2003 Service Pack 1; Windows Server 2003 Service Pack 2; Windows Small Business Server 2003。
③ microsoft office web components可以卸载吗
owc库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。
“office web components”名称中的单词”office”表示这些控件就是由那些开发微软excel和access的程序员中的一部分人开发的,并且这些控件被设计成在外观,使用感受和行为表现上就像是他们的微软office兄弟的精简版一样。这些控件确实不包含excel和access中的所有的功能——换句话说, 也不会为了在浏览器中查看一个报表而动态的下载完整的excel和access,这些控件也确实包含了许多的常用功能,尤其是那些在与已有内容进行交互时所必需的功能。此外,这些控件还能够读写excel 2000的html格式的文件,允许用户点击一个按钮,将当前的数据加载到excel中,以便作更加强大的分析。不安装就对了
④ microsoft office web componets是什么软件 起什么作用
Office
Web
Components是一组的COM控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。
“Office
Web
Components”名称中的单词”Office”表示这些控件就是由那些开发微软Excel和Access的程序员中的一部分人开发的,并且这些控件被设计成在外观,使用感受和行为表现上就像是他们的微软Office兄弟的精简版一样。这些控件确实不包含Excel和Access中的所有的功能——换句话说,你也不会为了在浏览器中查看一个报表而动态的下载完整的Excel和Access,这些控件也确实包含了许多的常用功能,尤其是那些在与已有内容进行交互时所必需的功能。此外,这些控件还能够读写Excel
2000的HTML格式的文件,允许用户点击一个按钮,将当前的数据加载到Excel中,以便作更加强大的分析。
⑤ microsoft office web components是什么程序,有什么用的,不装这个电脑会有什么样的问题吗
OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。 “Office Web Components”名称中的单词”Office”表示这些控件就是由那些开发微软Excel和Access的程序员中的一部分人开发的,并且这些控件被设计成在外观,使用感受和行为表现上就像是他们的微软Office兄弟的精简版一样。这些控件确实不包含Excel和Access中的所有的功能——换句话说,你也不会为了在浏览器中查看一个报表而动态的下载完整的Excel和Access,这些控件也确实包含了许多的常用功能,尤其是那些在与已有内容进行交互时所必需的功能。此外,这些控件还能够读写Excel 2000的HTML格式的文件,允许用户点击一个按钮,将当前的数据加载到Excel中,以便作更加强大的分析。不安装就对了
⑥ Web Components是什么和其他的前端开发方式有什么优缺点
Web Components 是组件规范,但还没有足够多的浏览器支持,目前只有chrome34+支持。
简单介绍:
Web Components的组件开发者在一个独立的沙箱(shadow dom)当中开发组件(包含:dom,css,js)
而组件的使用者则可以通过:
<slider>
<frame><img src="1.jpg"/></frame>
<frame><img src="1.jpg"/></frame>
<frame><img src="1.jpg"/></frame>
</slider>
这样的自定义标签来使用组件,就像浏览器原生支持的一样。
⑦ Web Components是不是Web的未来
今天 ,Web
组件已经从本质上改变了HTML。初次接触时,它看起来像一个全新的技术。Web组件最初的目的是使开发人员拥有扩展浏览器标签的能力,可以自由的进行定
制组件。面对新的技术,你可能会觉得无从下手。那这篇文章将为你揭开Web组件神秘的面纱。如果你已经熟知HTML标签和DOM编程,已经拥有了大量可用
的Web组件,那么你已经是Web组件专家了。
Web组件的现状
随着各式各样的用户需求,浏览器的原生组件已经无法满足需求。Web组件也就变得越来越重要。
我们将以自定义一个传统三方插件为例来介绍Web组件。
首先,需要引用插件的CSS和JavaScript资源:
<link rel="stylesheet" type="text/css" href="my-widget.css" />
<script src="my-widget.js"></script>
接下来,我们需要向页面中添加占位符。
<div data-my-widget></div>
最后,我们需要使用脚本来找到并且实例化这个占位符为Web组件。
// 使用 jQuery 初始化组件
$(function() {
$('[data-my-widget]').myWidget();
});
通过以上是三个基本步骤。已经完成了在页面中添加了自定义插件,但是浏览器无法确定自定义组件的生命周期,如果通过以下方式声明则使自定义组件生命周期变得清晰了。
el.innerHTML = '<div data-my-widget></div>';
因为这不是一个内置的组件,我们现在必须手动实例化新组件,
$(el).find('[data-my-widget]').myWidget();
避免这种复杂设置方法的有效方式是完全抽象DOM交互。不过,这个动作也比较复杂,需要创建框架或者库来自定义组件。
面临的问题
组件一旦被声明,占位符已经被替代为原生的HTML标记:
<div data-my-widget>
<div class="my-widget-foobar">
<input type="text" class="my-widget-text" />
<button class="my-widget-button">Go</button>
</div>
</div>
这样做的弊端是,自定义组件的标记和普通HTML组件的标记混杂在一起,没有清晰的分割和封装。这就不可避免的会出现命名及样式等冲突。
Web组件的产生
随着三方Web组件的发展,它已经成为了Web开发不可或缺的部分:
<!—导入: -->
<link rel="import" href="my-widget.html" />
<!—使用:-->
<my-widget />
在这个实例中,我们通过导入HTML来添加组件并且立即使用。
更重要的是,因为<my-widget />是浏览器原生支持的组件,它直接挂在浏览器的生命周期中,允许我们像添加原生组件一样添加三方组件。
el.innerHTML = '<my-widget />';
// 插件当前已经被实例化
当查看这个组件的HTML 源码,你会发现它仅仅是一个单一的标签。如果启用浏览器Shadow DOM 特性,才可以查看标签内的组件,你将会发现一些有趣的事情,
当我们谈论Web组件时,我们不是在谈论一门新技术。Web组件最初的目的是给我们封装能力,它可以通过自定义组件和Shadow DOM 技术来实现。所以,接下来,我们将着重介绍下这两项技术。介绍以上两个技术之前,我们最好先梳理下已知浏览器原生组件。
已知的HTML组件
我们知道组件可以通过HTML标记或JavaScript来实例化:
使用标记实例化:
<input type="text" />
document.createElement('input');
el.innerHTML = '<input type="text" />';
使用JaveScript实例化:
document.createElement('input')
document.createElement('div')
添加带有属性的HTML标签:
// 创建带有属性的input标签...
el.innerHTML = '<input type="text" value="foobar" />';
//这时value属性已经同步
el.querySelector('input').value;
组件可以响应属性的变化:
// 如果我们更改value 属性值
input.setAttribute('value', 'Foobar');
//属性值会立即更改
input.value === 'Foobar'; // true
组件可以有内部隐藏的DOM结构:
<!—使用一个input实现复杂的日历功能-->
<input type="date" />
// 尽管其内部结构比较复杂,但是已经封装成为一个组件
dateInput.children.length === 0; // true
组件可以使用子组件:
<!—可以给组件提供任意个 'option' 标签-->
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
组件可以为其子组件提供样式:
dialog::backdrop {
background: rgba(0, 0, 0, 0.5);
}
最后,组件可以有内置样式。和自定义插件不同,我们不需要为浏览器的原生控件引用CSS文件。
有了以上的了解,我们已经具备了解Web组件的基础。使用自定义组件和Shadow DOM,我们可以在我们的插件中定义所有这些标准行为。
自定义组件
注册一个新组件也比较简单:
var MyElement = document.register('my-element');
// 'document.register' 返回一个构造函器
你也许注意到上面的自定义组件名称包含一个连接符。这是为了确保自定义组件名称不和浏览器内置组件不冲突。
现在<my-element />这个组件具备了原生组件的特性,
所以,自定义组件也同样可以进行普通的DOM操作:
document.create('my-element');
el.innerHTML = '<my-element />';
document.create('my-element');
构建自定义组件
当前,这个自定义组件仅仅有框架,而没有内容,下面让我们向其中添加一些内容:
//我们将提供'document.register'的第二个参数:
document.register('my-element', {
prototype: Object.create(HTMLElement.prototype, {
createdCallback: {
value: function() {
this.innerHTML = '<h1>ELEMENT CREATED!</h1>';
}
}
})
});
在这个例子中,我们设置自定义组件的prototype,使用Object.create 方法创建一个继承于HTMLElement的对象。在这个方法中修改该组件的属性 innerHTML。
我们定义了createdCallback方法,在每次声明实例时调用。你同样可以有选择性的定义attributeChangedCallback、 enteredViewCallback 和leftViewCallback等方法。
目前为止我们实现了动态修改自定义组件内容的功能,我们仍然需要提供自定义组件的封装方法,用于隐藏其内部组件。
使用Shadow DOM实现封装
我们需要完善下createdCallback方法。本次,除了修改innerHTML之外,我们添加一些额外的操作:
createdCallback: {
value: function() {
var shadow = this.createShadowRoot();
shadow.innerHTML = '<h1>SHADOW DOM!</h1>';
}
}
在这个例子中, 你会注意到‘SHADOW DOM!’,但是查看源码时你会发现只有空白的<my-element /> 标签而已。这里使用创建Shadow Root 方法替代了直接修改页面。
Shadow Root中的任何组件,是肉眼可见的,但是和当前页面的样式和DOM API相隔离。这样就实现了自定义组件是一个独立组件的假象。
添加“轻量级DOM”
目前为止,我们的自定义组件是空标签,但是如果向其中添加内部组件会出现什么现象呢?
我们假设自定义组件包含的节点如下,
<my-element>
这是一个轻量级 DOM。
<i>hello</i>
<i>world</i>
</my-element>
一旦针对于这个组件的 Shadow Root 被创建,它的子节点不再存在。我们这些隐藏的子节点封装为轻量级DOM节点。
如果禁用了 Shadow DOM,上面这个例子仅仅会显示为:这是一个轻量级 DOM‘hello world’。
当我们在createdCallback方法中设置 Shadow DOM后,我们可以使用新增内容分配轻量级DOM组件到Shadow DOM 中。
createdCallback: {
value: function() {
var shadow = this.createShadowRoot();
// 子组件'i' 标签现在已经消失了
shadow.innerHTML =
‘轻量级 DOM 中的 "i" 标签为: ' +
'<content select="i" />';
//现在,在 Shadow DOM 中只有 'i' 标签是可以见的。
}
}
封装样式
Shadow DOM 最重要的作用是创建了和当前页面隔离的Web组件,使Web组件不受当前页面样式和JaveScript脚本的影响。
createdCallback: {
value: function() {
var shadow = this.createShadowRoot();
shadow.innerHTML =
"<style>span { color: green }</style>" +
"<span>I'm green</span>";
}
}
反之,在 Shadow DOM 中定义的样式也不会影响之外的标签样式。
<my-element />
<span>I'm not green</span>
揭露钩子的秘密
当隐藏自定义组件内部标记,有时也需要在当前页面对组件中的内部特定组件进行样式设置。
例如,如果我们自定义一个日历插件,在不允许用户控制整个插件的情况下,允许最终用户去定义按钮的样式。
这是其中的部分特性和伪组件:
createdCallback: {
value: function() {
var shadow = this.createShadowRoot();
shadow.innerHTML = 'Hello <em part="world">World</em>';
}
}
这是在当前页面设置自定义组件内部组件样式的方法:
my-element::part(world) {
color: green;
}
这部分内容介绍了封装web组件的基本方式。Shadow DOM 是我们可以任意修改Web组件中的标签。在例子中,我们设置了“World”的样式,但是使用者却无法判断它是<em>标签。
在你尝试自定义Web组件之前,需要确保浏览器的相关特性已经打开。如果使用 Chrome,在 Chrome 中打开chrome://flags ,并且开启“experimental Web Platform features”。
这仅仅是个开始
所有本文中介绍的内容,都是模拟一些简单的浏览器标准行为。我们已经习惯于和原生的浏览器组件进行交互,因此自定义组件的步骤并不是想象中的那个难。Web组件最终提供我们一种实现简单、一致、可复用、封装和组合部件的方法,这是一个有意义的开始。
⑧ webcomponents是什么软件
回答软件(*^ω^*)
⑨ 如何在WEB网页上编写程序调用海康威视webcomponents插件显示图像
具体编写操作如下:
1.打开WEB,图中示例为一个显示一组随机数组的程序,程序名称为ex14.c。编写完成后,同时按下键盘的【alt】和字母【X】键。