jQuery和Vue

 

jQuery
    
    概述
        是js的一种函数库有美国人 John Resig编写
    特点
        写的少,做的多,国内用的jq1.0版本,可以兼容低版本的浏览器,支持链式编程或链式调用和隐式迭代
        链式编程
            $(this).siblings().slideDown()
            $(this).siblings().parent().siblings().children("ul").slideUp();
            # 头一样的代码可以拼接在同一行
            $(this).siblings().slideDown().parent().siblings().children("ul").slideUp();
            
        隐式迭代
            eg:10个button被点击时
            $("button").click(function(){
                alert("btn")
                alert($)  返回一个匿名函数
            })
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
             
    入口函数
        $()  ===> document.getElementById()/
        $(this)
        $("#btn")
        存放一个html标签
            $("<div>
                <p> 
                    哈哈哈
                </p>
            <div>")
        
        第一种(不常用)
        $(document).ready(function(){
            //执行的代码块
            alert(1);
        })
        第二种(全代码)
        <style>
            div{
                width: 100px;
                height: 100px;
                background: pink;
                /* display: none; */
            }
           input{
               width: 50px;
               height: 30px;
               background: green;
               border: 1px black solid;
               outline: none;
           }
        </style>
        <script src="./jQuery/jquery-1.12.4.min.js"> </script>
        <script>
        
            // 这是入口函数的开始地方
            $(function(){
                $("#btn").click(function(){
                    $("div").toggle(500);
                })
            })
        </scrip
    </head>
    <body>
        <!-- <label for="">点击按钮</label> -->
        <label for="">按钮</label>
        <input type="button" id="btn">
        <div></div>
        
    </body>

    jq控制html
        $(function(){
            alert($('div').html());
            alert($('div').html(哈哈));
            alert($('div').html("<p>123</p>"));
        })
        <div>测试</div>
jq控制css $(function(){ alert($('div').css("color","red")); alert($('div').css("color")); alert($('div').css({'color':'red',"font-size":'25px'})); }) <div>测试</div>
js常用的选择器方法 this     关键字 代指当前发生动作的那个标签(事件) html()     获取内容 stop()   停止之前的事件 index()     索引值 show()     显示 hide()      隐藏 toggle()   双向性 addClass()   添加类 removeClass() 删除类 toggleClass() 双向性 jq中常用的选择器 第一种 和CSS中的选择器一样 $(".mydiv,#btn,p") 第二种 选择出来之后的元素进行筛选 has() 选中父级执行命令 eg: <div> <p>hahha </p> <span> heheh</span></div> 执行的是div标签 not() 除()的其他的都可以 eq() 获取下标一般和index()绑定来使用 第三种 选择出来之后的元素进行转移 prev()   上面的一个 prevAll()   上面的所有 next()   下面的一个 nextAll()   下面的所有 parent()   父级 siblings()   兄弟级 children()   孩子级 find()    选中父级执行命令 eg: <div> <p>hahha </p> <span> heheh</span></div> 执行的是p标签标签 first() last() 动画效果 animate() 其中有四个参数 第一个参数  以字典的形式存储{"width":500,"font-size":20} 第二个参数  延时时间默认400ms 第三个参数  曲线函数(swing(变速)/linear(匀速)) 第四个参数  是一个回调函数俗称(匿名函数)function(){"opacity":0.6} 存放当前动画结束后要发生的事件 slideUp()     向上卷起 slideDown()   向下展开 slideToggle()  双向性 fadeIn()    淡入效果 fadeOut()    淡出效果 fadeToggle() 双向性 fadeTo(0.2) 设置透明度为0.2 访问已有的属性 prop() 获取属性 prop("href") 获取href的值 prop("href","http://www.baidu.com") 修改其中的内容 访问自定义的属性   attr() 获取属性 attr("mycode") 获取mycode的值   val() 获取input标签的值,相当于prop("value")   each(function(event){}) 自带一个形参event是each的默认参数 和鼠标(mouse)事件有关的事件机制 blur() 失去焦点 focus() 获取焦点 change() 改变其中的内容 click() 点击事件 mouseover() 鼠标进入(包含子元素) mouseout() 鼠标离开(包含子元素) mouseenter() 鼠标进入(不包含子元素) mouseleave() 鼠标离开(不包含子元素) // hover 中的两个匿名函数mouseenter和mouseleave hover(function(){},function(){}) ready() submit() 数据提交 和键盘有关的事件 keyup() 弹起 keydown() 按下 表单提交 submit() 表单提交一般不会用$("from"),因为form标签有可能在一个页面有多个,为了保证唯一性,一般推荐使用id选择器$("#myform"),也不是直接提交的,需要加条件判断 $("#myform").submit(function(event){ if(aa && bb && cc ){ // 条件成立需要执行的代码块 alert("提交成功") } else{ // 阻止表单默认提交 return false // event.preventdefault() } }) 正则表达式(用的是原生js中的) 创建 var re = new RegExp(aa,bb) // aa 匹配规则,bb 正则的参数 var re = /匹配规则/正则的参数 正则变量.test(数据) // 获取input框中的内容 var re = /^w{6,20}$/ // 匹配用户名输入是否是合法的标识符 var vals = $("#input01").val() // 验证正则能否成功匹配 re.test(vals) 事件冒泡 是一种客观存在的现象,父子级标签且都绑定相同的事件,触发子级命令的时候会逐层传递到父级 如何阻止事件冒泡的行为 $("#btn").click(function(event){ // event.stopPropagation() 不推荐使用 return false }) 事件委托 一般都委托给这个标签的父标签(指的是一般不会发生改变的父标签) delegate()中有三个参数   注:第一个参数和第二个参数都以字符串的形式存在   第一个参数   事件正实发生在谁身上   第二个参数   事件属性(click,mouseover)   第三个参数   匿名函数function(){} 优点 提高代码的执行效率 可以给未来元素绑定命令(指的是用程序增加的标签命令) eg: $("ul").delegate("li","click",function(){ alert($(this).index()); }) <ul> <li>文字1</li> <li>文字2</li> <li>文字3</li> ... </ul> on() 只可以给未来元素绑定命令 有两个参数 第一个参数 事件属性 第二个参数 匿名函数function(){} 节点操作 js内置的DOM 是一种内置的结构化的表现手法,通过这个结构化表现手法把所有的标签实现了一个倒树状结构图 如下图
            
           DOM(document object model) 文档操作模型 标签
= 元素 = 标记 < 节点(标签,标签的属性,标签的内容) 常见的节点操作的方法 html() 比较强大 下面的()中写的都是要操作的元素 append() 子级的后面追加 prepend() 子级的前面追加 after() 同级的后面追加 before() 同级的前面追加 下面的()中写的是要往哪个地方添加(目的地) appendTo() prependTo() insertAfter() insertBefore() remove() 删除 empty() 清空 eg: 第一步:声明变量保存节点数据 第二步:使用追加函数将节点追加到相应的位置 var $li = $("<li>hhaha</li>") $("ul").append($li) $li.appendTo($("ul")) <div> // 第四个增加的位置 before()/insertBefore() <ul> // 第二个增加的位置 prepend()/prependTo() <li></li> // 第一个增加的位置 append()/appendTo() </ul> // 第三个增加的位置 after()/insertAfter() </div> 原生的JS对象 创建的方式 第一种方式 var pre = new Object() pre.name = "zhangsan" pre.age = 25 pre.say = function(){ // 方法的定义 alert("hhaha") } alert(this.name) pre.say() 第二种方式 var obj = { "name":"laowang", "age":25, "say":function(){ // 定义方法 alert("hahha") } }

 

Vue框架
    是js中的一种函数库,相比于jQuery来说特别丰富,俗称框架,是一种以数据为导向且语法特别灵活,方便我们使用
    vue的使用是从new一个对象开始的   var vue = new Vue({})
    

    如下
    <script>
        window.onload = function()
        {   
            // 创建一个Vue对象
            var vue = new Vue(
            {
                // el:"#btn"  vue要控制的标签相当于$("#btn"),实际是选择器
                el:"#app",   // 只要绑定#app,#app所包裹标签中想用的值如果在data字典中都可以用
                // 存储vue数据,以字典的形式
                data:
                {
                // 存储变量
                    str:"qwertyuiop",
                    data1:100,
                    num:0,
                    bool1:true,
                    bool2:false
                },
                mounted:function()
                {
                    // 当界面刷新时,执行的函数
                }
                filters:
                {
                
                // 局部过滤器  管道 "|" 用来格式化文本
                    yuan:function(args)
                    {
                        return args + ""
                    }
                }
                methods:
                {
                // 定义方法,是一个匿名函数
                    funcAdd:function(num1,num2)
                    {
                        ret = num1 + num2
                        console.log(ret)
                    }   
                },
                computed:
                {
                // 计算属性,命令必须是返回值 是一个匿名函数
                    funcReverse:function(){
                        var ret = this.str.split('').reverse().join('')
                        return ret 
                    }
                
                },
                watch:
                {
                // 侦听属性名(侦听的变量是谁,就是那个名字)
                    num:function(newVal,oldVal){
                        console.log(oldVal + '|' + newVal)
                    }    
                }
            })
        }
    
    </script>
    
    <body>
        <div id="app">
            {{ bool1?"OK":"NG"}}
            // 可以控制很多的标签第一个div下的所有标签都可以控制
            <p> {{data1}}
                <div>
                    <span>哈哈哈哈</span>
                </div>
            </p>
            {{ str.split("").reverse().join("") }}
        </div>
    </body>
    
    胡子语法
        是一种以{{ num }}的表现形式体现出来的
        其中可以传表达式 || 条件 || 三元运算符
        
    常见的样式
        <a v-bind:href="url1">百度</a>     data:{url1:"htttp://www.baidu.com"}
        简写格式
        <a :href="url2">淘宝</a>            data:{url2:"htttp://www.taobao.com"}
        <button v-on:click="num += 1"></button>    data:{num:0}
        <button @click="funcAdd(num1,num2)"></button>    // ()中如果没有参数()可以省略不写,但有参数一定要传参,要写()
        methods:
        {
            funcAdd(num1,num2)
            {
                ret = num1 + num2
                console.log(ret)
            }   
        }
        
    funcAdd:function(args){

        console.log(args)
        // 访问服务器的url
        axios({

            url:'/add_data',
            method:'get',
            dataType:'text',
            params:{"code":args}   // 传参关键字必须是params
        })
        .then(function(ret){
            
            alert(ret.data)
            // console.log(ret)
        })
        .catch(function(){
            alert("请求失败")
        })
    }    
    
    vue中-->只要数据变,页面视图就变,以数据为导向,用来绑定修改数据而jQuery中是以元素为导向的,用来操作元素的属性
    v-xxxx 是一种指令,具备特殊的功能语法,和胡子语法搭配使用
    v-bind:/:     用来修饰属性
    v-on:click/@click/mouseover/mouseout/ .... = "function(){}"     事件机制
    
    三元运算符
        (var result == "OK")?'完成':'未完成'
    多种条件判断
        v-if=""
        v-else-if=""
        v-else=""
        
    v-show=""    bool值数据类型,true显示,false隐藏   display:none;
    
    用来遍历和获取属性
        v-for="(data,index) in list"
        
    用来访问表单中的数据,进行双向绑定
        v-model=""
        
    多选/复选    
        <div id="app">
            性别:
            <input type="radio" v-model='myradio' value="nan"><input type="radio" v-model='myradio' value="nv"><div>
                兴趣爱好:
                <input type="checkbox" value="sleep" v-model='list1'>睡觉
                <input type="checkbox" value="surf" v-model='list1'> 上网
                <input type="checkbox" value="code" v-model='list1'>敲代码
            </div>
        </div>
        <script>
            var app = new Vue({
                el:'#app',
                data:{
                    myradio:'nan', // 默认值
                    list1:['surf'] // 里边的值全是默认值
                }
            })
        </script>
    
    
    事件冒泡
        @click.stop.prevent="num+=1"
    
    过虑器   管道符号 "|"  用来格式化文本
    filters:{
        // 局部过滤器
        func:function(aa){
        if(this.aa == 0){
        
            return aa
        }
            var result = aa + ''
            console.log(result)
        }
    }
    
    Vue.filter(过虑器的名字,function(aa){
    
        // 全局过虑器
        if(this.aa==0){
        
            return aa 
        }
        var result = '' + aa
        console.log(result)
    })
        
    
    监听属性
    watch:
    {
    // 侦听属性名(侦听的变量是谁,就是那个名字)
        num:function(newVal,oldVal){
            console.log(oldVal + '|' + newVal)
        }    
    }
    
    自定义属性
    Vue.directive(指令名用户自定的){
    
        inserted:function(el,binding){
            // 回调函数(钩子函数)需要执行的内容
            
        }
    
    }
    
    Es6/Es2015   2015年更新的
    定义变量的关键字
        var
        let
        const
        
    箭头函数
        用来解决this指向问题的作用,如果用this.num获取到一个objct.window()时,需要将该函数改写成箭头函数 
        原来的匿名函数
            var func = function(dat){
            
                this.num = dat.data
            }
        改装成箭头函数
            var func = dat => {
                
                this.num = dat.data    
            }
            
    对象的精简
        var name = "laowang    
        var ovue = new Vue({
            el:'#app',
            data:{
                name, // 相当于name:name,此name非彼name
            }
        })
        
    文件的组件
        单文件的组件
            demo_func.vue // 单文件组件的文件
            html    <template> content </template>
            css     <style>    content </style>
            js        <script>   content </script>
        
        多文件组件
            效果等同于python中的封装,
    
    模块的导入和导出(import/export)
        a.先导出,在导入,才能使用
        b.最后加载到当前需要使用的那个模块
            
            
    node.js服务
        启动服务 npm run dev
        
        认识webpack目录的各个文件的作用
            build   //打包要用的配置文件
            config  //webpack服务环境的配置文件
            dist    //将来打包生成的文件(上传的文件)
            node_modules   //模块
            
            src     //前端开发的目录
                components  //组件 **** 找对应组件放对应的数据
                route    //路由跳转页面
                App.vue   // webpack最大的组件


            static -- 静态文件:css  js
            index.html -- 首页
            
        跨域请求数据
            a. src文件夹main.js粘贴:
                import axios from 'axios'
                Vue.prototype.axios = axios
            b. config/index.js 的proxyTable粘贴
                // 配置跨域代理
                      // apis 自定义的代理名
                      '/apis': {
                        // 代理的服务器
                        target: 'http://localhost:7890', 
                        // 允许跨域
                        changeOrigin: true,
                        pathRewrite: {
                            '^/apis': ''
                        }
            c. 重启服务
            d. 请求数据
                this.axios({
                    url:'/apis/index_data',
                })

        打包上线
            a. 去掉接口的代理名/apis
            b. 停止服务
            c. num run build
            d. 复制dist文件夹的内容到自己服务器    
            

原文地址:https://www.cnblogs.com/wangxiongbing/p/10185629.html