• data:function(){
  • return {msg:"msg66666"}
  • },
  • methods:{
  • fn(){console.log("Box2组件的方法")}
  • },
  • filters: {},
  • watch: {},
  • computed: {},
  • directives: {},
  • beforeCreate() {},
  • }
  • },
  • filters: {},
  • watch: {},
  • computed: {},
  • directives: {},
  • beforeCreate() {},
  • })
  • script>
  • 1.全局组件:

    全局:所有组件共同的功能(指令,过滤器,组件)

    组件的属性不能用大写字母

    注册组件时,组件名不要用系统已经使用过的,组件template模板中,只能有一个根元素
    组件的名字可以用驼峰命名法,但是使用的时候必须用连字符
    全局注册的组件使用时不能使用单标签(不会报错,但是只能使用一次 多次使用只显示第一个)

    注册的组件不要跟系统标签同名


    2.局部组件:

    局部:只有当前组件的功能(指令,过滤器,组件)

    一个vm(根组件)实例可以有多个局部组件,但是只能供当前vm实例使用

     3.组件的嵌套:

    .vue文件既可以是一个页面,也可以是一个组件
    它可以被别人.vue文件引入 然后作为组件使用

    1. <style type="text/css">
    2. .app {
    3. width: 400px;
    4. height: 900px;
    5. background-color: gold;
    6. }
    7. .box1 {
    8. width: 200px;
    9. height: 200px;
    10. background-color: darkorange;
    11. margin: 20px;
    12. }
    13. .box11{
    14. width: 100px;
    15. height: 50px;
    16. background-color: hotpink;
    17. margin: 20px;
    18. }
    19. style>
    20. <div id='app' class="app">
    21. <Box1>Box1>
    22. <Box1>Box1>
    23. <Box2>Box2>
    24. <p>{{msg|box1tool}}p>
    25. <p v-color2="'blue'" v-color>{{msg|alltool1}}p>
    26. <allbox>allbox>
    27. div>
    28. <script>
    29. // 全局:所有组件共同的功能(指令,过滤器,组件)
    30. // 局部:只有当前组件的功能(指令,过滤器,组件)
    31. Vue.filter("alltool1",function(str){
    32. return str+"-alltool1"
    33. })
    34. Vue.filter("alltool2",function(str){ //注册过滤器
    35. return str+"-alltool1"
    36. })
    37. Vue.directive("color",function(el,obj){ //注册全局自定义指令
    38. el.style.color=obj.value||"red"
    39. })
    40. Vue.component("allbox",{
    41. template:"
      6666allbox
      "
    42. })
    43. var vm = new Vue({
    44. el: '#app',
    45. data: {
    46. msg:"appdata"
    47. },
    48. methods: {},
    49. components: {
    50. Box1: { // 不能访问上面的data
    51. template: `
    52. {{msg|box1tool}}

    53. {{msg|alltool1}}

    54. `,
  • data: function() {
  • return {
  • msg: "hello"
  • }
  • },
  • methods: {},
  • filters: {
  • box1tool(str) {
  • return str + "box1-filter"
  • }
  • },
  • directives:{
  • color2:{
  • inserted(el,obj){
  • el.style.background=obj.value||"red"
  • }
  • }
  • },
  • components:{
  • Box11:{ //组件的嵌套
  • template:`
  • box11

  • `
  • }
  • }
  • },
  • Box2:{
  • template:`
  • {{msg|box1tool}}

  • {{msg|alltool1}}

  • `,
  • data:function(){
  • return {
  • msg:"box2data"
  • }
  • }
  • }
  • }
  • })
  • script>
  • 4.单文件组件:

    vue create init ==>下载后启动,就会自己生成vue页面

    引入:@1官方脚手架 @2挂载vm对象 @3组件引入并渲染到vm中

    单文件组件也有全局组件和局部组件
    只是把一个组件单独写在一个.vue文件中,供别的组件引入然后注册
    引入文件时:一般使用相对路径  上一下用../  同级使用./   下级使用/   @ 代表src文件夹

    注册的组件名不能跟Vue中的和原生DOM的重名,注册的名字是驼峰,使用时就用连字符

    注册的组件,使用时可以用双标签也可以用单标签:如果有插槽必须使用双标签

    如果.Vue的script注释了,在打包的时候Vue的打包环境,会帮我们把这个文件解析为一个对象,然后给这个对象添加一个template属性,值为解析的