zoukankan      html  css  js  c++  java
  • 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文件夹的内容到自己服务器    
                
    
  • 相关阅读:
    Reverse Integer
    Reverse Bits
    Number of 1 Bits
    House Robber
    02-线性结构1. 一元多项式求导 (25)
    01-复杂度2. Maximum Subsequence Sum (25)
    <转载>使CSS文字图片div元素居中方法之水平居中的几个方法
    <转载>div+css布局教程之div+css常见布局结构定义
    15个必须知道的chrome开发者技巧
    <转载>Div+Css布局教程(-)CSS必备知识
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/10185629.html
Copyright © 2011-2022 走看看