.vue文件的结构

vue create创建的初始项目中包含Home.view和About.vue两个视图,在src/views目录下,我们一般添加页面也放在这个目录下。

每个view包含3部分:

  • template 页面的模版,内容是html格式
  • script 页面中的数据处理部分
  • style 样式表

template

这部分和HTML语法类似,只是给元素增加一些VUE特有的属性。这些属性一般以v-开头。

  • v-bind:htmlProperty="var in data() | 表达式" 把html的属性和data中的变量或表达式绑定;data更新时,html自动更新
  • v-on:htmlEvent="function in methods" 监听事件
  • v-model="var in data()" 双向绑定,html里值更新后,会自动更新data里对应的变量

v-bind: 可以简写成 :,例如: v-bind:class="styleClass"可简写成:class="styleClass"

v-on: 可简写成 @,例如: v-on:click="buttonClicked"可简写成@click="ButtonClicked"

script

这里写javascript,遵守如下结构:

import MyComponent from '@/components/MyComponent.vue' //使用的自定义组件,js等需要在这里import进来;@表示src目录;

<script>
export default {
  name: '视图名称', //可省略,建议每个view定义一个不同的名称,方便找错
  components: {MyComponent}, //此view中使用的组件;如果不使用组件,可省略慈航
  data() {
    return {
      // 在这里定义数据结构,有初始值的赋初始值,没有的写null,把结构写完整
    }
  },
  // view生命周期内的钩子事件在这里定义;具体有哪些钩子函数请参考生命周期章节
  created: function(){
    console.log('created')
  },
  beforeDestroy: function(){
    console.log('beforeDestroy')
  }
  methods: {
    //此view内的方法,全部使用this.functionName调用
    //只要能用this的地方都可以调用
    //可以处理数据、访问后台、返回值
    //在模版里也可以调用这里的方法
    addItem1: function(){

    },
    addItem2: function(){
      //也可以有返回值的
      return 1
    }
  }
}
</script>

在上面的代码中有种简写方式

components: {MyComponent}

components: {MyComponent: MyComponent}

的简写,两者效果相同。在属性和值的名称完全一致时,可以用这种简写,这种简写在VUE项目中广泛存在。

style

这里就是CSS,如果你喜欢用LESS、SASS、SCSSS等预编译CSS技术,先要安装对应的插件,然后在这里可以使用,需要增加lang="less"来告诉编译器用的是哪种语言。

scoped属性,有这个属性标志着这里写的css仅仅对这个vue文件内的模版生效。不会成为全局的css。我建议每个View内的css都是局部生效的,仅对view本身有效。需要全局生效的放到:

  • App.vue内
  • index.html 或在index.html引用外部css文件

如果每个view内有全局css会对整个项目的管理维护是一种伤害。

MVVM架构

在一个扩展名是.vue的视图内,template部分是MVVM中的第一个V(View),script部分中的data()则对应MVVM中的M(Model),其余部分的script则对应VM(ViewModel)。如果要给style分布也归类,可放到View部分。

results matching ""

    No results matching ""