In diesem Artikel wird hauptsächlich die detaillierte Beschreibung der leistungsstarken Vue.js-Komponenten vorgestellt.Js-Komponenten sind eine der leistungsstärksten Funktionen von Vue.js.Was sind Komponenten: Komponenten sind eine der leistungsstärksten Funktionen von Vue.js. Komponenten können das HTML-Element erweitern, um wiederverwendbaren Code zu kapseln. Auf hoher Ebene ist eine Komponente ein selbstdefiniertes -Element, dem der Compiler von Vue.js spezielle Funktionen hinzufügt. Teilweise können Komponenten auch in Form von nativen HTML-Elementen vorliegen, erweitert um das Attribut is. Wie registriere ich eine Komponente? Sie müssen die Methode Vue.extend verwenden, um eine Komponente zu erstellen, und dann die Methode Vue.component verwenden, um die Komponente zu registrieren. Das Format der Vue.extend-Methode ist wie folgt: Wenn Sie diese erstellte Komponente an anderer Stelle verwenden möchten, müssen Sie die Komponente benennen: Vue.component ('my -component', MyComponent) Nachdem Sie es benannt haben, können Sie den Komponentennamen im HTML-Tag verwenden, genau wie bei der Verwendung eines DOM-Elements. Werfen wir einen Blick auf ein vollständiges Beispiel für die Registrierung und Verwendung von Komponenten. HTML-Code: JS-Code: Ausgabeergebnis: Verschachtelte KomponentenDie Komponente selbst kann auch Komponenten enthalten. Die übergeordnete Komponente unten enthält eine Komponente mit dem Namen untergeordnete Komponente, diese Komponente kann jedoch nur von der übergeordneten Komponente verwendet werden: Der obige Definitionsprozess ist relativ umständlich und Sie müssen die Methoden Vue.component und Vue.extend nicht jedes Mal aufrufen: Dynamische Komponente Mehrere Komponenten können denselben Mount-Punkt verwenden und dann dynamisch zwischen ihnen wechseln. Verwenden Sie das reservierte
对于普通对象可以使用全局方法:Vue.set(object, key, value):
Vue.set(data, 'c', 3)
// `vm.c` 和 `data.c` 现在是响应的
初始化数据:尽管Vue.js提供动态的添加相应属性,还是推荐在data对象上声明所有的相应属性。
不这么做:
var vm = new Vue({ template: '<p>{{msg}}</p>' }) // 然后添加 `msg` vm.$set('msg', 'Hello!')
应该这么做:
var vm = new Vue({ data: { // 以一个空值声明 `msg` msg: '' }, template: '<p>{{msg}}</p>' }) // 然后设置 `msg` vm.msg = 'Hello!'
组件完整案例
下面介绍的例子实现了模态窗口功能,代码也比较简单。
html代码:
<!-- 实现script定义一个模板 --> <script type="x/template" id="modal-template"> <!--模板是否显示通过v-show="show"来设置, transition设置动画效果--> <p class="modal-mask" v-show="show" transition="modal"> <p class="modal-wrapper"> <p class="modal-container"> <p class="modal-header"> <!--slot 相当于header占位符--> <slot name="header"> default header </slot> </p> <p class="modal-body"> <!--slot 相当于body占位符--> <slot name="body"> default body </slot> </p> <p class="modal-footer"> <!--slot 相当于footer占位符--> <slot name="footer"> default footer </slot> <button class="modal-default-button" @click="show = false">OK</button> </p> </p> </p> </p> </script> <p id="app"> <!--点击按钮时设置vue实例特性showModal的值为true--> <button id="show-modal" @click="showModal = true">show modal</button> <!--modal是自定义的一个插件,插件的特性show绑定vue实例的showModal特性--> <modal :show.sync="showModal"> <!--替换modal插件中slot那么为header的内容--> <h3 slot="header">Custom Header</h3> </modal> </p>
js代码:
//定义一个插件,名称为modal Vue.component("modal", { //插件的模板绑定id为modal-template的DOM元素内容 template: "#modal-template", props: { //特性,类型为布尔 show:{ type: Boolean, required: true, twoWay: true } } }); //实例化vue,作用域在id为app元素下, new Vue({ el: "#app", data: { //特性,默认值为false showModal: false } });
css代码:
.modal-mask { position: fixed; z-index: 9998; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, .5); display: table; transition: opacity .3s ease; } .modal-wrapper { display: table-cell; vertical-align: middle; } .modal-container { width: 300px; margin: 0px auto; padding: 20px 30px; background-color: #fff; border-radius: 2px; box-shadow: 0 2px 8px rgba(0, 0, 0, .33); transition: all .3s ease; font-family: Helvetica, Arial, sans-serif; } .modal-header h3 { margin-top: 0; color: #42b983; } .modal-body { margin: 20px 0; } .modal-default-button { float: right; } /* * the following styles are auto-applied to elements with * v-transition="modal" when their visiblity is toggled * by Vue.js. * * You can easily play with the modal transition by editing * these styles. */ .modal-enter, .modal-leave { opacity: 0; } .modal-enter .modal-container, .modal-leave .modal-container { -webkit-transform: scale(1.1); transform: scale(1.1); }
相关文章:
Das obige ist der detaillierte Inhalt vonDetaillierte Beschreibung der leistungsstarken Vue.js-Komponenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!