前言

学习新的技术以及语言,首当前冲的学习方式肯定是官网,别人的博客以及视频可以帮助你加速理解,
vue官网:https://cn.vuejs.org/v2/guide/

vue.js是什么

所有的框架都是帮助你整合资源,简化开发者的工作量,框架就像工具,人的聪明主要是会发明创造并使用工具
用的好的单车变摩托
前端(十六):Vue初步了解_前端开发
vue 是一套用于构建用户界面的渐进式框架,Vue 被设计为可以自底向上逐层应用,只关注图层,并且与其他组件兼容性好

起步

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>

或者下载Vue.js 直接导入本地
案例hello world

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1"
    />
    <title>1</title>
    <script src="./js/vue.js"></script>
  </head>

  <body>
    <div id="app">{{ message }}</div>

    <script>
      var app1 = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!',
        },
      })
    </script>
  </body>
</html>

这里的script 需要在div的下面.否则报错,id选择器找不到

除了直接在文本中插值,还可以通过v-bind绑定元素 attribute,指令带有前缀v-,表示是Vue提供的特殊attribute


    <div id="app-2">
      <span v-bind:title="message">
        鼠标悬停几秒钟查看此处动态绑定的提示信息!
      </span>
    </div>
    <script>
      var app2 = new Vue({
        el: '#app-2',
        data: {
          message: '页面加载于 ' + new Date().toLocaleString(),
        },
      })
    </script>

在控制台重新将app2变量的值进行修改,会发生页面上值也会发生动态变化
前端(十六):Vue初步了解_前端开发_02前端(十六):Vue初步了解_前端开发_03

条件与循环

控制台修改变量的值,该模块消失


    <div id="app-3">
      <p v-if="seen">现在你看到我了</p>
    </div>

    <script>
      var app3 = new Vue({
        el: '#app-3',
        data: {
          seen: true,
        },
      })
    </script>

前端(十六):Vue初步了解_前端开发_04
同时vue也可以绑定DOM结构 例如使用v-for渲染项目列表

 <div id="app-4">
      <ol>
        <li v-for="todo in todos">{{todo.text}}</li>
      </ol>
    </div>

    <script>
      var app4 = new Vue({
        el: '#app-4',
        data: {
          todos: [
            { text: 'study js' },
            { text: 'study vue' },
            { text: 'study all ' },
          ],
        },
      })
    </script>

通过v-on指令添加一个事件监听器,通过它调用Vue实例中定义的方法

 <div id="app-5">
      <p>{{ message }}</p>
      <button v-on:click="reverseMessage">反转消息</button>
    </div>

    <script>
      new Vue({
        el: '#app-5',
        data: {
          message: 'Hello Vue.js',
        },
        methods: {
          reverseMessage: function () {
            this.message = this.message.split('').reverse().join('')
          },
        },
      })
    </script>

v-model 实现双向绑定

    <div id="app-6">
      <p>{{ message }}</p>
      <input v-model="message">    
    </div>

    <script>
      var app6 = new Vue({
        el: '#app-6',
        data: {
     message: 'Hello Vue!'
       }
      })
    </script>

前端(十六):Vue初步了解_前端开发_05
组件系统的应用构建

将抽象,允许我们使用小型,独立和通常可复用组件构建大型应用

前端(十六):Vue初步了解_前端开发_06
注册模板

// 定义名为 todo-item 的新组件
Vue.component('todo-item', {
  template: '<li>这是个待办项</li>'
})

var app = new Vue(...

在body里面就可以当类似标签使用

<ol>
  <!-- 创建一个 todo-item 组件的实例 -->
  <todo-item></todo-item>
</ol>
   <div id="app7">
        <ol>
          <!-- 现在我们为每个 todo-item 提供 todo 对象
      todo 对象是变量,即其内容可以是动态的。
      我们也需要为每个组件提供一个“key”,稍后再
      作详细解释。 -->
      <todo-item v-for="item in testList" v-bind:todo="item" v-bind:key="item.id">
      </todo-item>
        </ol>
    </div>

    </div>

    <script>
      Vue.component('todo-item',{
        //todo-item 组件 ,prop 相当于一个自定义的attribute,名为todo
        props: ['todo'],
        template: '<li>{{todo.text}}</li>'
      })

      var app7 = new Vue({
        el:"#app7",
        data:{
          testList:[
          { id: 0, text: '蔬菜' },
      { id: 1, text: '奶酪' },
      { id: 2, text: '随便其它什么人吃的东西' }
          ]
        }
      })
    </script>