zoukankan      html  css  js  c++  java
  • vue视频学习笔记

    video 7

    vue问题:
    论坛
    http://bbs.zhinengshe.com
    ------------------------------------------------
    UI组件
    别人提供好一堆东西

    目的:
    为了提高开发效率
    功能

    原则: 拿过来直接使用

    vue-cli -> vue-loader

    //创建项目
    vue init webpack-simple bootstrap-demo

    //下载bootstrap
    bower install bootrap

    bootstrap:
    twitter 开源
    简洁、大方
    官网文档

    基于 jquery

    栅格化系统+响应式工具 (移动端、pad、pc)
    按钮

    --------------------------------
    bower 前端包管理器 jquery#1.11.1
    自动解决依赖
    npm node包管理器 jquery@1.11.1
    --------------------------------

    饿了么团队开源一个基于vue 组件库
    elementUI PC
    MintUI 移动端
    --------------------------------
    elementUI:
    如何使用

    官网:http://element.eleme.io/
    使用:
    1. 安装 element-ui
    npm i element-ui -D

    npm install element-ui --save-dev

    // i -> install
    // D -> --save-dev
    // S -> --save
    2. 引入 main.js 入口文件
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-default/index.css'

    全部引入
    3. 使用组件
    Vue.use(ElementUI)

    css-loader 引入css
    字体图标 file-loader


    less:
    less
    less-loader
    -------------------------------------------------
    按需加载相应组件: √
    就需要 按钮
    1. babel-plugin-component
    cnpm install babel-plugin-component -D
    2. .babelrc文件里面新增一个配置
    "plugins": [["component", [
    {
    "libraryName": "element-ui",
    "styleLibraryName": "theme-default"
    }
    ]]]
    3. 想用哪个组件就用哪个
    引入:
    import {Button,Radio} from 'element-ui'
    使用:
    a). Vue.component(Button.name, Button); 个人不太喜欢
    b). Vue.use(Button); √
    ---------------------------------------------------
    发送请求:
    vue-resourse 交互

    axios
    ---------------------------------------------------
    element-ui

    //使用组件调用UI
    //组件加事件---有点像事件委托
    <button @click="get"></button>
    <mybutton @click.native="get"></mybutton>


    axios --------- ajax,官方推荐
    https://github.com/mzabriskie/axios

    1.cnpm install axios -D
    2.import axios from 'axios';

    element-ui -> pc


    mint-ui
    移动端 ui库

    http://mint-ui.github.io/

    1. 下载
    npm install mint-ui -S

    -S
    --save
    2. 引入
    import Vue from 'vue';
    import Mint from 'mint-ui';
    import 'mint-ui/lib/style.css'
    Vue.use(Mint);

    按需引入:
    import { Cell, Checklist } from 'minu-ui';
    Vue.component(Cell.name, Cell);
    Vue.component(Checklist.name, Checklist);

    http://mint-ui.github.io/docs/#!/zh-cn2

    论坛:


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


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

    Mint-ui-demo: 看着手册走了一遍

    https://github.com/itstrive/striveCode/tree/js/vue2.0-Mint-ui-demo


    //引入css使用模块
    //需要先在package.json里加载css-loader和style-loader
    cnpm install style-loader css-loader -D

    webpack.config.js里添加代码

    {
    test: /.css$/,
    loader: 'style!css'
    },



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

    video 6

    vue动画
    vue路由
    --------------------------------------
    transition 之前 属性
    <p transition="fade"></p>

    .fade-transition{}
    .fade-enter{}
    .fade-leave{}
    --------------------------------------

    到2.0以后 transition 组件

    <transition name="fade">
    运动东西(元素,属性、路由....)
    </transition>

    class定义:
    .fade-enter{} //初始状态
    .fade-enter-active{} //变化成什么样 -> 当元素出来(显示)

    .fade-leave{}
    .fade-leave-active{} //变成成什么样 -> 当元素离开(消失)

    如何animate.css配合用?
    <transition enter-active-class="animated zoomInLeft" leave-active-class="animated zoomOutRight">
    <p v-show="show"></p>
    </transition>

    多个元素运动:
    <transition-group enter-active-class="" leave-active-class="">
    <p :key=""></p>
    <p :key=""></p>
    </transition-group>
    ------------------------------------------
    vue2.0 路由:
    http://router.vuejs.org/zh-cn/index.html
    基本使用:
    1. 布局
    <router-link to="/home">主页</router-link>

    <router-view></router-view>
    2. 路由具体写法
    //组件
    var Home={
    template:'<h3>我是主页</h3>'
    };
    var News={
    template:'<h3>我是新闻</h3>'
    };

    //配置路由
    const routes=[
    {path:'/home', componet:Home},
    {path:'/news', componet:News},
    ];

    //生成路由实例
    const router=new VueRouter({
    routes
    });

    //最后挂到vue上
    new Vue({
    router,
    el:'#box'
    });
    3. 重定向
    之前 router.rediect 废弃了
    {path:'*', redirect:'/home'}
    ------------------------------------------
    路由嵌套:
    /user/username

    const routes=[
    {path:'/home', component:Home},
    {
    path:'/user',
    component:User,
    children:[ //核心
    {path:'username', component:UserDetail}
    ]
    },
    {path:'*', redirect:'/home'} //404
    ];
    ------------------------------------------
    /user/strive/age/10

    :id
    :username
    :age
    ------------------------------------------
    路由实例方法:
    router.push({path:'home'}); //直接添加一个路由,表现切换路由,本质往历史记录里面添加一个
    router.replace({path:'news'}) //替换路由,不会往历史记录里面添加
    ------------------------------------------
    vue-cli

    //vue不是有效的内外部命令vue command not find
    cnpm install -g vue-cli

    //创建vue-demo项目
    ---vue init webpack-simple vue-demo
    ------------------------------------------
    npm install
    ------------------------------------------

    //修改项目为8085端口启动 package.json
    --- "dev" :" --port 8085"
    -------------------------------------------
    脚手架: vue-loader
    1.0 ->
    new Vue({
    el: '#app',
    components:{App}
    })
    2.0->
    new Vue({
    el: '#app',
    render: h => h(App)
    })
    ------------------------------------------
    vue2.0
    vue-loader和vue-router配合
    //router下载
    cnpm insatall vue-router --save
    ------------------------------------------

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

    /////----------这里有一个很严重的问题,无法引用外部的css文件

    //使用animate.css 还需要在webpack.config.js里申明css使用
    style-loader css-loader
    //下载
    cnpm install css-loader style-loader --save-dev


    style!css
    ------------------------------------------
    局部组件使用css
    <style scoped>
    li{border: 1px solid red;}
    </style>

    -----------这里还是有问题,一直说没有发现引用的css模块..

    ------------------------------------------
    项目:
    ------------------------------------------


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

    video 5

    vue2.0:
    bower info vue

    http://vuejs.org/
    到了2.0以后,有哪些变化?

    1. 在每个组件模板,不在支持片段代码
    组件中模板:
    之前:
    <template>
    <h3>我是组件</h3><strong>我是加粗标签</strong>
    </template>
    现在: 必须有根元素,包裹住所有的代码
    <template id="aaa">
    <div>
    <h3>我是组件</h3>
    <strong>我是加粗标签</strong>
    </div>
    </template>
    2. 关于组件定义
    Vue.extend 这种方式,在2.0里面有,但是有一些改动,这种写法,即使能用,咱也不用——废弃

    Vue.component(组件名称,{ 在2.0继续能用
    data(){}
    methods:{}
    template:
    });

    2.0推出一个组件,简洁定义方式:
    var Home={
    template:'' -> Vue.extend()
    };
    3. 生命周期
    之前:
    init
    created
    beforeCompile
    compiled
    ready √ -> mounted
    beforeDestroy
    destroyed
    现在:
    beforeCreate 组件实例刚刚被创建,属性都没有
    created 实例已经创建完成,属性已经绑定
    beforeMount 模板编译之前
    mounted 模板编译之后,代替之前ready *
    beforeUpdate 组件更新之前
    updated 组件更新完毕 *
    beforeDestroy 组件销毁前
    destroyed 组件销毁后
    3. 循环
    2.0里面默认就可以添加重复数据

    arr.forEach(function(item,index){

    });

    去掉了隐式一些变量
    $index $key

    之前:
    v-for="(index,val) in array"
    现在:
    v-for="(val,index) in array"


    4. track-by="id"
    变成
    <li v-for="(val,index) in list" :key="index">
    5. 自定义键盘指令
    之前:Vue.directive('on').keyCodes.f1=17;
    //这个好像也改了
    现在: Vue.config.keyCodes.ctrl=17

    6. 过滤器
    之前:
    系统就自带很多过滤
    {{msg | currency}}
    {{msg | json}}
    ....
    limitBy
    filterBy
    .....
    一些简单功能,自己通过js实现

    到了2.0, 内置过滤器,全部删除了


    lodash 工具库 _.debounce(fn,200)


    自定义过滤器——还有
    但是,自定义过滤器传参

    之前: {{msg | toDou '12' '5'}}
    现在: {{msg | toDou('12','5')}}
    ------------------------------------------------------
    组件通信:
    vm.$emit()
    vm.$on();

    父组件和子组件:

    子组件想要拿到父组件数据:
    通过 props

    之前,子组件可以更改父组件信息,可以是同步 sync
    现在,不允许直接给父级的数据,做赋值操作

    问题,就想更改:
    a). 父组件每次传一个对象给子组件, 对象之间引用 √
    b). 只是不报错, mounted中转
    ------------------------------------------------------
    可以单一事件管理组件通信: vuex
    var Event=new Vue();

    Event.$emit(事件名称, 数据)

    Event.$on(事件名称,function(data){
    //data
    }.bind(this));
    ------------------------------------------------------
    debounce 废弃
    -> lodash
    _.debounce(fn,时间)
    ------------------------------------------------------


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

    video 4

    手动配置自己:
    webpack+vue-loader

    webpack加载模块
    -------------------------------------
    如何运行此项目?
    1. npm install 或者 cnpm install
    2. npm run dev
    -> package.json
    "scripts":{
    "dev":"webpack-dev-server --inline --hot --port 8082"
    }

    以后下载模块:
    npm install <package-name> --save-dev

    EADDRINUSE 端口被占用

    少了:
    webpack-dev-server
    webpack
    ----------------------------------------
    .vue 结尾,之后称呼组件
    ----------------------------------------
    路由:
    vue-router

    -> 如何查看版本:
    bower info vue-router

    路由使用版本: 0.7.13
    配合vue-loader使用:
    1. 下载vue-router模块
    cnpm install vue-router@0.7.13
    2. import VueRouter from 'vue-router'

    3. Vue.use(VueRouter);

    4. 配置路由
    var router=new VueRouter();
    router.map({
    路由规则
    })
    5. 开启
    router.start(App,'#app');

    注意:
    之前: index.html -> <app></app>
    现在: index.html -> <div id="app"></div>

    App.vue -> 需要一个 <div id="app"></div> 根元素

    home news
    ---------------------------------------------
    路由嵌套:
    和之前一模一样
    --------------------------------------------
    上线:
    npm run build
    -> webpack -p
    --------------------------------------------
    脚手架:
    vue-cli——vue脚手架
    帮你提供好基本项目结构

    本身集成很多项目模板:
    simple 个人觉得一点用都没有
    webpack 可以使用(大型项目)
    Eslint 检查代码规范,
    单元测试
    webpack-simple 个人推荐使用, 没有代码检查 √

    browserify -> 自己看
    browserify-simple

    --------------------------------------------
    基本使用流程:
    1. npm install vue-cli -g 安装 vue命令环境
    验证安装ok?
    vue --version
    2. 生成项目模板
    vue init <模板名> 本地文件夹名称
    3. 进入到生成目录里面
    cd xxx
    npm install
    4. npm run dev
    --------------------------------------------

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

    video 3

    git page:
    任何仓库 master分支,都可以发布(git page)
    -------------------------------------
    双向过滤器:
    Vue.filter(name,{
    read:
    write:
    });
    -------------------------------------
    1.0
    2.0
    -------------------------------------
    引入 vue.js
    -------------------------------------
    bower-> (前端)包管理器
    npm install bower -g
    验证: bower --version

    bower install <包名>
    bower uninstall <包名>
    bower info <包名> 查看包版本信息

    <script src="bower_components/vue/dist/vue.js"></script>
    -------------------------------------
    vue-> 过渡(动画)
    本质走的css3: transtion ,animation

    <div id="div1" v-show="bSign" transition="fade"></div>

    动画:
    .fade-transition{

    }
    进入:
    .fade-enter{
    opacity: 0;
    }
    离开:
    .fade-leave{
    opacity: 0;
    transform: translateX(200px);
    }
    ----------------------------------------
    vue组件:
    组件: 一个大对象
    定义一个组件:
    1. 全局组件
    var Aaa=Vue.extend({
    template:'<h3>我是标题3</h3>'
    });

    Vue.component('aaa',Aaa);

    *组件里面放数据:
    data必须是函数的形式,函数必须返回一个对象(json)
    2. 局部组件
    放到某个组件内部
    var vm=new Vue({
    el:'#box',
    data:{
    bSign:true
    },
    components:{ //局部组件
    aaa:Aaa
    }
    });
    --------------------------------------
    另一种编写方式:
    Vue.component('my-aaa',{
    template:'<strong>好</strong>'
    });

    var vm=new Vue({
    el:'#box',
    components:{
    'my-aaa':{
    template:'<h2>标题2</h2>'
    }
    }
    });
    -----------------------------------
    配合模板:
    1. template:'<h2 @click="change">标题2->{{msg}}</h2>'

    2. 单独放到某个地方
    a). <script type="x-template" id="aaa">
    <h2 @click="change">标题2->{{msg}}</h2>
    </script>
    b). <template id="aaa">
    <h1>标题1</h1>
    <ul>
    <li v-for="val in arr">
    {{val}}
    </li>
    </ul>
    </template>
    -----------------------------------
    动态组件:
    <component :is="组件名称"></component>
    --------------------------------------------
    vue-devtools -> 调试工具
    https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd
    --------------------------------------------
    vue默认情况下,子组件也没法访问父组件数据

    --------------------------------------------
    组件数据传递: √
    1. 子组件就想获取父组件data
    在调用子组件:
    <bbb :m="数据"></bbb>

    子组件之内:
    props:['m','myMsg']

    props:{
    'm':String,
    'myMsg':Number
    }
    2. 父级获取子级数据
    *子组件把自己的数据,发送到父级

    vm.$emit(事件名,数据);

    v-on: @
    --------------------------------------------
    vm.$dispatch(事件名,数据) 子级向父级发送数据
    vm.$broadcast(事件名,数据) 父级向子级广播数据
    配合: event:{}

    在vue2.0里面已经,报废了
    --------------------------------------------
    slot:
    位置、槽口
    作用: 占个位置

    类似ng里面 transclude (指令)
    --------------------------------------------
    vue-> SPA应用,单页面应用
    vue-resouce 交互
    vue-router 路由

    根据不同url地址,出现不同效果

    咱上课: 0.7.13

    主页 home
    新闻页 news


    html:
    <a v-link="{path:'/home'}">主页</a> 跳转链接

    展示内容:
    <router-view></router-view>
    js:
    //1. 准备一个根组件
    var App=Vue.extend();

    //2. Home News组件都准备
    var Home=Vue.extend({
    template:'<h3>我是主页</h3>'
    });

    var News=Vue.extend({
    template:'<h3>我是新闻</h3>'
    });

    //3. 准备路由
    var router=new VueRouter();

    //4. 关联
    router.map({
    'home':{
    component:Home
    },
    'news':{
    component:News
    }
    });

    //5. 启动路由
    router.start(App,'#box');

    跳转:
    router.redirect({
    ‘/’:'/home'
    });
    --------------------------------------
    路由嵌套(多层路由):

    主页 home
    登录 home/login
    注册 home/reg
    新闻页 news

    subRoutes:{
    'login':{
    component:{
    template:'<strong>我是登录信息</strong>'
    }
    },
    'reg':{
    component:{
    template:'<strong>我是注册信息</strong>'
    }
    }
    }
    路由其他信息:
    /detail/:id/age/:age

    {{$route.params | json}} -> 当前参数

    {{$route.path}} -> 当前路径

    {{$route.query | json}} -> 数据
    --------------------------------------------
    vue-loader:
    其他loader -> css-loader、url-loader、html-loader.....

    后台: nodeJs -> require exports
    broserify 模块加载,只能加载js
    webpack 模块加载器, 一切东西都是模块, 最后打包到一块了

    require('style.css'); -> css-loader、style-loader


    vue-loader基于webpack

    .css
    .js
    .html
    .php
    .....


    a.vue
    b.vue

    .vue文件:
    放置的是vue组件代码

    <template>
    html
    </template>

    <style>
    css
    </style>

    <script>
    js (平时代码、ES6) babel-loader
    </script>
    -------------------------------------
    简单的目录结构:
    |-index.html
    |-main.js 入口文件
    |-App.vue vue文件,官方推荐命名法
    |-package.json 工程文件(项目依赖、名称、配置)
    npm init --yes 生成
    |-webpack.config.js webpack配置文件

    ES6: 模块化开发
    导出模块:
    export default {}
    引入模块:
    import 模块名 from 地址
    --------------------------------------------
    webpak准备工作:
    cnpm install webpack --save-dev
    cnpm install webpack-dev-server --save-dev

    App.vue -> 变成正常代码 vue-loader@8.5.4
    cnpm install vue-loader@8.5.4 --save-dev

    cnpm install vue-html-loader --save-dev

    vue-html-loader、css-loader、vue-style-loader、
    vue-hot-reload-api@1.3.2

    babel-loader
    babel-core
    babel-plugin-transform-runtime
    babel-preset-es2015
    babel-runtime

    最最核心:

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

    video 2

    vue制作weibo
    交互

    vue-> 1.0
    vue-resource ajax php
    服务器环境(node)

    this.$http.get()/post()/jsonp()

    this.$http({
    url:地址
    data:给后台提交数据,
    method:'get'/post/jsonp
    jsonp:'cb' //cbName
    });
    ----------------------------------
    vue事件:
    @click=""
    数据:


    添加一条留言:

    获取某一页数据:
    getPageData(1);
    ----------------------------------
    vue生命周期:
    钩子函数:

    created -> 实例已经创建 √
    beforeCompile -> 编译之前
    compiled -> 编译之后
    ready -> 插入到文档中 √

    beforeDestroy -> 销毁之前
    destroyed -> 销毁之后
    ----------------------------------
    用户会看到花括号标记:

    v-cloak 防止闪烁, 比较大段落
    ----------------------------------
    <span>{{msg}}</span> -> v-text
    {{{msg}}} -> v-html
    ----------------------------------
    ng: $scope.$watch

    计算属性的使用:
    computed:{
    b:function(){ //默认调用get
    return 值
    }
    }
    --------------------------
    computed:{
    b:{
    get:
    set:
    }
    }

    * computed里面可以放置一些业务逻辑代码,一定记得return
    ---------------------------------
    vue实例简单方法:
    vm.$el -> 就是元素
    vm.$data -> 就是data
    vm.$mount -> 手动挂在vue程序

    vm.$options -> 获取自定义属性
    vm.$destroy -> 销毁对象

    vm.$log(); -> 查看现在数据的状态
    ---------------------------------
    循环:
    v-for="value in data"

    会有重复数据?
    track-by='索引' 提高循环性能

    track-by='$index/uid'
    ---------------------------------
    过滤器:
    vue提供过滤器:
    capitalize uppercase currency....

    debounce 配合事件,延迟执行
    数据配合使用过滤器:
    limitBy 限制几个
    limitBy 参数(取几个)
    limitBy 取几个 从哪开始

    filterBy 过滤数据
    filterBy ‘谁’

    orderBy 排序
    orderBy 谁 1/-1
    1 -> 正序
    2 -> 倒序

    自定义过滤器: model ->过滤 -> view
    Vue.filter(name,function(input){

    });

    时间转化器
    过滤html标记

    双向过滤器:*
    Vue.filter('filterHtml',{
    read:function(input){ //model-view
    return input.replace(/<[^<+]>/g,'');
    },
    write:function(val){ //view -> model
    return val;
    }
    });

    数据 -> 视图
    model -> view

    view -> model
    ---------------------------------
    v-text
    v-for
    v-html
    指令: 扩展html语法

    自定义指令:
    属性:

    Vue.directive(指令名称,function(参数){
    this.el -> 原生DOM元素
    });

    <div v-red="参数"></div>

    指令名称: v-red -> red

    * 注意: 必须以 v-开头

    拖拽:
    -------------------------------
    自定义元素指令:(用处不大)
    Vue.elementDirective('zns-red',{
    bind:function(){
    this.el.style.background='red';
    }
    });
    ------------------------------------------------
    @keydown.up
    @keydown.enter

    @keydown.a/b/c....

    自定义键盘信息:
    Vue.directive('on').keyCodes.ctrl=17;
    Vue.directive('on').keyCodes.myenter=13;
    ------------------------------------------------
    监听数据变化:
    vm.$el/$mount/$options/....

    vm.$watch(name,fnCb); //浅度
    vm.$watch(name,fnCb,{deep:true}); //深度监视
    ------------------------------------------------
    vue组件:
    组件间各种通信
    slot
    vue-loader webpack .vue
    vue-router

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

    video 1

    vue:
    读音: v-u-e
    view

    vue到底是什么?
    一个mvvm框架(库)、和angular类似
    比较容易上手、小巧
    mvc:
    mvp
    mvvm
    mv*
    mvx
    官网:http://cn.vuejs.org/
    手册: http://cn.vuejs.org/api/

    vue和angular区别?
    vue——简单、易学
    指令以 v-xxx
    一片html代码配合上json,在new出来vue实例
    个人维护项目

    适合: 移动端项目,小巧

    vue的发展势头很猛,github上start数量已经超越angular
    angular——上手难
    指令以 ng-xxx
    所有属性和方法都挂到$scope身上
    angular由google维护

    合适: pc端项目

    共同点: 不兼容低版本IE
    -------------------------------------------
    vue基本雏形:
    angular展示一条基本数据:
    var app=angular.module('app',[]);

    app.controller('xxx',function($scope){ //C
    $scope.msg='welcome'
    })

    html:
    div ng-controller="xxx"
    {{msg}}
    vue:
    html:
    <div id="box">
    {{msg}}
    </div>

    var c=new Vue({
    el:'#box', //选择器 class tagName
    data:{
    msg:'welcome vue'
    }
    });
    常用指令:
    angular:
    ng-model ng-controller
    ng-repeat
    ng-click
    ng-show

    $scope.show=function(){}
    指令: 扩展html标签功能,属性

    v-model 一般表单元素(input) 双向数据绑定

    循环:
    v-for="name in arr"
    {{$index}}

    v-for="name in json"
    {{$index}} {{$key}}

    v-for="(k,v) in json"
    事件:
    v-on:click="函数"

    v-on:click/mouseout/mouseover/dblclick/mousedown.....

    new Vue({
    el:'#box',
    data:{ //数据
    arr:['apple','banana','orange','pear'],
    json:{a:'apple',b:'banana',c:'orange'}
    },
    methods:{
    show:function(){ //方法
    alert(1);
    }
    }
    });
    显示隐藏:
    v-show=“true/false”
    bootstrap+vue简易留言板(todolist):

    bootstrap: css框架 跟jqueryMobile一样
    只需要给标签 赋予class,角色
    依赖jquery

    确认删除?和确认删除全部么?
    -----------------------------------------
    事件:
    v-on:click/mouseover......

    简写的:
    @click="" 推荐

    事件对象:
    @click="show($event)"
    事件冒泡:
    阻止冒泡:
    a). ev.cancelBubble=true;
    b). @click.stop 推荐
    默认行为(默认事件):
    阻止默认行为:
    a). ev.preventDefault();
    b). @contextmenu.prevent 推荐
    键盘:
    @keydown $event ev.keyCode
    @keyup

    常用键:
    回车
    a). @keyup.13
    b). @keyup.enter
    上、下、左、右
    @keyup/keydown.left
    @keyup/keydown.right
    @keyup/keydown.up
    @keyup/keydown.down
    .....
    -----------------------------------------
    属性:
    v-bind:src=""
    width/height/title....

    简写:
    :src="" 推荐

    <img src="{{url}}" alt=""> 效果能出来,但是会报一个404错误
    <img v-bind:src="url" alt=""> 效果可以出来,不会发404请求
    -----------------------------------------
    class和style:
    :class="" v-bind:class=""
    :style="" v-bind:style=""

    :class="[red]" red是数据
    :class="[red,b,c,d]"

    :class="{red:a, blue:false}"

    :class="json"

    data:{
    json:{red:a, blue:false}
    }
    --------------------------
    style:
    :style="[c]"
    :style="[c,d]"
    注意: 复合样式,采用驼峰命名法
    :style="json"
    -----------------------------------------
    模板:
    {{msg}} 数据更新模板变化
    {{*msg}} 数据只绑定一次

    {{{msg}}} HTML转意输出
    -----------------------------------------
    过滤器:-> 过滤模板数据
    系统提供一些过滤器:

    {{msg| filterA}}
    {{msg| filterA | filterB}}

    uppercase eg: {{'welcome'| uppercase}}
    lowercase
    capitalize

    currency 钱

    {{msg| filterA 参数}}

    ....
    -----------------------------------------
    交互:
    $http (ajax)

    如果vue想做交互

    引入: vue-resouce

    get:
    获取一个普通文本数据:
    this.$http.get('aa.txt').then(function(res){
    alert(res.data);
    },function(res){
    alert(res.status);
    });
    给服务发送数据:√
    this.$http.get('get.php',{
    a:1,
    b:2
    }).then(function(res){
    alert(res.data);
    },function(res){
    alert(res.status);
    });
    post:
    this.$http.post('post.php',{
    a:1,
    b:20
    },{
    emulateJSON:true
    }).then(function(res){
    alert(res.data);
    },function(res){
    alert(res.status);
    });
    jsonp:
    https://sug.so.360.cn/suggest?callback=suggest_so&word=a

    https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=jshow

    this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
    wd:'a'
    },{
    jsonp:'cb' //callback名字,默认名字就是"callback"
    }).then(function(res){
    alert(res.data.s);
    },function(res){
    alert(res.status);
    });

    https://www.baidu.com/s?wd=s

    作业:
    1. 简易留言-> 确认删除? 确认删除全部
    2. 用vue get 写个例子 weibo

  • 相关阅读:
    shell编程系列5--数学运算
    qperf测量网络带宽和延迟
    使用gprof对应用程序做性能评测
    [转]极不和谐的 fork 多线程程序
    Emacs显示光标在哪个函数
    Iterm2的一些好用法
    [转]最佳日志实践
    Deep Introduction to Go Interfaces.
    CGo中传递多维数组给C函数
    seaweedfs 源码笔记(一)
  • 原文地址:https://www.cnblogs.com/miangao/p/6710166.html
Copyright © 2011-2022 走看看