复杂页面开发

页面的开发时为什么需要封装多个业务组件?

为了实现页面的复杂功能和交互。将一个页面拆分成多个组件,每个组件负责自己的部分,可以使代码更加模块化、易于维护和扩展。

例如,在一个电商网站中,一个产品页面可能包含产品图片、产品名称、产品描述、价格、评价等多个部分,每个部分都可以使用一个组件来实现。这样,每个组件负责自己的功能和状态,组件之间相互独立,可以单独进行开发、测试和维护,也可以在不同的页面中重复使用。此外,组件之间可以通过组件间通信(props、events)来实现交互和数据共享,使页面的功能更加丰富和灵活。

因此,使用多个组件可以提高页面的可维护性、可重用性和可扩展性,同时也可以使开发效率更高,代码更清晰。

Vue.js中父子组件之间传递参数可以通过props选项实现。父组件可以将数据作为属性传递给子组件,子组件可以通过props选项声明接收这些属性。这样,父组件和子组件之间就可以进行数据传递和交互。

组件交互之 父子组件传参

下面是一个简单的 jianghusjs 父子组件传递参数的示例:

  1. <!-- 父page页面 -->
  2. {% extends 'template/jhTemplateV4.html'%}
  3. {% block vueTemplate %}
  4. <script type="text/html" id="app-template">
  5. <div>
  6. <h1>{{ title }}</h1>
  7. <child-component :message="message" @update="updateMessage"></child-component>
  8. </div>
  9. </script>
  10. <div id="app"></div>
  11. {% endblock %}
  12. {% block vueScript %}
  13. <script>
  14. {% include 'component/childComponent.html' %}
  15. new Vue({
  16. el: '#app',
  17. template: '#app-template',
  18. vuetify: new Vuetify(),
  19. data() {
  20. return {
  21. title: 'Parent Component',
  22. message: 'Hello, Child Component!'
  23. }
  24. },
  25. methods: {
  26. updateMessage(newMessage) {
  27. this.message = newMessage;
  28. }
  29. }
  30. });
  31. </script>
  32. {% endblock %}
  1. <!-- 子组件 component/childComponent.html -->
  2. <template id="child-component">
  3. <div>
  4. <p>{{ message }}</p>
  5. <button @click="changeMessage">Change Message</button>
  6. </div>
  7. </template>
  8. <script>
  9. Vue.component("ChildComponent", {
  10. template: "#child-component",
  11. vuetify: new Vuetify(),
  12. props: {
  13. message: String
  14. },
  15. methods: {
  16. changeMessage() {
  17. this.$emit('update', 'New Message');
  18. }
  19. }
  20. });
  21. </script>

在这个例子中,父组件包含一个标题和一个子组件<child-component>

  • 属性传递给子组件: 通过:message="message"将父组件中的数据message作为属性传递给子组件。
  • 子组件接收属性: 子组件中通过props选项声明接收这个属性。
  • 子组件变更事件: 子组件中的<p>标签显示message属性的值,<button>标签点击后会触发changeMessage()方法,通过this.$emit('update', 'New Message')语句向父组件发送update事件,并传递一个新的消息'New Message'。父组件中的@update="updateMessage"监听到update事件,并执行updateMessage(newMessage)方法,将新消息保存到message**属性中。

通过props选项实现父子组件之间的数据传递,可以使组件之间解耦、独立、易于维护和扩展。同时,通过事件机制实现组件之间的交互,可以使组件之间更加灵活和动态。