美文网首页
vue.js浅入学习

vue.js浅入学习

作者: codingQi | 来源:发表于2017-02-17 14:42 被阅读0次

    Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件Vue 生态系统支持的库开发的复杂单页应用。

    Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定组合的视图组件

    刚开始接触,就跟着文档写了一些小的实现demo:
    首先,进入工程learn vue/demo/目录下,然后在此目录下新建demo1.html,然后就可以在里面写代码了。
    下载vue,我使用npm install来安装vue的,因此就这样引进html文档里:

    < script src = "./node_modules/vue/dist/vue.js" > </script> /
    

    注意:这个要放在html底下的,因为渲染页面是遵循html从上向下依次读取的,如果顺序放错,会出现错误提示。

    1. 声明式渲染
      Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统:
      将数据和 DOM 已经被绑定在一起,所有的元素都是响应式的。
      除了绑定插入的文本内容,还可以通过v-bind来绑定 DOM 元素属性。v-bind 属性被称为指令。指令带有前缀 v-,以表示它们是 Vue.js 提供的特殊属性。
    2. 条件与循环
      v-if
      v-for
    3. 处理用户输入(按钮、表单)
      ·为了让用户和你的应用进行互动,我们可以用 v-on 指令绑定一个监听事件用于调用我们 Vue 实例中定义的方法,如:click。
      ·Vue 也提供了** v-model** 指令,它使得在表单输入和应用状态中做双向数据绑定变得非常轻巧。
    4. 用组件构建(应用)
      组件系统是 Vue.js 另一个重要概念,因为它提供了一种抽象,让我们可以用独立可复用的小组件来构建大型应用。
      在 Vue 里,一个组件实质上是一个拥有预定义选项的一个 Vue 实例:
    // Define a new component called todo-item
    Vue.component('todo-item', {
        template: '<li>This is a todo</li>'
    })
    

    现在你可以在另一个组件模板中写入它:

    <ol>
      <!-- Create an instance of the todo-item component -->
      <todo-item></todo-item>
    </ol>
    

    但是这样会为每个 todo 渲染同样的文本,我们应该将数据从父作用域传到子组件。那就修改一下组件的定义,使得它能够接受一个 prop
    字段:

    Vue.component('todo-item', {
      // The todo-item component now accepts a
      // "prop", which is like a custom attribute.
      // This prop is called todo.
      props: ['todo'],
      template: '<li>{{ todo.text }}</li>'
    })
    

    现在,就可以使用 v-bind 指令将 todo 传到每一个重复的组件中:

    <div id="app-7">
      <ol>
        <!-- Now we provide each todo-item with the todo object    -->
        <!-- it's representing, so that its content can be dynamic -->
        <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
      </ol>
    </div>
    Vue.component('todo-item', {
        props: ['todo'],
        template: '<li>{{ todo.text }}</li>'
    }) var app7 = new Vue({
        el: '#app-7',
        data: {
            groceryList: [{
                text: 'Vegetables'
            },
            {
                text: 'Cheese'
            },
            {
                text: 'Whatever else humans are supposed to eat'
            }]
        }
    })
    

    这是一个简单的例子,将应用分割成了两个更小的单元,子元素通过 props 接口实现了与父亲元素很好的解耦。我们现在可以在不影响到父应用的基础上,进一步为我们的 todo 组件改进更多复杂的模板和逻辑。
    下面是demo1.html的所有demo代码:

    <!DOCTYPE html>
    <html>
    <head lang="en"> 
    <meta charset="UTF-8" /> 
    <title></title> 
    </head> 
    <body> 
    <div> 
     <!-- 1111111--> 
     <div id="hello"> 
      <p>{{message1}}</p> 
     </div> 
     <!--2222222--> 
     <div id="hover"> 
      <p v-bind:title="message2"> Hover your mouse over me for a few seconds to see my dynamically bound title!</p> 
     </div> 
     <!-- 控制元素的显示--> 
     <div id="app-3"> 
      <p v-if="seen">you can see me ~~~~</p> 
     </div> 
     <div id="app-4"> 
      <ol> 
       <li v-for="todo in todos"> {{todo.text}} </li> 
      </ol> 
     </div> 
     <div id="app-5"> 
      <p>{{message5}}</p> 
      <button v-on:click="reverseMessage5">reverse message5</button> 
     </div> 
     <div id="app-6"> 
      <p>{{message6}}</p> 
      <input v-model="message6" /> 
     </div> 
     <div id="app-7"> 
      <ol> 
       <li v-for="item in groceryList">{{item.text}}</li> 
       <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item> 
      </ol> 
     </div> 
    </div> 
    <script src="./node_modules/vue/dist/vue.js"></script> 
    <script type="text/javascript">
          var a1 = new Vue({
              el:'#hello',
              data:{
                  message1:'hello good vue!'
              }
          });
          var a2 = new Vue({
              el:'#hover',
              data:{
                  message2:"you loaded this page on"  +new Date()
              }
          });
          var a3 = new Vue({
              el:'#app-3',
              data:{
                  seen:true
              }
          });
          var a4 = new Vue({
              el:'#app-4',
              data:{
                      todos:[
    
                  {text:'good javascrilpt'},
                  {text:'good vue.js'},
                  {text:'good applications'}
              ]
          }
          });
          a4.todos.pop();
    
          var a5 = new Vue({
              el:'#app-5',
              data:{
                  message5:'wang qi'
              },
              methods:{
                  reverseMessage5:function(){
                      this.message5 = this.message5.split('').reverse().join('');
                  }
              }
          });
          var a6 = new Vue({
              el:'#app-6',
              data:{
                  message6:'你好啊!!!'
              }
          });
    
          Vue.component('todo-item',{
              props:['todo'],
              template:'<li>{{todo.text}}</li>'
          });
          var a7 = new Vue({
              el:'#app-7',
              data:{
                  groceryList:[
                      { text:'Vegetables'},
                      { text:'Cheese' },
                      { text:'potato' }
                  ]
              }
          });
      </script>  
    </body>
    </html>
    

    持之以恒,一步一个脚印。。。。。。

    相关文章

      网友评论

          本文标题:vue.js浅入学习

          本文链接:https://www.haomeiwen.com/subject/nlukwttx.html