美文网首页
vue项目学习路径

vue项目学习路径

作者: yaoyao妖妖 | 来源:发表于2018-07-06 12:51 被阅读21次

1-1
1.基础语法 MVVM 模式 组件化 生命周期 动画特效

2.实战项目-环境搭建-Git - 数据模拟 - 本地开发

3.联调-真机测试-上线

Axios :假数据获取
Vue Router:多界面之间的路由
Vuex:各个组件间数据共享
异步组件:让代码上线性能更优
Stylus:前端样式
递归组件:组件调用自己的效果
插件
公用组件

学习前提
.js(重要基础) ES6 webpack( 项目打包 ) npm(node的一个包管理工具)

2.index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TodoList</title>
    <!--引入/vue.js-->
    <script src="./vue.js"> </script>
</head>
<body>
   <div id="app">
           //v-model  代表将v-model的inputValue和vue里面的data的inputValue值进行了双向绑定
       <input type="text" v-model="inputValue"/>
            //v-on  代表点击
       <button v-on:click="handleBtnClick">提交</button>
       <ul>
            //v-for=代表循环
           <li v-for="item in list">{{item}}</li>
       </ul>
   </div>


   <script>
       var app = new Vue({
           el:'#app',//创建的vue实例负责处理的区域
           data: {
               list:[]//数组,
               inputValue:''
           },
           methods:{//btn按钮的点击事件都需要在这个地方定义
               handleBtnClick:function () {
                   this.list.push(this.inputValue)//向数组中添加元素
                   this.inputValue = ''//
               }
           }
       })

   </script>

</body>

</html>

3.MVVM设计模式(2-4)
M(数据)V(试图)*P(控制器)
MVVM *M(数据) V(dom) VM(vue)

4.前端组件化的概念
页面的一个部分,将整个页面分成几部分,分为几个组件

5.1 将li组件化(全局组件--可以直接在上面的模板中使用)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TodoList</title>
    <!--引入/vue.js-->
    <script src="./vue.js"> </script>
</head>
<body>
   <div id="app">

       <input type="text" v-model="inputValue"/>
       <button v-on:click="handleBtnClick">提交</button>
       <ul>
           <!todo-item对应下面的TodoItem,使用驼峰写法,或者变成小写,
           但是需要在下一个大写字母前添加横杠>
           <!v-for--循环list里面的item-->
           <!v-bind--绑定item的值给todo-item组件>
           <!todo-item代表一个组件>
           <todo-item v-bind:content="item"
                      v-for="item in list">
           </todo-item>

       </ul>
   </div>


   <script>

       //vue创建全局组件
       // TodoItem:组件名相对于外层容器,TodoItem是一个子组件
       // props:子组件接收内容
       // template:
       // Vue控件赋值需要使用{{}}的语法
        Vue.component("TodoItem",{
            props:['content'],//组件用props接收content内容
            template:"<li >{{ this.content }}</li>"
        })

       var app = new Vue({
           el:'#app',//创建的vue实例负责处理的区域
           data: {
               inputValue:'',
               list:[]
           },
           methods:{
               handleBtnClick:function () {
                   this.list.push(this.inputValue)
                   this.inputValue = ''
               }
           }
       })

   </script>

</body>

</html>

5.2 将li组件化(局部组件--在vue中component中注册组件)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TodoList</title>
    <!--引入/vue.js-->
    <script src="./vue.js"> </script>
</head>
<body>
   <div id="app">

       <input type="text" v-model="inputValue"/>
       <button v-on:click="handleBtnClick">提交</button>
       <ul>
           <!todo-item对应下面的TodoItem,使用驼峰写法,或者变成小写,
           但是需要在下一个大写字母前添加横杠>
           <!v-for--循环list里面的item-->
           <!v-bind--绑定item的值给todo-item组件>
           <!todo-item代表一个组件>
           <todo-item v-bind:content="item"
                      v-for="item in list">
           </todo-item>

       </ul>
   </div>


   <script>

       //vue创建局部组件
       // TodoItem:组件名
       // props:接收组件内控件内容
       // template:组件内的控件
       // Vue控件赋值需要使用{{}}的语法

       var TodoItem ={
           props:['content'],//组件用props接收content内容
           template:"<li >{{ this.content }}</li>"
       }
       var app = new Vue({
           el:'#app',//创建的vue实例负责处理的区域
           components:{//将局部组件注册一下
               TodoItem:TodoItem
           },
           data: {
               inputValue:'',
               list:[]
           },
           methods:{
               handleBtnClick:function () {
                   this.list.push(this.inputValue)
                   this.inputValue = ''
               }
           }
       })
   </script>
</body>
</html>

6.组件之间的传值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TodoList</title>
    <!--引入/vue.js-->
    <script src="./vue.js"> </script>
</head>
<body>
   <div id="app">

       <input type="text" v-model="inputValue"/>
       <button v-on:click="handleBtnClick">提交</button>
       <ul>
           <!--v-on 监听事件简写@-->
           <!--v-bind 可以省略不写-->
           <!--父组件向子组件传值   1.v-bind的形式数据传递,子组件props接收-->
           <!--子组件向父组件传值   2.$emit向父组件触发事件  2.父组件监听并定义触发事件-->
           <todo-item v-bind:content="item"
                      v-bind:index="index"
                      v-for="(item,index) in list"  @delete="handleItemDelete">
           </todo-item>

       </ul>
   </div>


   <script>

       var TodoItem ={
           props:['content','index'],//组件用props接收content内容,index代表下标
           //@click是 v-on:click 的简写方式
           template:"<li @click='handleItemClick'>{{ content }}</li>",
           methods:{
               handleItemClick: function () {
                   this.$emit("delete",this.index);//向外触犯事件this.index,参数为
               }

           }
       }

       var app = new Vue({
           el:'#app',//创建的vue实例负责处理的区域
           components:{//将局部组件注册一下
               TodoItem:TodoItem
           },
           data: {

               inputValue:'',
               list:[]
           },
           methods:{
               handleBtnClick:function () {
                   this.list.push(this.inputValue)
                   this.inputValue = ''
               },
               handleItemDelete:function (index) {
                   this.list.splice(index,1)//删除一项
               }
           }
       })

   </script>

</body>

</html>

相关文章

网友评论

      本文标题:vue项目学习路径

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