vue webpack 快速部署

https://segmentfault.com/a/1190000010960666

https://blog.csdn.net/qq_31201781/article/details/78778193 vue nginx代理接口请求

  • v-text {{msg}} 是输出原文本,不会渲染html页面

  • v-text 会替换掉标签内的值,{{msg}} 不会替换,但是会有闪烁问题

  • v-html 可以渲染html页面

  • v-bind 用来绑定属性并赋值,可以简写为 :

    • <button v-bind:title="mytitle+1232"></button>

    • <button :title="mytitle+1232">v-bind</button>

  • v-on 绑定事件 可以用@代替

  • .stop阻止冒泡

<div id="app">
<!-- 注意修饰符可以串联的 -->
    <!-- 阻止默认 -->
    <!-- 使用once只触发一次事件 -->
    <a href="http//:www.baidu.com" @click.prevent.once="du">baidu once</a>  
    <!-- 阻止冒泡事件 -->
<div class="outer" @click="outer">    <div class="inner1" @click="d"><button class="inner"  value="" @click.stop="btn">戳他</button></div></div>


<div class="outer" @click="outer">    <div class="inner1" @click.stop="d"><button class="inner"  value="" @click="btn">戳他</button></div></div>

    <!-- 捕获出发事件 -->
    <div class="inner1" @click.capture="d"><button class="inner"  value="" @click.capture="btn">戳他</button></div>

    <!-- 只有事件本身才触发事件 和stop的区别,stop阻止当前元素及其后面元素的的冒泡,self只负责自己的冒泡,不负责别人的冒泡-->
    <div class="inner1" @click.self="d"><button class="inner"  value="" @click.self="btn">戳他</button></div>
</div>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<style>
[v-cloak] {
    display: none;
}
</style>

<body>
    <div id="app">
        <!-- 解决数据初始化闪烁问题 -->
        <p v-cloak>  
            <!-- 以下渲染有闪烁问题,插值表达式,只会渲染自己的值,不会替换其他的值 -->
           +++++{{ msg }}-------- 
        </p>

        <p>
            {{msg2}}
        </p>
        <!-- v-text不存在闪烁问题,数据渲染会替换原来的数据 -->
        <h3 v-text="msg">---+++=====</h3>
        <div v-text="msg2">

        </div>


        <div v-html="msg2">

        </div>

    </div>


    <!-- 总结 -->
<!-- 
v-text  {{msg}}  是输出原文本,不会渲染html页面
v-text 会替换掉标签内的值,{{msg}} 不会替换,但是会有闪烁问题

v-html 可以渲染html页面
     -->
    <script src="lib/vue.js"></script>
    <script>
    var vm=new Vue({
        el:"#app",
        data:{
            msg:'123',
            msg2:"<h1>i am h1</h1>",
        }
    })
    </script>
</body>
</html>
  • 利用vue定义类和样式
<body>
    <script src="lib/vue.js"></script>
    <div id="app">
        <!-- 类名必须用单引号包含起来 数组中可以使用三元表达式 -->
        <h1 :class="['thin','pink',flag? 'active': '']">big  h1</h1>

<!-- 利用对象形式去写 -->
        <h1 :class="['thin','pink',{'active':false}]">big  h1</h1>

<!-- 在用v-bind绑定类的时候, -->
        <h1 :class="classobj">big  h1</h1>
<!-- 行内样式 -->
        <h3 :style="stobj">this is h3</h3>
        <!-- 多对象定义样式 -->
        <h3 :style="[stobj,stobj1]">this is h3</h3>
    </div>
    <script>
    var vm=new Vue({
        el:"#app",
        data:{
            flag:true,
            classobj:{thin:true,pink:true},
            stobj:{color:'green','font-weight':200},
            stobj1:{color:'pink'},
        },
        methods:{
        
        }

    })
    
    
    </script>
  • v-for 的使用
    <!-- view 层 -->
<div id="app">
    <!-- 循环普通数组 -->
    <p v-for="(item,i) in list">
       value: {{item}} ------------key: {{i}}
</p>

<!-- 循环对象数组 -->
<p v-for="(item,i) in list1">
        value: {{item.name}} ------------key: {{i}}
 </p>


 <!-- 遍历对象,遍历对象身上的价值对的时候,除了有v-k之外,在第三个位置有索引 -->

 <p v-for="(value,key,i) in list2">
        value: {{value}} ------------key: {{key}}------index:{{i}}
 </p>


 <!-- v-for 迭代数字, -->
 <p v-for="count in 10">这是第{{count}}次循环</p>


<!-- v-for循环的时候key属性只能使用number 或者string,
    key在使用的时候必须使用v-bind制定属性绑定
    用key来保证每条数据的唯一性和关联性


-->
<p v-for="(item,i) in list1" :key="item.id">

  <input type="checkbox"> {{item.id}}-----{{item.name}}
      
 </p>
</div>

    <script src="lib/vue.js"></script>
    <script>

        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           list2:{id:1,name:'lisi'},
           list1:[{id:1,name:'lisi'},{id:1,name:'lisi'},{id:1,name:'lisi'},{id:1,name:'lisi'}],
           list:[1,2,3,4,5,6,7],
           msg:'lean vue'//通过vue的指令渲染数据--不提倡手动操作dom元素
       },//存放el所用到的数据

    })


    </script>
  • v-show v-if
    <!-- view 层 -->
<div id="app">
    <button @click="ch">change flag</button>
    <button @click="flag=!flag">change flag</button>

    <!-- v-if  元素被移除 较高的切换性能消耗,v-show是元素被隐藏,有较高的渲染消耗 -->
<h3 v-if="flag">v-if 的元素</h3>
<h3 v-show="flag">v-show 的元素</h3>
</div>

    <script src="lib/vue.js"></script>
    <script>

        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           flag:true,
           msg:'lean vue'//通过vue的指令渲染数据--不提倡手动操作dom元素
       },//存放el所用到的数据
       methods:{
           ch(){
               this.flag=!this.flag
           }
       }

    })


    </script>

过滤器filter的使用

<body>

    <!-- view 层 -->
<div id="app">
{{msg | msgFormat("ni hao",'123') | f2}}
</div>

    <script src="lib/vue.js"></script>
    <script>
//定义一个过滤器  参数以第一个位置永远是msg,就是过滤器前面第一个值
Vue.filter('msgFormat',function(msg,a,b){
  return  msg.replace(/vue/g,2);
})

Vue.filter('f2',function(msg){
    return  msg+'====';
})
        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           msg:'lean vue vue01 vue02 vue03'//通过vue的指令渲染数据--不提倡手动操作dom元素
       },//存放el所用到的数据

    })


    </script>
jsonp请求原理介绍
 客户端
    <script>



    function  getInfo(e){
        console.log(e)
    }


    </script>


<script src="http://127.0.0.1/vue10/api.php?callback=getInfo"></script>


服务端
<?php
$arr=array(
    ['name'=>'xiaoming','age'=>24,'sex'=>'man'],
    ['name'=>'xiaoming1','age'=>24,'sex'=>'man'],
    ['name'=>'xiaoming2','age'=>24,'sex'=>'man'],
    ['name'=>'xiaoming3','age'=>24,'sex'=>'man'],
);

$func=$_GET['callback'];
$str=json_encode($arr);
echo $func.'('.$str.')';die;
echo 'getInfo(1111)';die;

常用命令

v-for="item in list" :key="item.id"
  • 组件定义的方法:
<div id="app">
    <com1></com1>
    <com2></com2>

    
</div>


<template id="tmp1">
    <div>
        <h1>i am tmp1</h1>
    </div>
</template>


<template id="tmp2">
        <div>
            <h1>i am tmp2</h1>
        </div>
    </template>

 // 第一种方式   全局定义
    // 直接挂在到vue身上

    
    Vue.component("com1",{
            template:"#tmp1"
    })

//第二种方式  局内定义  需要实例去挂载
    var com2={
        template:"#tmp2",
        props: ['title'],
        methods:{
            show(){
                console.log(this.title)
            }
        }
    }

        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           hight:'i am 50',
         list:[
             {id:Date.now(),user:'libai',content:'i am libai'},
             {id:Date.now(),user:'libai0',content:'i am libai0'},
             {id:Date.now(),user:'libai00',content:'i am libai00'},
         ]
       },//存放el所用到的数据

       components:{
        com2
       }

    })


    </script>
  • 组件获取父组件的属性
给组件赋值的方法
<div id="app">
    <com1></com1>

//注意:其实给组件赋值用的是props,如果要用父组件赋值,当然要bind一下啦
    <com2 :title="hight"></com2>

    
</div>


<template id="tmp1">
    <div>
        <h1>i am tmp1</h1>
    </div>
</template>


<template id="tmp2" v-bind:title="4444">
        <div>
            <h1>i am tmp2</h1>
            <button @click="show">click me </button>
        </div>
    </template>
    <script src="lib/vue.js"></script>
    <script>

    // 第一种方式   全局定义
    // 直接挂在到vue身上

    
    Vue.component("com1",{
            template:"#tmp1"
    })

//第二种方式  局内定义  需要实例去挂载
    var com2={
        template:"#tmp2",
        props: ['title'],
        methods:{
            show(){
               console.log(this.title)
            }
        }
    }

        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           hight:'i am 50',
         list:[
             {id:Date.now(),user:'libai',content:'i am libai'},
             {id:Date.now(),user:'libai0',content:'i am libai0'},
             {id:Date.now(),user:'libai00',content:'i am libai00'},
         ]
       },//存放el所用到的数据

       components:{
        com2
       }

    })


    </script>
  • 方法绑定
在外面方法传递进去  show就是vue身上的方法
   <com2 :title="hight" @fun="show"></com2>

//在component里面
        methods:{
          myclick(){

           
            this.$emit('fun')
          }
        }
  • 路由简单实用
    • 注意:先定义组件啊,要不然调取不到
<div id="app">
    <!-- 不推荐使用的#的a标签 -->
    <a href="#/login">点我登录</a>
    <a href="#/reg">点我注册</a>
<!-- 通过tag 定义标签的名称 -->
    <router-link to="login" tag="span">login</router-link>
    <router-link to="reg">reg</router-link>
     <router-view></router-view>
</div>


    <script>
        
// 1.引入包   2.创建router对象,3.该关联vm  4.页面放容器 

var login={
    template:"<h1>我是login</h1>"
}


var reg={
    template:"<h1>我是reg</h1>"
}
//创建路由对象
var  routerObj = new VueRouter({
    routes:[
        //  属性1  监听的链接地址
        // 属性2  是compotent,便是展示的对应页面  跟的对象名称
        {path:'/',redirect:'/login'},
        {path:'/login',component:login},
        {path:'/reg',component:reg},
    ]   //表示路由匹配规则
})


        // vm层
   var vm= new Vue({   //Vue 第一个字母大写

       el:'#app',//表示vue要控制页面上的哪个区域--在哪个区域渲染数据,
       data:{
           msg:'lean vue'//通过vue的指令渲染数据--不提倡手动操作dom元素
       },//存放el所用到的数据
       router:routerObj,

    })


    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,724评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,104评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,142评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,086评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,076评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,914评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,220评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,871评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,318评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,834评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,951评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,574评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,162评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,162评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,383评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,349评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,652评论 2 343

推荐阅读更多精彩内容

  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,185评论 0 25
  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,525评论 0 6
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,045评论 0 29
  • 相关概念 混合开发和前后端分离 混合开发(服务器端渲染) 前后端分离后端提供接口,前端开发界面效果(专注于用户的交...
    他爱在黑暗中漫游阅读 2,765评论 4 45
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,741评论 1 12