【vue教程】来自JSpang 技术胖的视频

   一、入门篇qvq

照例  原教程来源 https://jspang.com/posts/2017/02/23/vue2-1.html  只是看了视频学习+整理 不是原创

1  computed。注意这里要 返回一个新的 。。 不然会改变原有的数据,这样就非常不好了qvq。

2  sort 某种程度上其实是  按照首字母来排序的 就很蠢。。qaq

那么这里要用默认的不好,我们就用自己写的。

function sortNumber(a,b){
            return a-b
}

这个写在scrpit那个外面的qwq  

如果a-b是true的话,那就是a大。

再来(数据是item,返回 的是sortItems) 所以没关系。

computed:{
    sortItems:function(){
    return this.items.sort(sortNumber);  这个里面的本来是没的,然后写了自己用的方法穿了进去。。
    } 
 }

3 这里定义了一下,怎么来输出对象qwq。

排序是要自己写的 还没practice

【】【】【】

4 {{message}} 这种方法  还是有弊端的qwq

因为,一旦网速慢(从上往下渲染的时候 ),或者是JavaScript出错的时候,就会坏掉,不友好,直接显示{{message||

那我们可以用 <span v-text="message" ></span>

这样如果打开,是没  是没有{{ }}  这个东东的qwq 它就对用户友好一点.

5 如果dodo: '<h2>aaaa</h2>' 这种的时候就用v-html来就好了qwq..

但是,尽量少用,会引起xss攻击

6  神奇的v-on小技巧hhhh     v-on: keyup.enter=“onEnter”

@keyup.enter="onEnter"   v-model='fenshu2'  

qwq  这里大概是  啊啊啊不行还是要自己写啊

***********但是~ 这里有一个小bug 你发现了吗?

onEnter: function(){

    this.fenshu=this.fenshu+this.fenshu2

后面的改成 parseInt(this.fenshu2)

不然的话  它是一个字符串 只是粘到后面去...

             onEnter:function(){

                        this.count=this.count+parseInt(this.secondCount);

                    }

你要写parseInt  懂吧  qwq

onkeyup 和v-model的意思是 绑定了model  然后输入进去的东西就是绑定的model  

键盘触发 只是 按下的时候才进行键盘触发(提交model的值)而已

7  v-model指令,我理解为绑定数据源。就是把数据绑定在特定的表单元素上,可以很容易的实现双向数据绑定。

<input>表单后面直接写个v-model  非常的方便 你懂8   qwq

有这么几个修饰词

比如 v-model.lazy  这样加完之后,是懒加载,只有失去焦点的时候才会自动更新qwq

.number   只有 写的是数字才会给绑定上

.trim 是修剪左右两边的空格 qwq

试验了一下 真的有点神奇 qwq  它们都很恪尽职守的  

虽然input进去的内容不能给你马上删除 但是讲真出来还不错的

8 这个 v-model的绑定,

它可以和checkbox多选绑定,可以和checkbox

radio 是单选框的绑定

 

        <input type="radio" id="two" value="女啊啊啊 " v-model="sex">

        <label for="one">女</label>

         <p>{{sex}}</p>

qwq 我们可以知道: 这个value就是model绑定进去的值...qwq

你懂8 你懂8  qwq  {{sex}} 里面就是那个value 给你搞过去的值qwq

9 v-bind指令  我们绑定上src 动态赋值  qwq

当然 写了冒号就可以了

当然 这样的话  就可以在Vue实例里面  下面的data里用了 你懂8 

可以在data里动态改变了  你懂8  工作中有很多需要用到判断  然后就  

<div :class="{classA:isOk}">2、绑定class中的判断</div>
<div :class="[classA,classB]">3、绑定class中的数组</div>
<div :class="isOk?classA:classB">4、绑定class中的三元表达式判断</div>

10

v-pre指令

在模板中跳过vue的编译,直接输出原始值。就是在标签中加入v-pre就不会输出vue中的data值了。

v-cloak指令

在vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用

结束

好的  第一季大概就是这样 给一个写了很多东西的源代码 吧 好懂的

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="./vue.js"></script>
    <title>v-on事件监听器</title>
</head>

<body>
    <h1>v-on 事件监听器</h1>
    <hr>
    <div id="app">
        本场比赛得分: {{count}}<br />
        {{secondCount}}
        <button v-on:click="jiafen">adds</button>
        <button v-on:click="reduce">reduce</button>
        <input type="text"  v-model="secondCount">
        <input type="text"  v-model.lazy="secondCount">
        <input type="text"  v-model.trim="secondCount">
        <hr>
        <hr>
        <h3>多选按钮绑定一个值</h3>
        <input type="checkbox" id="isTrue" v-model="isTrue">
        {{isTrue}} label for 怕是没什么用哦 (直观上来讲 qwq )
        <label for='isTrue'>{{isTrue}}</label>
        
        <hr>
        <hr>
        <h3>多选绑定一个数组</h3>
        <p>
            <input type="checkbox" id="JSPang" value="JSPang" v-model="web_Names">
            <label for="JSPang">JSPang</label><br />
            <input type="checkbox" id="Panda" value="Panda" v-model="web_Names">
            <label for="JSPang">Panda</label><br />
            <input type="checkbox" id="PanPan" value="PanPan" v-model="web_Names">
            <label for="JSPang">PanPan</label>
            <p>{{web_Names}}</p>
        </p>
        <h3>单选按钮绑定</h3>
        <input type="radio" id="one" value="男" v-model="sex">
        <label for="one">男</label>
        <input type="radio" id="two" value="女啊啊啊  我们可以知道: 这个value就是model绑定进去的值...qwq" v-model="sex">
        <label for="one">女</label>
        <p>{{sex}}</p>


    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data() {
                return {
                    count: 1,
                    message: 'hello',
                    isTrue: true,
                    web_Names: [],
                    sex: 'nan',
                    secondCount:0
                }
            },
            methods: {
                jiafen: function () {
                    this.count++;
                },
                reduce: function () {
                    this.count--;
                },
                onEnter: function () {
                    this.count = this.count + parseInt(this.secondCount);
                }
            },

        })        
    </script>

</body>

</html>

二、全局API篇

第二季第一节

1   Vue.directive('jspang',function(el,binding,vnode){

        // console.log(el);

        //

        el.style='color:'+binding.value;

});

第一节课 vnode没用到qwq

这个el  其实上面写的是<div v-jspang="color"> {{num}} </div>

可以看到,el就是它绑定的值呀qwq  可以的可以的

这里你是log了一个binding  还有binding.name  qwq

这是在干啥啊不懂懂   看起来自定义的和color一起绑定了?

所以我带着网站来了: 下面是技术胖大大的代码

https://jsrun.pro/5BpKp/edit?utm_source=website

然后,如果 <1> vue.directive 里面改了一下background

<2> <div v-jspang='background'> ... 这个挂载的也改了

<3> data里面肯定也改了

这样就可以直接改掉了qwq   外形上 是这样的

好像不能写两个的样子qwqqqqqqqqq什么鬼哦!!!!!!!!因为binding只有一个值?不慌我们带着疑问 继续往下 看( ̄△ ̄;)

2 el: 指令所绑定的元素,可以用来直接操作DOM。

binding: 一个对象,包含指令的很多信息。

vnode: Vue编译生成的虚拟节点

3 自定义指令有五个生命周期(也叫钩子函数),分别是 bind,inserted,update,componentUpdated,unbind

1 bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作。

2 inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。

3 update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。

4 componentUpdated:被绑定元素所在模板完成一次更新周期时调用。

5 unbind:只调用一次,指令与元素解绑时调用。

 

上面的代码  我们可以看到 bind和insert 先已经被调用了~

上面的代码写了个add,那么add的时候update和componentUpdate里面就会调用qwq

还可以解绑,在app 作用域 的外面 用js写一个解绑 外面onclick

function unbind(){

        app.$destroy();

qwq  大概理解了一下 五个声明周期就是这样的...  这样 你看 你又懂了8 

//自定义指令
        Vue.directive('jspang',{
            bind:function(el,binding,vnode){//被绑定
                el.style='color:'+binding.value;
                console.log('1 - bind');
            },
            inserted:function(){//绑定到节点
                console.log('2 - inserted');
            },

还挺好的吧qwq

第二节

1 扩展实例构造器  我觉得还蛮简单的啊.... 

这样复制一下原话吧 

我们想象一个需求,需求是这样的,要在博客页面多处显示作者的网名,并在网名上直接有链接地址。我们希望在html中只需要写<author></author>,这和自定义组件很像,但是他没有传递任何参数,只是个静态标签

var authorExtend = Vue.extend({
    template:"<p><a :href='authorUrl'>{{authorName}}</a></p>",
    data:function(){
    return{
          authorName:'JSPang',
          authorUrl:'http://www.jspang.com'
          }
    }
});

然后我们还要挂载

new authorExtend().$mount('author');

万事俱备 我们已经可以开始用<autho></author>来直接引入它了qwq

【显然,我们可以知道  只有最后挂载那句话才和名字有关~~ 】

author这个~~~ 

2 挂载到普通标签上

巴拉巴拉。。。。。 $mount('#author');

用<author>和<div> 绑定  是一样的... 都可 

 

这里代码是一样的qwq

那个,,,你可以看到。。。  有一个冒号  这说明什么呢

要绑定才有用 因为你不是插值了

【不绑定就获取不到里面的呀】********************** (可怜的格式失效了qwq 啊 我为什么不用markdown写 啊  好像是因为我忘了 qvq

这个更常用的场景在于  我们常常写到组件里,然后就可以实现共享。

第三节

看视频还是有点慢啊qvq

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法。比如在vue构造器内部定义了一个count为1的数据,我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue.set

代码给你。我稍微改了一下,感觉还真的是~~~!!!

js的限制,当你修改数组长度 or利用索引直接更改一个值的时候  vue不会为我们自己动更新 

所以要用Vue。SET

下面的代码可以注释掉那句话 然后看看对比 如果刷新才能重新渲染  很gg 啊你懂吧 没连接后端就等于0了  qwq

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="./vue.min.js"></script>
    <title>Vue.set 全局操作</title>
</head>
<body>
    <h1>Vue.set 全局操作</h1>
    <hr>
    <div id="app">
        <ul>
            <li v-for=" aa in arr">{{aa}}</li>
        </ul>
       
    </div>
    <button onclick="add()">外部添加</button>
 
    <script type="text/javascript">
     
        function add(){
            console.log("我已经执行了");
        //       app.arr[outData.arr.length]='ddd';
           Vue.set(app.arr,outData.arr.length,'ddd');
        }
        var outData={
            arr:['aaa','bbb','ccc']
        };
        var app=new Vue({
            el:'#app',
            data:outData
        })
    </script>
</body>
</html>

反正为知笔记写完从来不看。。 
虽然博客也是。。聊胜于无吧 就

第四节

生命周期 钩子函数qwq。 
一共有10个,这你知道的吧 
create mount update active destroy 
就是比如你操作数据的话 就会调用beforeupdate和update 
哦。。。。。。。。。。。主要是 当你看页面的时候有个东西转转转转 
那大概是create那边写的~ 加载完成了就取消了呗 (好有用鸭 单页应用比较常用 做loading。。 
active是路由里用比较多 
beforeCreate:function(){ 
console.log('1-beforeCreate 初始化之后'); 
}, 
created:function(){ 
console.log('2-created 创建完成'); 
},

第五节 template模板

这啥玩意儿耶。。。

第六节

属性中带’-‘的处理方式 
我们在写属性时经常会加入’-‘来进行分词,比如:,那这时我们在props里如果写成props:[‘form-here’]是错误的,我们必须用小驼峰式写法props:[‘formHere’]。 
这里有坑 尽量少用。。。。?

ommon文件夹用来放共用组件,下面写的leftNav.vue组件就放到这里。 
page文件夹用来放我们的页面模板组件,页面的模板文件放到这里。

.......................

怎么越来越简单啊  我看不下去了  我好烦啊

这种教程的东西对我来说一点用都没有  前几天自己整理还看yyx的例子还自己敲了用的时候就不懂它是啥 忘得干干净净

没用的  我很烦 没用的

实战才有用

但是你接触不到的话  你根本不知道你这点过家家在真的能用的时候算什么

公司好吵啊....  神tm什么都在公司聊   以为别人听不到的吗 烦死

 

 

 

我觉得我适合间歇qwq  忙一段玩一段... 吧

写博客还是很有必要的qwq//  看起来觉得很感慨*?*  反正反正...

反正写题解倒是很有必要这样的..

 

讨论:

什么是有幸福感的事情?

1 和cc一起

2 写网文????  我想看的是评论啊

3 玩可持续游戏

4 画画 (?) 每天画的更好

5 stick to 并且打卡?

6 做饭? 

7 想到可以回家???但是不能呆太久啊qaq

8 魔方 如果 我真的能 坐的特别好  那我也会 很珍惜的吧

读书的感觉吧或许我只是喜欢窝在家里巴拉巴拉。。。

什么是有幸福感的事情?嗯???

8 free code camp 那种的 可以打怪升级 经验累积的(codewars可能也是吧……)

我更喜欢这种qwq。。哎

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值