经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
详解vue全局组件与局部组件使用方法
来源:cnblogs  作者:前端攻城小牛  时间:2018/12/7 9:11:45  对本文有异议

这篇文章主要为大家详细介绍了vue全局组件与局部组件的使用方法,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

 

vue全局/局部注册,以及一些混淆的组件
main.js入口文件的一些常用配置, 在入口文件上定义的public.vue为全局组件,在这里用的是pug模版 .wraper 的形式相当于<div class="wraper"></div>

—main.js文件

  1. main.js入口文件的内容
  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. // 引入公用组件的vue文件 他暴漏的是一个对象
  5. import cpublic from './components/public'
  6. Vue.config.productionTip = false
  7. // 注册全局组件-要在vue的根事咧之前
  8. // 参数 1是标签名字-string 2是对象 引入外部vue文件就相当与一个对象
  9. Vue.component('public', cpublic)
  10. // 正常注册全局组件的时候,第二个参数应该是对象。
  11. Vue.component('public1', {
  12. template: '<div>正常的组件模式</div>'
  13. })
  14. /* eslint-disable no-new */
  15. // 生成vue 的根实例;创建每个组件都会生成一个vue的事咧
  16. new Vue({
  17. el: '#app',
  18. router,
  19. template: '<App/>',
  20. components: { App }
  21. })

—public.vue 组件为定义的全局组件在任何组件里都可以直接使用,不需要在vue实例选项components上在次定义,也不需要再次导入文件路径。

  1. public.vue的组件内容
  1. <template lang="pug">
  2. .wrapper
  3. slot(text="我是全局组件") {{name}}
  4. </template>
  5. <script>
  6. export default {
  7. name: 'HelloWor',
  8. // 全局组件里data属性必须是函数,这样才会独立,
  9. // 在组件改变状态的时候不会影响其他组件里公用的这个状态
  10. data () {
  11. return {
  12. name: '我是全局组件'
  13. }//欢迎加入前端全栈开发交流圈一起学习交流:864305860
  14. }//面向1-3年前端人员
  15. }//帮助突破技术瓶颈,提升思维能力
  16.  
  17. </script>
  18. <style scoped>
  19. </style>

在parent.vue组件里,用到了public全局组件以及其他的子组件

parent.vue组件

  1. <template lang="pug">
  2. .wrap
  3. .input-hd
  4. .title 名称:
  5. input.input(type="text",v-model="msg",placeholder="请输入正确的值",style="outline:none;")
  6. .content-detail
  7. .content-name 我是父组件的内容
  8. children(:msg='msg', number='1')
  9. public
  10. router-link(to='/parent/children2') 第二个子组件
  11. router-view
  12. </template>
  13. <script>
  14. import children from './children'
  15. // children(:msg='msg', number='1')在组件里 也可以传递自定义的属性,但是是字符串类型,
  16. export default {
  17. name: 'HelloWor',
  18. data () {
  19. return {
  20. // 通过prop将数据传递到子组件,并与v-model想对应的输入框相互绑定。
  21. msg: '这个是父组件的-prop-数据'
  22. }
  23. },
  24. components: {
  25. children
  26. }
  27. }
  28. </script>
  29. <style scoped>
  30. .wrap {
  31. }
  32. .input-hd {
  33. display: flex;
  34. flex-direction: row;
  35. align-items: center;
  36. height: 70px;
  37. }//欢迎加入前端全栈开发交流圈一起学习交流:864305860
  38. </style>
  39. children.vue是parent.vue的子组件,但是只在parent.vue作用域里可用
  40. <template lang="pug">
  41. .wrapper
  42. slot(text="我是子组件的text") 我是子组件的内容
  43. .name {{ msg }} {{ number }}
  44. </template>
  45. <script>
  46. export default {
  47. name: 'HelloWor',
  48. // 接受的时候是用props接受,数组的形式,里面是字符串的形式。
  49. // 也可以传入普通的字符串
  50. // 在子组件中,props接受到的状态当作vue的实例属性来使用
  51. props: [ 'msg', 'number' ]
  52. }
  53. </script>
  54. //欢迎加入前端全栈开发交流圈一起学习交流:864305860
  55. <style scoped>
  56. //帮助突破技术瓶颈,提升思维能力
  57. </style>

结语

感谢您的观看,如有不足之处,欢迎批评指正。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号