vue基础

讲师:陈潇冰

课时1 vue基础、常用指令

1.官网下载:  https://cn.vuejs.org/v2/guide/installation.html (也可以直接github)

手册(api文档):https://cn.vuejs.org/v2/api/

2.vue angular的区别

官网中文,容易读;指令有相同有不同;vue个人维护angular由google维护;vue小巧适合移动端,angular1.0适合PC;

(相同点)两者都不兼容低版本的IE;

3.vue的雏形

数据的双向绑定:Vue对象中的data数据发生了改变,则用到该数据的所有的地方都发生了改变。


指令:vue中的指令扩张了HMTL的功能(所有的mvc前端框架的指令都可以这么理解,比如vue/angular...)。

常见的指令:

v-model:  等价于表单元素里的value(表单元素input,常见与Input标签) ,基本格式v-model={{}}。

v-for: 他的基本格式是:v-for="value in json",存在3个参数,value、$key、$index(索引,序列数字)。常见于li标签。复杂格式:v-for="k,v in json"。

(事件指令系列) v-on:click=fn   v-on:movseover=fn  v-on:dblclick=fn   等等:注意写法on后面跟的是“:”,具体的操作(click)后跟的是“=fn”。

v-show  :  v-show="true/flase",其中,“true/false”可以用data中的数据来代替。


data:

可以是字符串、数字、ture\flase、数组arr、json等。


methods:

(格式)add:function (){

this.arr.push("mugua");

  }


注意点:

1. 创建的Vue对象中的"Vue"首字母必须得是大写

2.Vue对象中关于选择器的选择,是与CSS、Jquery等通用的。也有class、id等。表明的是该Vue对象中的data、methods的作用范围。 

3.在涉及到data中的数据的时候,元素属性不带{{}},元素内容需要加{{}}。具体而言,<input type="text" v-model="msg2"> ,v-model中是不带有{{}}的。

4.新版的vue在使用v-for的时候,如何需要使用key ,$index,则必须得是 <li v-for="value,key,$index  in json">的格式,单一的格式比如 <li v-for="value in json">使用$index,key会报defind的错误。

5.在使用data中的数据的时候,data不用带进去,比如this.arr.push("mugua")是正确的,加了data则是错误的 this.data.arr.push("mugua")。这个错误要注意,因为报错的信息并不明确。

所有的代码如下:

    <script>

        $(function () {

            //1. 创建的Vue对象中的"Vue"首字母必须得是大写

            let mvc = new Vue({

                el: ".box",

                data: {

                    msg: "welcome to vue",

                    msg2: 66666,

                    arr: ['apple', 'orange', 'pear', 'mihoutao'],

                    json: {

                        a: 'apple',

                        b: 'orange',

                        c: 'pear',

                        d: "mihoutao"

                    }

                },

                methods: {

                    // 你这都写的啥?

                    // add:{

                    //    // this.data.arr.push("mugua")

                    // }

                    add: function () {

                        this.data.arr.push("mugua");

                        // this.arr.push("mugua");

                        // not a function!

                        // this.json.push("muguanai");

                    }

                }

            });

        })

    </script>

</head>

<body>

<div class="box">

    <input type="text" v-model="msg2">

    <input type="text" v-model="arr">

    <input type="text" v-model="json">

    <br>

    {{msg}}

    <br>

    <ul>

        <!--        元素内容必须得带{{}},你怎么又忘记了。!-->

        <li v-for="value in json">{{value}}</li>

        <!--        <li v-for="value in arr">{{$index}}</li>-->

        <!--        <li v-for="value in json">{{$key}}</li>-->

        <li v-for="value,key,$index in json">{{value}} :{{key}} :{{$index}}</li>

        <li v-for="value in arr">{{value}}</li>

    </ul>

    <input type="button" value="add()" v-on:click="add" v-show="true">

    <li v-for="value in arr">{{value}}</li>

</div>

</body>


课时2  小项目: 简易留言(又称之为to-do-list)

课程中涉及到太多的关于bootstrap的相关知识点。这里有个比较好的关于bootstrap的文档:

https://v2.bootcss.com/base-css.html

bootstrap.css.map的作用:(简单的说,就是把太过复杂的css文件中的出现的变量记录下来并一一对应,这在bootstrap.min.css vs bootstrap.min.css.map中尤其明显,因为前者压缩之后的简写很有纪律的必要。)

https://www.cnblogs.com/wangzisheng/p/8780913.html

改节课涉及到2个部分,建议在自我实践的时候,先用bootstrap搭出基本的样式,再来尝试vue的一些操作。

bootstrap的学习记录部分详情见,不再重复赘述:

https://blog.csdn.net/u011483658/article/details/110950266

注意点:

1.用户(而非开发者)在使用输入框进行输入的时候,是可以改变v-model中的数据的(事实上,这个是输入框input的基本作用,任何框架或工具在使用Input的时候都可以如此使用。)。而在vue中,v-model中的数据改变了,则相关的所有涉及到该数据的地方都会发生改变(联级作用)。

2.接1:属性中的数据不能随便固定,只能通过new出来的vue对象中的data将数据固定。否则会报错,且错误难以查询。

3.数组中的元素是json格式,插入的时候,要做些修改,将原先的“散装”元素组装成json:

                this.mydatas.push({

                    name:this.name,

                    age:this.age

                });

4.在使用v-for的时候,需要使用index的时候,则v-for当中就必须要有index, v-for="item in mydatas”是无法使用index的,不能简写:

<tr class="warning" v-for="item,index in mydatas">

5.需求的问题

在本次的项目中,最终形成的数据格式是一个数组。在这个数组中,每个的具体的元素都是json::[json1,json2,json3,.........]。在确定了这种具体的数据格式之后,本项目就已经是完成了一大半了。这里有把具体的需求转化为一个具体的数据格式的过程。

6.模态框(弹出框的问题):

点击按钮,弹出模态框,模态框中也有“确定”“取消”。因此,按钮并不是执行的最终结果,点击按钮后弹出的“确定”“取消”才是。所以,有模态框的时候,methods中的方法是大概率需要放在模态框中的。

7.单一选项的删除操作,vue和原生js/jquery的区别

js/jquery在进行删除操作的时候,先删除掉页面中的对应的元素,然后再对相应的数组进行操作。

vue在进行此类操作的时候,直接对相应的数组进行操作,当在对应的数组中删除掉对应的数据之后,页面中的元素会自动消失,不需要再对其另外操作。步骤如下:

i.  添加nowindex:

      data: {

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

            nowindex:"",

        },

<button v-on:click="nowindex=index"></button>

ii .精准添加删除方法(精准添加:点击按钮->弹出模态框->模态框中的“确定”按钮)

                        <button v-on:click="del" >确定</button>

iii.删除方法的逻辑(注意要有“this”,否则会报错:xxx is not definded)

            del:function () {

                //  mydatas not definded?

                this.mydatas.splice(nowindex,1);

            }

值得注意的是:index是在v-for中出现的,也只能用在v-for中,不能将其独立成功能模块:

<tr class="warning" v-for="item,index in mydatas">

            <td>{{index + 1}}</td>

            <td>{{item.name}}</td>

            <td>{{item.age}}</td>

            <td class="text-right">

                <button v-on:click="nowindex=index" class="btn-primary btn-sm " data-toggle="modal" data-target="#myModal2">删除</button>

            </td>

        </tr>

主体架构部分(H5+引用):

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>to-do-list</title>

    <link rel="stylesheet" href="../../bootstrap.css">

    <script src="../../jquery-1.12.4.js"></script>

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

    <script src="../../bootstrap.js"></script>

    <script src="js/index.js"></script>

</head>

<body>

<div class="box" id="box">

    <form>

        <legend class="text-center text-info">个人信息填写</legend>

        <fieldset>

            <!--        <legend >Legend</legend>-->

            <label>姓名:</label>

            <br>

            <input type="text" placeholder="请填写你的姓名" class="form-control" v-model="name">

        </fieldset>

        <fieldset>

            <label>年龄:</label>

            <br>

            <input type="text" placeholder="请填写你的年龄" class="form-control" v-model="age">

        </fieldset>

    </form>

    <br>

    <br>

    <div class="text-center">

        <button class="btn btn-primary" v-on:click="add">添加</button>

        <input class="btn btn-danger" type="reset"  v-on:click="reset">

    </div>

    <hr>

    <table class="table table-bordered  table-striped  table-condensed table-hover ">

        <caption>

            <h1 class="text-danger text-center">用户信息表</h1>

        </caption>

        <tr class="success">

            <th>序号</th>

            <th>姓名</th>

            <th>年纪</th>

            <th>操作</th>

        </tr>

        <!--        <tr class="info ">-->

        <!--            <td>1</td>-->

        <!--            <td>zhubiao</td>-->

        <!--            <td>16</td>-->

        <!--            <td class="text-right">-->

        <!--                <button class="btn-primary btn-sm ">删除</button>-->

        <!--            </td>-->

        <!--        </tr>-->

        <tr class="warning" v-for="item,index in mydatas">

            <td>{{index + 1}}</td>

            <td>{{item.name}}</td>

            <td>{{item.age}}</td>

            <td class="text-right">

                <button v-on:click="nowindex=index" class="btn-primary btn-sm " data-toggle="modal" data-target="#myModal2">删除</button>

            </td>

        </tr>

        <tr v-show="mydatas.length!=0">

            <td colspan="4" class="text-right">

                <button  class="btn-danger btn-sm" data-toggle="modal" data-target="#myModal">删除全部</button>

            </td>

        </tr>

        <tr v-show="mydatas.length==0">

            <td colspan="4" class="text-center text-muted">

                你还没添加信息

            </td>

        </tr>

        <!--    以下为模态框-->

        <!--    <a href="#myModal" role="button" class="btn" data-toggle="modal">查看演示案例</a>-->

        <!--    modal1:modal for "删除全部"-->

        <div id="myModal" class="modal  fade" role="dialog"

            aria-labelledby="myModalLabel" aria-hidden="false">

            <div class="modal-dialog">

                <div class="modal-content">

                    <div class="modal-header">

                        <button type="button" class="close" data-dismiss="modal">×</button>

                        <h3 id="myModalLabel" class="text-danger text-center">确认删除全部?</h3>

                    </div>

                    <!--        <div class="modal-body">-->

                    <!--            <p>One fine body…</p>-->

                    <!--        </div>-->

                    <div class="modal-footer">

                        <button v-on:click="delAll" class="btn btn-primary" data-dismiss="modal">确定</button>

                        <button class="btn btn-primary" data-dismiss="modal">取消</button>

                    </div>

                </div>

            </div>

        </div>

        <!--    modal2:for "删除"-->

        <div id="myModal2" class="modal  fade" role="dialog"

            aria-hidden="false">

            <div class="modal-dialog">

                <div class="modal-content">

                    <div class="modal-header">

                        <button type="button" class="close" data-dismiss="modal">×</button>

                        <h3 id="myModalLabel2" class="text-danger text-center">确认删除?</h3>

                    </div>

                    <!--        <div class="modal-body">-->

                    <!--            <p>One fine body…</p>-->

                    <!--        </div>-->

                    <div class="modal-footer">

                        <button v-on:click="del" class="btn btn-primary" data-dismiss="modal">确定</button>

                        <button class="btn btn-primary" data-dismiss="modal">取消</button>

                    </div>

                </div>

            </div>

        </div>

    </table>

</div>

</body>

</html>

JS(jquery)部分:

$(function () {

    let mvc = new Vue({

        el: "#box",

        data: {

            mydatas: [],

            name: "",

            age: "",

            nowindex:"",

            index:"",

        },

        methods: {

            add: function () {

                // 你这都写的啥?请整理成json格式!

                // this.myadatas.push(this.name);

                // this.myadatas.push(this.age);

                this.mydatas.push({

                    name:this.name,

                    age:this.age

                });

                this.name="";

                this.age="";

            },

            reset:function (){

                this.name=" ";

                this.age=" ";

            },

            delAll:function (){

                this.mydatas=[];

            },

            // setnowindex:function (){

            //    this.nowindex=this.index;

            // },

            del:function () {

                //  mydatas not definded?

                this.mydatas.splice(this.nowindex,1);

            }

        }

    });

})

课时3     模板、交互、案例

模板

{{msg}}

 {{*msg}}

{{{msg}}}

转换: 

常用:{{'welcome '|uppercase}}

{{'WELCOME'|lowercase}}

连写:{{ msg |filterA |filterB }}

{{'WELCOME'|lowercase|capitalize}}

参数:{{msg |filterA  '参数'}}

{{12|currency "$"}}   {{12|currency  "¥"}}   {{12|currency "£"}} 

过滤器官方文档:

https://cn.vuejs.org/v2/guide/filters.html

https://cn.vuejs.org/v2/api/index.html#Vue-filter


交互

vue本身是不支持交互的。当需要做交互的时候,需要额外的引入一个文件vue-resource。(git下载,路径:vue-resource-->dist-->vue-resource.js)

$http(ajax) ,自带。

提到交互,就只这3种:get  ,post  , jsonp

get

格式:

(普通文本)this.$http.get("文件名.txt").then(function (res) { “这里填写成功的内容” },function (err){ “这里填写失败的内容”});

(php文本,需要向服务器发送数据)this.$http.get("xx.php",{a:1,b:2}).then(function (res) { “这里填写成功的内容” },function (err){ “这里填写失败的内容”});

 注意点:

1.   Do not mount Vue to <html> or <body> - mount to normal elements instead. -----不要将body作为选择器,有的版本会报这个错误。


2.webstorm自带的服务器无法打开编译php文件,但是可以通过普通文本(php文本也是当作普通文本处理,只能显示源码。)

交互需要在apache(php只能选择apache而不能tomcat)的服务器环境条件下才可以使用:

https://blog.csdn.net/u011483658/article/details/111559725。


3 .get接口在使用php文本的时候,失效,多次尝试都不可用。不知何故?(不报错,但是结果一直都是0,无论怎么改参数)

get接受普通文本的代码如下:

<div id="box">

    <input type="button"  value="打开测试文件" @click="f1_get()">

</div>

                methods:{

                    f1_get:function () {

                      this.$http.get("test.txt").then(function (res) {

                          alert(res.status);

                          alert(res.data);

                      },function (err){

                      });

                    }

                }

get接口在使用php文本的时候,失效,多次尝试都不可用,学着post接口添加{ emulateJSON:true}也无效。不知何故?(不报错,但是结果一直都是0,无论怎么改参数),代码如下:

                methods: {

                    f1_get: function () {

                        this.$http.get('get.php',

                            {

                                a: 1,

                                b: 5

                            },

                        // { emulateJSON:true}

                        ).then(function (res) {

                            // this.$http.get("test.txt").then(function (res) {

                            //alert(res.status);

                            alert(res.data);

                        }, function (err) {

                        });

                    }

post

{ emulateJSON:true}不可省,否则结果一直是0,还不报错,post接口失效。

      f1_get: function () {

                        this.$http.post('post.php',

                            {

                                a: 1,

                                b: 5

                            },

//此处{ emulateJSON:true}不可省,否则结果一直是0,还不报错,post接口失效。

                      { emulateJSON:true}

                        ).then(function (res) {

                            // this.$http.get("test.txt").then(function (res) {

                            //alert(res.status);

                            alert(res.data);

                        }, function (err) {

                        });

                    }

jsonp

获取本域之外的接口

中华搜索出现跨域问题。

360搜索能爬出来,但是只有"errorcode":0,"ext":"nlpv=sug_base4_zzdt","version":"revise"之类的可用,而关键数据"query":"a","result":[我想要这里的数据啊]不可用。

百度更难弄。输入之后根本没有数据能爬出来,直接是一个搜索页面。且url地址栏是一团乱七八糟的东西。

firefox调试器功能不全面,有问题。改用chrome。

改用chrome之后,

中华搜索依旧出现跨域问题。

搜狗搜索出现“Uncaught TypeError: Cannot read property 'sug' of undefined  at ajajjson?callback=_jsonpb7n98iwmhi:1”的问题,this.$http.jsonp("url",{},{}).then,url添加callback则原来的数组变成了空数组,无解:

https://www.sogou.com/suggnew/ajajjson?key=abcd

不加callback:

indow.sogou.sug(["abcd",["abcdefg字母表","abcd什么意思","abcd英语26个字母","abcd英文歌","abcdefg","abcd式词语大全","abcdefg的含义是什么意思","abcd什么意思恋爱","abcd的词语","abcdefg26个字母表"],["0;6;0;0","1;6;0;0","2;6;0;0","3;4;0;0","4;4;0;0","5;4;0;0","6;6;0;0","7;2;0;0","8;4;0;0","9;4;0;0"],["","","","","","","","","",""],["0"],"","suglabId_1"],-1);

https://www.sogou.com/suggnew/ajajjson?callback?key=abcd

添加callback:

window.sogou.sug(["",[],[],[],[],[],["ConditionUmis"],[""],[],["0"]],-1);

意思很明显,搜狗搜索人家不允许你爬人家的数据。通过callback将数据重置成空数组。

360搜索可以使用jsonp,但是使用后callback后出现的数据也是空数组。只有"errorcode":0,"ext":"nlpv=sug_base4_zzdt","version":"revise"之类的可用,而关键数据"query":"a","result":[我想要这里的数据啊]不可用,整体的数据格式应该是这样的:

suggest_so({"errorcode":0,"ext":"nlpv=sug_base4_zzdt","query":"abcd","result":[{"ci":"11.064693","ctrScore":"0.471972","rankScore":"241.208130","recallScore":"0.839907","recallType":"nginx'kg'baidu'xgb","rerankScore":"241.208130","word":"abcdefg字母表"},{"ci":"1.644274","ctrScore":"0.013424","rankScore":"0.022072","recallScore":"0.090940","recallType":"xgb","rerankScore":"0.022072","word":"abcdefg字母表大小写"}],"src":"","ssid":"89d73496541f43bca3b8f344ff55b6af","version":"revise"}

)

百度搜索可以使用jsonp,但是与360一样无法查询。爬出来的数据中的q,p,g(360还部分可查询,百度都不可查询)都是undefinded,它的数据格式是这样的:

{"q":"ab","p":false,"g":[{"type":"sug","sa":"s_1","q":"abcc的成语"},{"type":"sug","sa":"s_2","q":"abab式的词语"},{"type":"sug","sa":"s_3","q":"abac式词语大全"},{"type":"sug","sa":"s_4","q":"abb式的词语"},{"type":"sug","sa":"s_5","q":"ab型血"},{"type":"sug","sa":"s_6","q":"abo"},{"type":"sug","sa":"s_7","q":"ab型血为什么叫贵族血"},{"type":"sug","sa":"s_8","q":"abac的成语"},{"type":"sug","sa":"s_9","q":"about"},{"type":"sug","sa":"s_10","q":"above"}],"slid":"5689024787140323011","queryid":"0x2479e6f3e426c3"}

要爬数据有点难。

不管怎样,还是将视频中的代码摘录如下:

  f1_get: function () {

                        this.$http.jsonp('https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&from=pc_web&req=2&csor=2&pwd=a',

                            {

                                    wd:'ab'

                            },

                            {

                                jsonp:"cb"

                            }).then(function (res) {

                            // this.$http.get("test.txt").then(function (res) {

                            // alert(res.status);

                            alert(res.data);

                            alert(res.data.q);

                            alert(res.data.p);

                            console.log(res.data.g);

                        }, function (err) {

                        });

                    }


课时4  属性和事件

常用的事件(事件以及事件的复合)

鼠标事件

click  dbclick(双击)   contextmenu(右击)

事件的简写:@click  @dbclick  @contextmenu 

方法中需要使用事件event的时候,$event不可省:<button  @click="fn($event)"></button>。

vue是如何阻止冒泡和阻止默认事件的:

@click.stop <=====> ev.cancelBubble=true或者ev.propgation();

@click.prevent<============>ev.preventDefult

键盘事件

keyup  keydown

区别:在方法中alert(),keyup先弹出事件,手动点击之后,输入内容才会显示在页面;keydown,则是先显示输入的内容,再弹出事件,弹出事件对输入的内容不存在影响。

存在这样一个等式:

@keyup.enter === @keyup.13 <====> if(ev.keyCode==13)

上面的等式对于键盘上的所有的键几乎都可以使用:@keyup.a==@keyup.65

属性


:class      :style是如何通过data中的数据找到层叠样式表css的:(一般属性直接在data中查找,这两者需要进一步上溯到css)

:class :style区别于一般的属性,一般的属性只需要“xx(这里是一般属性)”,比如:width="w",即只需要加“”即可。而对于:class :style来说,通常是用数组或者json来表示的。由于存在这样一个特性,在vue中的data中的关于:class :style所需要的相关数据,都被“定位”到层叠样式表css中了!

:style建议采用json的格式:


<div id="div1" >

<input type="text" v-model="styleJson.backgroundColor" >

<input type="text" v-model="styleJson.fontSize" >


<br>

<span :style="styleJson">{{txt}}</span>

</div>


-----

data:{

txt:"abc",

styleJson:{

color:"red",

width:"200px",

fontSize:"50px",

"font-size":"50px",

backgroundColor:"blue"

}

},

:class建议采用数组格式:


<style>

.red1{

color:red

}

.blue2{

background-color: deepskyblue;

}

</style>

-----------------------

<span :class="[arr]">{{txt}}</span>

--------------------------

let mvc=new Vue({

el:"#div1",

data:{


arr:["red1","blue2"],


},

methods:{}

})



注意点:

1.:style建议采用json格式,:class建议采用数组格式,无论是json格式还是素组格式都建议在vue-data中写全,不要分在h5结构中补全。

2.驼峰方式(fontSize:"50px")和“-”连写方式("font-size":"50px","font-size"双引号不可省)虽然都可以采用,但是建议采用驼峰方式

3.在需要:style或者:class中的json的时候,可以用json.xxx调用xxx属性,比如 :

         <input type="text" v-model="styleJson.backgroundColor" >

        <input type="text" v-model="styleJson.fontSize" >






---------------------

讲师:blue


路由


————————————————

版权声明:本文为CSDN博主「虎冲九天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u011483658/article/details/107920902

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

推荐阅读更多精彩内容

  • ### 什么是Vue.js + Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(Reac...
    JLong阅读 1,056评论 0 0
  • 相关概念 混合开发和前后端分离 混合开发(服务器端渲染) 前后端分离后端提供接口,前端开发界面效果(专注于用户的交...
    他爱在黑暗中漫游阅读 2,784评论 4 45
  • Vue-基础-day03-重点 01-基础-实例选项-计算属性-基本使用 场景:b依赖a b就是computed...
    这是这时阅读 99评论 0 0
  • ### 路由 ------- #### 路由原理 * 传统开发方式 url改变后 立刻发起请求,响应整个页面,渲染...
    大脸妹m阅读 205评论 0 0
  • Vue-基础-day06-重点 01-基础-heroes-案例-提取路由模块 把入口文件中的router代码提取单...
    这是这时阅读 324评论 0 0