精华内容
下载资源
问答
  • 安利b
    2022-05-08 18:12:57

    浅说一下今天的感想,感觉最折磨我的部分就是高度塌陷。刚开始怎么都不对,找了半天原因也没有找到,过了很长时间才忽然想到了原因——高度塌陷

    解决高度塌陷的几种比较简单的方法:

    1.在父元素style内或者在浮动元素下方添加div使用css  clear:both

    2.在父元素内使用overflow:auto

    3.在父元素内使用overflow:hidden

    结果展示:

    全部代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                    margin: 0;
                    padding: 0;
                }
            .box1{
                width: 960px;
                margin: 0 auto;
                overflow: hidden;
            }
            .box .header{
                height: 110px;
            }
            .left{
                float: left;
            }
            .header>.span1{
                float: right;
                padding-top: 28px;
                padding-bottom: 10px;
            }
            span{
                border-right: 1px solid #bdabbd;
                padding-left: 10px;
                padding-right: 10px;
                font-size: 10px;
            }
            .span1 span:nth-child(1){
                color: #ed164b;
            }
            .span1 span:nth-child(3){
                color: #ed164b;
            }
            .span1 span:nth-child(6){
                color: #ed164b;
            }
            span:nth-child(6){
                border: none;
                padding-right: 0px;
            }
            form{
                border: 1px solid #d1d1d1;
                width: 235px;
                height: 30px;
                float: right;
            }
            form input:nth-child(1){
                float: left;
                outline: none;
                border: none;
                width: 205px;
                line-height: 30px;
                color: #d1d1d1;
            }
            form input:nth-child(2){
                width: 30px;
                height: 30px;
                border: none;
                background-image: url(../images/search.png);
                background-color: white;
                background-repeat: no-repeat;
                background-position: center;
                float: right;
            }
    
            ul li{
                list-style: none;
            }
            .box2 li{
                list-style: none;
                float: left;
                color: white;
                line-height: 54px;
                padding-right: 80px;
            }
            .banner{
                height: 54px;
                background: #0c335c;
            }
            .box2{
                width: 960px;
                margin: 0 auto;
            }
            .banner{
                height: 54px;
                background: #0c335c;
            }
            .box2{
                width: 960px;
                margin: 0 auto;
                /* 解决高度塌陷 */
                overflow: hidden;
            }
            center img{
                width: 100%;
            }
            center .box2{
                width: 960px;
                margin: 0 auto;
            }
            .box2 div{
                width: 304px;
                height: 212px;
                border: 1px solid #555454;
                float: left;
                margin-top: 52px;
                margin-bottom: 34px;
                margin-right: 21px;
            }
            .box2 .right1{
                margin-right: 0px;
            }
            footer{
                height: 206px;
                background: url(../images/footer.png) repeat;
                border-top:1px solid #cccccc;
            }
            .box3{
                width: 960px; 
                margin: 0 auto;
                height: 84px;
                padding-top: 30px;
                padding-bottom: 30px;
                border-bottom: 1px solid #ecebeb;
                line-height: 28px;
            }
            .box3 li{
                color: #336699;
                width: 210px;
                font-size: 12px;
                padding-left: 30px;
                float: left;
            }
            footer p{
                width: 960px; 
                margin: 0 auto;
                padding-left: 30px;
                font-size: 10px;
                line-height: 60px;
            }
            footer span{
                color: #0088cc;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="header box1">
                    <div class="left">
                        <img src="../images/logo.png" alt="">
                    </div>
                    <div class="span1">
                        <span>安利海外购</span>
                        <span>掌上安利</span>
                        <span>安利悦享荟</span>
                        <span>安利植物研发中心</span>
                        <span>各地店铺</span>
                        <span>安利易联网</span>
                    </div>
                    <form action="">
                        <input type="text" placeholder="搜索">
                        <input type="button">
                    </form>
            </div>  
        </div>
        <div class="banner">
            <ul class="box2">
                <li>走近安利</li>
                <li>产品展馆</li>
                <li>公司资讯</li>
                <li>企业责任</li>
                <li>安利云购</li>
                <li>其他</li>
            </ul>
    </div>
    </div>
    <center>
        <img src="../images/bg.png" alt="">
        <div class="box2">
            <div class="left1">
                <img src="../images/item.png" alt="">
                <p>《总裁零距离》微站</p>
            </div>
            <div class="center1">
                <img src="../images/item.png" alt="">
                <p>安利,值得选择</p>
            </div>
            <div class="right1">
                <img src="../images/item.png" alt="">
                <p>安利式体验 全心为您</p>
            </div>
        </div>
    </center>
    <footer>
        <ul class="box3">
            <li>安利公益基金会</li>
            <li>安利培训中心</li>
            <li>安利云购</li>
            <li>安利轻创业平台</li>
            <li>直销信息披露</li>
            <li>安利教育网</li>
            <li>网站导航</li>
            <li>安利全球官方网站</li>
            <li>联系我们</li>
            <li>企业证照</li>
            <li>隐私声明条款</li>
            <li>国家工商总局直销行业管理</li>
        </ul>
        <p>版权为安利(中国)日用品有限公司所有未经许可不得转载或链接,粤ICP备<span>05013154</span>号</p>
    </footer>
    </body>
    </html>

    html部分:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div class="box">
            <div class="header box1">
                    <div class="left">
                        <img src="../images/logo.png" alt="">
                    </div>
                    <div class="span1">
                        <span>安利海外购</span>
                        <span>掌上安利</span>
                        <span>安利悦享荟</span>
                        <span>安利植物研发中心</span>
                        <span>各地店铺</span>
                        <span>安利易联网</span>
                    </div>
                    <form action="">
                        <input type="text" placeholder="搜索">
                        <input type="button">
                    </form>
            </div>  
        </div>
        <div class="banner">
            <ul class="box2">
                <li>走近安利</li>
                <li>产品展馆</li>
                <li>公司资讯</li>
                <li>企业责任</li>
                <li>安利云购</li>
                <li>其他</li>
            </ul>
    </div>
    </div>
    <center>
        <img src="../images/bg.png" alt="">
        <div class="box2">
            <div class="left1">
                <img src="../images/item.png" alt="">
                <p>《总裁零距离》微站</p>
            </div>
            <div class="center1">
                <img src="../images/item.png" alt="">
                <p>安利,值得选择</p>
            </div>
            <div class="right1">
                <img src="../images/item.png" alt="">
                <p>安利式体验 全心为您</p>
            </div>
        </div>
    </center>
    <footer>
        <ul class="box3">
            <li>安利公益基金会</li>
            <li>安利培训中心</li>
            <li>安利云购</li>
            <li>安利轻创业平台</li>
            <li>直销信息披露</li>
            <li>安利教育网</li>
            <li>网站导航</li>
            <li>安利全球官方网站</li>
            <li>联系我们</li>
            <li>企业证照</li>
            <li>隐私声明条款</li>
            <li>国家工商总局直销行业管理</li>
        </ul>
        <p>版权为安利(中国)日用品有限公司所有未经许可不得转载或链接,粤ICP备<span>05013154</span>号</p>
    </footer>
    </body>
    </html>

    css部分:

    *{
        margin: 0;
        padding: 0;
    }
    .box1{
    width: 960px;
    margin: 0 auto;
    overflow: hidden;
    }
    .box .header{
    height: 110px;
    }
    .left{
    float: left;
    }
    .header>.span1{
    float: right;
    padding-top: 28px;
    padding-bottom: 10px;
    }
    span{
    border-right: 1px solid #bdabbd;
    padding-left: 10px;
    padding-right: 10px;
    font-size: 10px;
    }
    .span1 span:nth-child(1){
    color: #ed164b;
    }
    .span1 span:nth-child(3){
    color: #ed164b;
    }
    .span1 span:nth-child(6){
    color: #ed164b;
    }
    span:nth-child(6){
    border: none;
    padding-right: 0px;
    }
    form{
    border: 1px solid #d1d1d1;
    width: 235px;
    height: 30px;
    float: right;
    }
    form input:nth-child(1){
    float: left;
    outline: none;
    border: none;
    width: 205px;
    line-height: 30px;
    color: #d1d1d1;
    }
    form input:nth-child(2){
    width: 30px;
    height: 30px;
    border: none;
    background-image: url(../images/search.png);
    background-color: white;
    background-repeat: no-repeat;
    background-position: center;
    float: right;
    }
    
    ul li{
    list-style: none;
    }
    .box2 li{
    list-style: none;
    float: left;
    color: white;
    line-height: 54px;
    padding-right: 80px;
    }
    .banner{
    height: 54px;
    background: #0c335c;
    }
    .box2{
    width: 960px;
    margin: 0 auto;
    }
    .banner{
    height: 54px;
    background: #0c335c;
    }
    .box2{
    width: 960px;
    margin: 0 auto;
    /* 解决高度塌陷 */
    overflow: hidden;
    }
    center img{
    width: 100%;
    }
    center .box2{
    width: 960px;
    margin: 0 auto;
    }
    .box2 div{
    width: 304px;
    height: 212px;
    border: 1px solid #555454;
    float: left;
    margin-top: 52px;
    margin-bottom: 34px;
    margin-right: 21px;
    }
    .box2 .right1{
    margin-right: 0px;
    }
    footer{
    height: 206px;
    background: url(../images/footer.png) repeat;
    border-top:1px solid #cccccc;
    }
    .box3{
    width: 960px; 
    margin: 0 auto;
    height: 84px;
    padding-top: 30px;
    padding-bottom: 30px;
    border-bottom: 1px solid #ecebeb;
    line-height: 28px;
    }
    .box3 li{
    color: #336699;
    width: 210px;
    font-size: 12px;
    padding-left: 30px;
    float: left;
    }
    footer p{
    width: 960px; 
    margin: 0 auto;
    padding-left: 30px;
    font-size: 10px;
    line-height: 60px;
    }
    footer span{
    color: #0088cc;
    }

    更多相关内容
  • 安利维生素B族的作用
  • MS462XX VECTOR NETWORK MEASUREMENT SYSTEMS MAINTENANCE MANUAL,安利MS462XX系列网络分析仪维修手册
  • 安利下个人空间:https://club.gizwits.com/home.php?mod=space&uid=7261 优酷视频:https://player.youku.com/player.php/sid/XMTc0ODA0NDYwMA==/v.swf 三点说明: WS2812B为5V供电,5V逻辑器件,因此需要电平转换...
  • 『天涯杂谈』为了忘却的纪念--离职员工谈安利 分.docx
  • TypeScript安利指南

    2021-06-30 15:04:56
    TypeScript安利指南1.前言2.安利3.应用场景3-1.用我的代码就要听我的3-2.找文档3-3.粗心大意3-4.隐藏的问题3-5.接口数据不知道3-6.增强后的class和enum4.优点以及不足5.ts在js中的玩法5-1.配置文件自动提示5-2.js...

    1.前言

    据了解,目前有相当一部分同学不想去学习ts,毕竟没(xue)时(bu)间(dong)。很不幸两个月前我也是其中的一员。在看到尤大大都用ts写vue3了,蠢蠢欲动的我小心翼翼的踏入了这个深坑。在经历了长达一天的摸爬滚打之后,领悟到了真谛
    在这里插入图片描述
    经过了一段时间的理解之后,写了这篇文章,旨在给犹豫是否学习或者还在观望TypeScript的同学做个使用ts的收益分析,希望能够打动屏幕面前的你。

    2.安利

    ts难写吗?不难。最简单的做法三步就搞定。
    1.找一个js文件
    2.按下重命名
    3.把.js改成.ts
    ⬇️ ts初体验
    在这里插入图片描述
    -ts是什么
    ts是js的超集,意味着js本身的语法在ts里面也能跑的通。ts一方面是对js加上了很多条条框框的限制,另一方面是拓展了js的一些能力,就像es6提供了那么多神奇的语法糖一样。只要按照一定的规则去书写js,就能享受到ts带来的好处。
    当然因为现在的ts足够强大,并且有自家的vscode保驾护航,才方便了我们这些过去想都不(lan)敢(de)想的苦逼程序员。
    js改造成ts的工作量很大程度取决于你想对自己的代码限制的有多细致,描述的有多完善。最简单的就像上面说的,改个拓展名就行了(当然很大程度上可能会通过不了各种静态检查)。如果你写的越多,用你代码的同志就越大可能喜欢你写的东西。
    下面先简单介绍一下ts语法,便于后面的理解。
    -ts语法简介

    // 'xxx: number' 表示声明一个number类型
    const num: number = 123
    
    // 声明一个函数的参数类型(number以及any)和返回值(void)
    function fn (arg1: number, arg2: any): void {
        // todo
    }
    fn(num, [1,2,3,4])
    
    // 声明一个接口
    interface IPerson {
        name: string // IPerson需要包含一个name属性,类型是string
        age: number // IPerson需要包含一个age属性,类型是number
        family: string[] // IPerson需要包含一个family属性,类型是数组,数组里面都是string类型的数据
        sex?: '男' | '女' // IPerson可选一个sex属性,值为'男'或者'女'或者undefined
    }
    // 使用IPerson接口定义一个对象,如果对象不符合IPerson的定义,编译器会飘红报错
    const person: IPerson = {
        name: '小王',
        age: 12,
        family: ['爹', '娘'],
    }
    
    // type类似interface,以下写法等同用interface声明IPerson
    type IPerson2 = {
        name: string
        age: number
        family: string[]
        sex?: '男' | '女'
    }
    // 因此可以直接定义过来
    const person2: IPerson2 = person
    

    可能有的同学看了上面的介绍,会说:
    "要写这么多其他代码,还增加了文件体积,搞个啥子咧"
    一般情况下,ts需要编译成js才能运行。编译后长这样:

    // 'xxx: number' 表示声明一个number类型
    var num = 123;
    // 声明一个函数的参数类型(number以及any)和返回值(void)
    function fn(arg1, arg2) {
        // todo
    }
    fn(num, [1, 2, 3, 4]);
    // 使用IPerson接口定义一个对象,如果对象不符合IPerson的定义,编译器会飘红报错
    var person = {
        name: '小王',
        age: 12,
        family: ['爹', '娘'],
    };
    // 因此可以直接定义过来
    var person2 = person;
    
    

    通过人肉diff,发现编译后的去掉了ts的所有代码。
    可能就又有同学想问了:
    “学这些有啥好处?”
    别急,接着往下看🤓

    3.应用场景

    这块介绍ts的几个应用场景,给点启发~

    3-1.用我的代码就要听我的

    平时为了代码的健壮性,不得不对代码做很多容错的操作。
    假如成功避免了因为自己年龄大了而眼睛花了,使用自己写的方法时这里漏了一个参数,那里传错了参数类型。
    经常会有些不靠谱的使用者,不看你辛辛苦苦耕耘的api文档,瞎jb传参。最后出了问题还怪你没有做好兼容处理,领导群里一顿数落。
    我们就得像孩子他妈一样,考虑熊孩子会传些什么乱七八糟的东西进来,然后在代码里面加上各种分支。
    现在用ts,就可以在传参的时候友好的提示出来“你写了个什么玩意”的意思。
    首先用ts定义一个函数

    interface IArgs {
        name: string
        age: string
    }
    
    function youFoo (arg1: string, arg2: 'a'|'b', arg3: IArgs) {
        // 这里啥都不干,你传参吧
    }
    
    

    假如同事小明这么写

    youFoo('sss', 'c', {
        name: 'xiaoming',
        age: 18
    })
    
    

    他就会发现哪里好像不太对
    在这里插入图片描述
    第二个参数要求’a’或者’b’,于是小明默默的改过来了,但是又发现
    在这里插入图片描述
    原来age是要求传string类型。
    于是小明一边心里mmp一边改了过来。
    在这里插入图片描述
    在这里插入图片描述

    3-2.找文档

    平时在干活的时候,我们一般喜欢多一个屏幕,可以开个chrome,查查问题找找文档等。不过经常还得看网速,用搜索去搜api啥的,遇到在乡下写代码,分分钟有想shi的心。
    有了ts,我们就完(da)美(gai)的决掉了这个问题:
    首先按照这样的结构去写方法:

    /**
     * 一个方法:生成错误提示信息
     * 
     * @param {string} message 提示信息,比如`you have a error`
     * @param {number | string} code 错误码,数字和字符都行
     * @param {string} type 类型,请写`demo1`或者`demo2`
     * 
     * [还不懂?点这里吧](https://www.google.com)
     * 
     * ```js
     * // demo
     * genErrMsg('demo', 10086)
     * 
     * ```
     */
    export function genErrMsg (message: string, code: number | string, type?: ('demo1' | 'demo2')): string {
        return (message || `网络繁忙,请稍候再试`) + (code ? `(${code})` : ``)
    }
    
    

    然后在使用过程中的体验如下
    在这里插入图片描述
    在更完善的lib当中,体验更佳,除了开头的jquery外,还比如:
    在这里插入图片描述

    3-3.粗心大意

    阅读以下js代码, 提问:分割线以下的代码有几处bug?

    // careless.js
    let foooo = 1
    let fooo = 1
    let fooooooo = 1
    let foo = 1
    let foooooo = 1
    let test = 12
    const obj = {
        fn1 () {},
        fn2 () {},
        fn4 () {},
    }
    
    /*************** 分割线以下的代码有哪些地方有bug? **************** */
    
    obj.fn3()
    
    console.leg(fooooo)
    
    function test () {
        alert(tast)
    }
    
    

    /*
    **
    **
    ***** 答案分界线 *****
    **
    **
    */
    是不是觉得眼睛有点要瞎了?
    试试把.js改成.ts
    在这里插入图片描述

    3-4.隐藏的问题

    如果说之前的js代码还能凭眼神立刻看出哪里不对,那么下面这些就没那么简单了
    阅读以下js代码, 提问:代码有几处bug?

    import * as utils from './utils'
    
    utils.genErrMsg(10086, 'this is error') // 上面提到的genErrMsg函数
    
    let dom = window.document.getElementById('foo')
    dom.className = 'add'
    
    

    /*
    **
    **
    ***** 答案分界线 *****
    **
    **
    */
    试试把.js改成.ts
    在这里插入图片描述
    可知问题如下:
    1.genErrMsg的第一个参数应该是string
    2.getElementById返回值还可能是null
    在这里插入图片描述

    3-5.接口数据不知道

    在维护代码的过程中,可能经常遇到某个接口不知道有啥数据,通常这个时候我们需要去查接口文档。然而当次数一多,或者后台大佬一坑起来,改了字段,可能会查到怀疑人生。
    如果使用ts,可能手里的剧本就不一样了
    假如有个接口如下所示
    在这里插入图片描述
    我们针对这个接口写出了如下ts代码:

    interface IPriceData {
        /** 标识 */
        cbf: string
        /** id */
        id: string
        /** 市场价格 */
        m: string
        /** 后台价 */
        op: string
        /** 前台价 */
        p: string
    }
    
    // 将IPriceData塞进数组里
    type IPriceDataArray = IPriceData[]
    
    function getPrice () {
        // Promise的泛型参数使用了IPriceDataArray类型,then里面返回的数据就是IPriceDataArray类型
        return new Promise<IPriceDataArray>((resolve, reject) => {
            $.get('https://xxxxxxx/prices/pgets?ids=P_100012&area=&source=', data => {
                resolve(data)
            })
        })
    }
    
    

    当调用getPrice函数时,体验如下:
    在这里插入图片描述
    以后每次维护这段函数的时候都不需要去看文档啦。如果后台突然改了字段,在检查的过程中我们可以马上发现问题,然后拿着数据去质问:你tm改了东西让我来背锅…(此处省略1万个字)

    3-6.增强后的class和enum

    众所周知,js里面的class就是个语法糖,想学强类型语言,写法又是个半吊子。
    但是在ts当中,class被增强了(当然还是个语法糖,只不过更甜了)
    咱们看图说话:
    在这里插入图片描述
    vscode中对ts下的共有属性、私有属性、保护属性和静态属性开了小灶,实例下只有公有属性才会被允许使用和提示出来。
    另外ts还提供了enum语法糖:

    enum HttpCode {
        /** 成功 */
        '200_OK' = 200,
        /** 已生成了新的资源 */
        '201_Created' = 201,
        /** 请求稍后会被处理 */
        '202_Accepted' = 202,
        /** 资源已经不存在 */
        '204_NoContent' = 204,
        /** 被请求的资源有一系列可供选择的回馈信息 */
        '300_MultipleChoices' = 300,
        /** 永久性转移 */
        '301_MovedPermanently' = 301,
        /** 暂时性转移 */
        '302_MoveTemporarily' = 302,
    }
    
    HttpCode['200_OK']
    HttpCode[200]
    
    

    相比简单对象定义的key-value,只能通过key去访问value,不能通过value访问key。但是在enum当中,正反都可以当做key来用。
    编译后的代码有兴趣的同学可以了解下~

    "use strict";
    var HttpCode;
    (function (HttpCode) {
        /** 成功 */
        HttpCode[HttpCode["200_OK"] = 200] = "200_OK";
        /** 已生成了新的资源 */
        HttpCode[HttpCode["201_Created"] = 201] = "201_Created";
        /** 请求稍后会被处理 */
        HttpCode[HttpCode["202_Accepted"] = 202] = "202_Accepted";
        /** 资源已经不存在 */
        HttpCode[HttpCode["204_NoContent"] = 204] = "204_NoContent";
        /** 被请求的资源有一系列可供选择的回馈信息 */
        HttpCode[HttpCode["300_MultipleChoices"] = 300] = "300_MultipleChoices";
        /** 永久性转移 */
        HttpCode[HttpCode["301_MovedPermanently"] = 301] = "301_MovedPermanently";
        /** 暂时性转移 */
        HttpCode[HttpCode["302_MoveTemporarily"] = 302] = "302_MoveTemporarily";
    })(HttpCode || (HttpCode = {}));
    HttpCode['200_OK'];
    HttpCode[200];
    
    

    4.优点以及不足

    通过上面的几个栗子,大概可以看出使用了ts后,可以获得以下技能点:

    • 清晰的函数参数/接口属性,增加了代码可读性和可维护性
    • 静态检查
    • 配合现代编辑器,各种提示
    • 生成API文档
    • 活跃的社区
      以及对应的技术成本
      在这里插入图片描述
      这里提到的vue2.x由于ts先天能力的不足,导致vue的ts语法需要使用class风格(运行时会被转换回原本的vue构造函数的语法),和我们平时熟悉的vue风格有些差异
      在这里插入图片描述
      这里是因为vue的this下的环境比较复杂,对于ide来说需要在运行时才能确定,因此在编写ts的时候需要手动去设置属性(比如props,data,methods等)到this下面,非常麻烦。早期ts并不支持手动编写this的作用域,后来专门为其设计了一个ThisType的方法。
      在上面的代码里用了class的写法,本身所有需要的属性就在this下,规避了运行时才能确定this下需要的作用域的问题。
      另一方面,由于ts提示能力比较局限,比如在函数场景中,如果数据来源是独立的对象,体验就会比较糟糕。
      请阅读以下栗子(这一块稍微超纲了标题’安利’的范畴,不太理解的新同学可以入坑以后再消化~)
    interface IOptions {
        name: string
        age: number
        extra: {
            data: Object
            methods: Object
        }
    }
    
    // 参数options要求符合IOptions定义的规则
    function sthConstructor (options: IOptions) {}
    
    // options对象当中并没有任何ts的静态检查和提示
    const options = {
        name: 'peter',
        age: '13', // error: age应该为数字
        extra: {
            data: [],
            methods: {}
        }
    }
    // options飘红报错,然而提示内容废话太多,关键信息藏得太深
    sthConstructor(options)
    
    

    在这里插入图片描述
    在上面的场景,我们希望在options当中能够获得完整的ts检查能力。达成这个目的有三种方法:
    1.将options里面的东西挪进函数当中
    在这里插入图片描述
    2.将options用IObject定义
    在这里插入图片描述
    3.提供一个helper方法
    在这里插入图片描述
    这三种方式当中:
    方法1是最简单的方式,但是在大型项目当中,这样的写法反而很少见到。
    方法2是维护者常用的方式,但是对于使用者而言,成本较高。因为使用者需要去lib里翻到方法对应的type类型,将它import进来。
    方法3是个人觉得相对比较好的方式,只要维护者提供一个类似helper的函数包装一下,就可以获得对应的提示。是不是很像vue ts的装饰器?
    但上述三种解决方式我觉得都不优雅,这就是ts当前的不足之一。

    在这里插入图片描述

    5.ts在js中的玩法

    TypeScript是和vscode都是微软的亲儿子,他们兄弟俩相互协作肯定会有更多小花样,甚至你用的只是js文件,也可以享受到。
    这里抛砖引玉列出两条:

    5-1.配置文件自动提示

    只要有types文件,所有配置都可以自动提示:

    /**
     * webpack配置自动提示
     * 
     * 先安装对应的types包: `npm i @types/webpack -D`
     * 
     * @type {import('webpack').Configuration}
     */
    const config = {
        
    }
    
    

    在这里插入图片描述

    5-2.js语法检查

    在js中也可以获得自动提示和静态检查。只要在vscode的setting当中勾上Check JS即可。虽然你的js代码可能会被各种飘红🤪
    在这里插入图片描述
    ⬇️ 之前的例子在js中也可以提示出一些bug了
    在这里插入图片描述

    6.写在最后

    有的同学会问:我才学js,可以学ts吗?可以,并且建议,因为会对js基础知识加深理解。有用法问题在stackoverflow上搜搜就解决了。

    展开全文
  • Java实例程序安利001~005 001 三目运算 002 两个变量互换(不借助第三个变量) 003 根据用户消费打折业务逻辑 004 杨辉三角 005 九九乘法表 001 三目运算 三目运算符是if…else条件语句的简写格式,可以完成简单的条件...

    001 三目运算

    三目运算符是if…else条件语句的简写格式,可以完成简单的条件判断,在javaScript用的更加广泛但Java也可以方便使用哦

    package com.company;
    
    /**
     * @author 过儿
     * @date 2022/5/7 0007 16:15
     * @description 三目运算符是if...else条件语句的简写格式,可以完成简单的条件判断,
     * 在javaScript用的更加广泛但Java也可以方便使用哦
     */
    public class 三元运算符 {
    
        public static void main(String[] args) {
            System.out.println(55 % 2 == 0? "偶数": "奇数");
        }
    }
    
    

    002 两个变量互换(不借助第三个变量)

    异或和其他运算符不会改变变量本身值,即a^b没有任何意义

    package com.company;
    
    /**
     * @author 过儿
     * @date 2022/5/9 0009 17:39
     * @description 异或 "^"和其他运算符不会改变变量本身值,即a^b没有任何意义
     */
    public class 两个变量互换不借助第三个变量 {
    
        public static void main(String[] args) {
            int a = 1;
            int b = 2;
            a = a^b;
            b = b^a;
            a = a^b;
            System.out.println("a=" + a + "\n" + "b=" + b);
        }
    }
    
    

    003 根据用户消费打折业务逻辑

    规避负数带来的错误

    package com.company;
    
    /**
     * @author 过儿
     * @date 2022/5/9 0009 17:48
     * @description 规避负数
     */
    public class 根据用户消费打折业务逻辑 {
        public static void main(String[] args) {
            float money = 2022;
            float rebate = 0f;
            if (money > 200) {
                int grade = (int) money / 200;
                switch (grade) {
                    case 1:
                        rebate = 0.95f;
                        break;
                    case 2:
                        rebate = 0.90f;
                        break;
                    case 3:
                        rebate = 0.85f;
                        break;
                    case 4:
                        rebate = 0.83f;
                        break;
                    case 5:
                        rebate = 0.80f;
                        break;
                    case 6:
                        rebate = 0.78f;
                        break;
                    case 7:
                        rebate = 0.75f;
                        break;
                    case 8:
                        rebate = 0.73f;
                        break;
                    case 9:
                        rebate = 0.70f;
                        break;
                    case 10:
                        rebate = 0.65f;
                        break;
                    default:
                        rebate = 0.60f;
    
                }
            }
            System.out.println("您的累计消费金额为:" + money);
            System.out.println("您将享受" + rebate + "折优 优惠!");
        }
    }
    
    

    执行结果如下:
    在这里插入图片描述

    004 杨辉三角

    杨辉三角形由数字排列,可以把它看作一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数值与左上角数值之和。
    在这里插入图片描述

    package com.company;
    
    /**
     * @author 过儿
     * @date 2022/5/9 0009 18:00
     * @description 杨辉三角形由数字排列,可以把它看作一个数字表,其基本特性是两侧数值均为1,
     * 其他位置的数值是其正上方的数值与左上角数值之和。
     */
    public class 杨辉三角 {
        public static void main(String[] args) {
    
            //创建二维数组
            int[][] triangle = new int[8][];
            //遍历二维数组的第一层
            for (int i = 0; i < triangle.length; i++) {
    
                triangle[i] = new int[i + 1];
                //遍历第二层数组
                for (int j = 0; j <= triangle[i].length - 1; j++) {
                    //将两侧的数组元素赋值为1
                    if (i == 0 || j == 0 || j == triangle[i].length - 1) {
                        triangle[i][j] = 1;
                    } else {
                        //其他数值通过公式计算
                        triangle[i][j] = triangle[i - 1][j] + triangle[i - 1][j - 1];
                    }
    
                    //输出数组元素
                    System.out.print(triangle[i][j] + "\t");
                }
                System.out.println();
            }
        }
    }
    
    

    执行结果如下:
    在这里插入图片描述

    005 九九乘法表

    package com.company;
    
    /**
     * @author 过儿
     * @date 2022/5/9 0009 18:23
     * @description
     */
    public class 九九乘法表005 {
        public static void main(String[] args) {
            //循坏控制变量从1通历到9
            for (int i = 1; i <= 9; i++) {
                //第二层循环控制变量与第一层最大索引相等
                for (int j = 1; j <= i; j++) {
                    //输出计算结果但不换行
                    System.out.print(j + "*" + i + "=" + i * j + "\t");
    
                }
                //在外层循环中换行
                System.out.println(); 
            }
        }
    }
    
    
    
    
    展开全文
  • 安利软件-如何一键装B

    千次阅读 2018-08-06 19:59:01
    今天教大家如果高大上的装B! 想要解锁更多新姿势?请访问我的博客 第一步 https://github.com/WWILLV/GodOfHacker 下载软件 第二部 使用 不谢哦�� 结束 此片完了~ 想要了解更多精彩新姿势?请...

    今天教大家如果高大上的装B!

    想要解锁更多新姿势?请访问我的博客

    第一步

    https://github.com/WWILLV/GodOfHacker

    下载软件

    第二部

    使用

    1533187094163

    1533187121497

    1533187138329

    不谢哦

    结束
    此片完了~ 想要了解更多精彩新姿势?请访问我的个人博客 本篇为原创内容,已在个人博客率先发表,随后CSDN,segmentfault,juejin同步发出。如有雷同,缘分呢兄弟。赶快加个好友~

    展开全文
  • (适应家庭聚会、工作室小型培训)MVM我要安利|安利购物网自我介绍:MVM我要安利|安利购物网首先问大家三个问题MVM我要安利|安利购物网第一、想不想迅速提升团队业绩?MVM我要安利|安利购物网第二、想不想让团队产生...
  • MT8852蓝牙测试仪器的中文版的操作手册,非常有助于开发人员快速上手。
  • 云服务器安利

    2021-12-22 17:12:04
    B硕士一枚,之前想着跑跑程序用笔记本就行了,最后发现数据量大了,模型深了之后自己的电脑跑不动了; 于是就选择找云服务器,谷歌的emmm懂得都懂 最后比较比较还是发现,恒源云的云服务器挺好的,平台显卡类型...
  • 经常使用word或者那些浏览器自带编辑器的你可能会...b.自己简单创建一个文件,直接另存为就可以了,我这里就直接用Markdown进行排版了 2.简单了解一下排版的功能 a.多级标题,代码块,有序无序列表等 b.文本格式设置 .
  • 我们面试的时候,经常会遇到一个经典问题:mysql存储引擎为什么选择b+树?包括我自己面试的时候,也遇到过很多次这个问题。那我们应该如何回答这个问题? 我比较建议从两个角度来回答: 第一个就是别的树为什么不...
  • } /* 取消最后多出的背景 */ #shu{ color: #ed164b; background-image: none; } .rig .bot input{ width: 237px; height: 29px; border: 1px solid #ababab; float: right; /* 首行缩进 */ text-indent: 14px; ...
  • 本文介绍 Navicat Premium 12.0.29 和 Navicat Premium 12.1.5.0 的安装、激活与基本使用。 ...博主所提供的激活文件理论支持Navicat Premium 12.0.x系列,但已测试的版本...https://www.jianshu.com/p/5f693b4c9468
  • B.反咬。认定照片是P的,有人恶意抹黑; C.承认。但强调那是艺人私生活,请大家多关注她的作品。 这几种处理手段,大家应该多少都在现实中看到过吧? 但剧中的经纪人莫向晚给出了第四种方法——把床照变剧照。 她...
  • 更多有趣的内容请访问官网查看 https://copytranslator.github.io/ 同时,在 B 站上面有人制作了 CopyTranslator 的使用视频,有兴趣的小伙伴可以看看 https://www.bilibili.com/video/av37503818/ 后台回复『Copy...
  • B b = AU . toB ( a ) ; C c = BU . toC ( b ) ; D d = CU . toD ( c ) ; 勉强能忍,就是多打几行,增加了几个多余的变量。 但最佳的语法就是 a.toB().toC().toD() 这种链式调用是最好的。 在 Java...
  • } 总结 第一次完整实现整个静态页面(参照b站的一位博主),可能有错误或者冗余的地方,欢迎大家多多指正啊。目前对于板块之间逻辑构架以及属性不太熟悉,希望自己多多练习,熟能生巧。 今天刚到货《CSS权威指南》...
  • ZoomIt安利

    2020-07-26 11:08:19
    b 蓝色;o 橙色;y 黄色;p 粉色。 2.2可轻松画出不同的形状: 按住Shift键可以画出直线; 按住Ctrl键可以画出长方形; 按住tab键可以画出椭圆形; 按住 shift+ctrl 可以画出箭头。 另外:Ctrl+Z:撤销最后的标注。 ...
  • 开发目的:方便b站直播间同传,提高效率 程序试用于大部分新版的PC浏览器 (ps:如果没有生效请刷新页面重试,如果不兼容请更换浏览器) 使用说明:打开直播页面,按F12或鼠标右击打开开发者工具,复制代码,粘贴到...
  • 对于初试没有发挥好的考研人来说其实还有一个机会可以逆袭,那就是调剂,下面小编整理了2019考研调剂B区院校大盘点,供大家参考!如果说考研初试是看实力的话,那调剂就更多的是看人品。因为调剂需要自己主动广撒网,...
  • 花树为b站:花树大为为(请关注我)从读研开始,就沉迷b站。偶尔良心发现,会羞愧自己这几年没认真读书看电影,更别提想点事儿了。之前在b站看日剧,弹幕里为了鸡蛋生吃吵得不可开交;狂热美妆视频,跟着疯狂买口红...
  • 一行代码就可下载b站等全网视频! 我在滴滴数据分析岗实习了8个月 「双非」研究生数据分析春招心路历程。 如何看待2020校招数据分析岗位招聘情况? 解一下TMD几道热门数据分析面试题。 对用户画像标签体系的一点思考...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,340
精华内容 2,136
关键字:

安利b

友情链接: lb1201xpdis2.rar