• legend3---11、php前端模块化开发


    legend3---11、php前端模块化开发

    一、总结

    一句话总结:

    把常用的前端块(比如课程列表,比如评论列表)放进模块列表里面,通过外部php变量给数据,可以很好的实现复用和修改
    页面调用
    @php $lesson_list=$lessons; @endphp
    @include('home.module.lesson_list')
    
    
    lesson_list模块
    
    {{--1、用php变量接收外部变量,在外部要把lesson数据赋值给$lesson_list--}}
    
    <div class="row">
        @foreach($lesson_list as $lesson)
            <div class="col-md-3 col-xs-6">
                <div class="choose_lesson_box" >
                    <div class="choose_lesson_imgbox">
                        <a href="/lesson/{{$lesson['l_id']}}">
                            <img src="{{$lesson['l_preview']}}" style="max- 100%;" alt="">
                        </a>
                        <a href="/lesson/{{$lesson['l_id']}}" class="choose_lesson_start_learn">
                                                <span class="choose_lesson_start_learn_content">
                                                    开始学习
                                                </span>
                        </a>
                    </div>
                    <div class="choose_lesson_info_box">
                        <div class="choose_lesson_info_box_author">
                            <span class="label label-info">范仁义</span>
                        </div>
                        <div class="choose_lesson_info_box_time">
                            <span class="label label-info">36课时</span>
                        </div>
                    </div>
    
    
                    <div class="choose_lesson_title" style="text-align: center;margin-top: 5px;">
                        <a class="choose_lesson_title_a font_cut" style="display: inline-block;" href="/lesson/{{$lesson['l_id']}}">
                            {{$lesson['l_title']}}
                        </a>
                        <div style="display: none;">会员优惠:8元 <del><i>10元</i></del></div>
    
                        <div class="video_interaction_box font_cut" style="font-size: 12px; 100%;">
    
                            {{--点赞--}}
                            <div class="video_interaction_box_like" style="margin-right: 3px;">
                                                    <span style="@if(in_array($lesson['l_id'],$likeLessons_l_ids)) display:none; @endif" l_id="{{$lesson['l_id']}}" class="fa_like">
                                                        <i class="fa fa-thumbs-o-up fa-fw" aria-hidden="true"></i>
                                                        <span>@if(in_array($lesson['l_id'],$likeLessons_l_ids)) {{$lesson['l_like']-1}} @else {{$lesson['l_like']}} @endif </span>
                                                    </span>
                                <span style="color: red;@if(!in_array($lesson['l_id'],$likeLessons_l_ids)) display:none; @endif"  l_id="{{$lesson['l_id']}}" class="fa_like_no">
                                                        <i class="fa fa-thumbs-up fa-fw"  aria-hidden="true"></i>
                                                        <span>@if(in_array($lesson['l_id'],$likeLessons_l_ids)) {{$lesson['l_like']}} @else {{$lesson['l_like']+1}} @endif</span>
                                                    </span>
    
                            </div>
    
                            {{--收藏--}}
                            <div class="video_interaction_box_collect" style="margin-right: 3px;">
                                                    <span style="@if(in_array($lesson['l_id'],$collectLessons_l_ids)) display:none; @endif" l_id="{{$lesson['l_id']}}" class="fa_collect">
                                                        <i class="fa fa-heart-o fa-fw " aria-hidden="true"></i>
                                                        <span>@if(in_array($lesson['l_id'],$collectLessons_l_ids)) {{$lesson['l_collect_num']-1}} @else {{$lesson['l_collect_num']}} @endif </span>
                                                    </span>
                                <span style="color: red;@if(!in_array($lesson['l_id'],$collectLessons_l_ids)) display:none; @endif" l_id="{{$lesson['l_id']}}" class="fa_collect_no">
                                                        <i class="fa fa-heart fa-fw" aria-hidden="true"></i>
                                                        <span>@if(in_array($lesson['l_id'],$collectLessons_l_ids)) {{$lesson['l_collect_num']}} @else {{$lesson['l_collect_num']+1}} @endif </span>
                                                    </span>
                            </div>
    
                            {{--浏览--}}
                            <div class="video_interaction_box_click"  style="margin-right: 0;">
                                <i class="fa fa-play-circle-o fa-fw" aria-hidden="true"></i>
                                <span>{{$lesson['l_click']}}</span>
                            </div>
    
                        </div>
    
                        <a href="/lesson/{{$lesson['l_id']}}">
                            <span class="splay" style="opacity: 0; margin-top: 105px;display: none;">开始学习</span>
                        </a>
                    </div>
                </div>
            </div>
        @endforeach
    </div>
    
    <script>
        //课程的点赞操作
        $('.fa_like').click(function () {
            let l_id=$(this).attr('l_id');
            let _this=$(this);
            //console.log(l_id);
            $.post("/like_lesson", {'l_id':l_id,'_token':'{{csrf_token()}}'} ,function (data) {
                console.log(data);
                if(parseInt(data.valid)==1){
                    _this.hide();
                    _this.parent().find('.fa_like_no').show();
                    layer_alert_success(data.message);
                }else{
                    layer_alert_fail(data.message);
                }
            });
        });
        //取消课程点赞操作
        $('.fa_like_no').click(function () {
            let l_id=$(this).attr('l_id');
            let _this=$(this);
            //console.log(l_id);
            $.post("/cancel_like_lesson", {'l_id':l_id,'_token':'{{csrf_token()}}'} ,function (data) {
                console.log(data);
                if(parseInt(data.valid)==1){
                    _this.hide();
                    _this.parent().find('.fa_like').show();
                    layer_alert_success(data.message);
                }else{
                    layer_alert_fail(data.message);
                }
            });
        });
        //课程的收藏操作
        $('.fa_collect').click(function () {
            let l_id=$(this).attr('l_id');
            let _this=$(this);
            //console.log(l_id);
            $.post("/collect_lesson", {'l_id':l_id,'_token':'{{csrf_token()}}'} ,function (data) {
                console.log(data);
                if(parseInt(data.valid)==1){
                    _this.hide();
                    _this.parent().find('.fa_collect_no').show();
                    layer_alert_success(data.message);
                }else{
                    layer_alert_fail(data.message);
                }
            });
        });
        //课程的取消收藏操作
        $('.fa_collect_no').click(function () {
            let l_id=$(this).attr('l_id');
            let _this=$(this);
            //console.log(l_id);
            $.post("/cancel_collect_lesson", {'l_id':l_id,'_token':'{{csrf_token()}}'} ,function (data) {
                console.log(data);
                if(parseInt(data.valid)==1){
                    _this.hide();
                    _this.parent().find('.fa_collect').show();
                    layer_alert_success(data.message);
                }else{
                    layer_alert_fail(data.message);
                }
            });
        });
    </script>

    1、vue如何和jquery配合?

    用vue给元素增加属性,jquery操作元素的时候根据属性来确定状态

    2、为何在元素中的onclick方法要把this传到函数里面去?

    不然默认函数里面的this指的是windows对象:button type="button" onclick="recent_not_do(this)" :question_return_state="question.bq_has_return" class="btn btn-warning recent_not_do"

    3、vue的缺点?

    交互操作反应有点慢,blade模板加上jquery的方式交互要快很多

    4、字符串'false'的值是true还是false?

    是true,所以这样写有问题:$has_no_cache=$question_list_box?'false':'true';

    5、php中round和number_format保留指定小数位数的区别?

    number_format一定会保留指定位的小数,小数位不够会补0
    return number_format(200*100/1000,2);//结果20.00
    return round(200*100/1000,2);//结果20.0

    6、有些css不好实现的东西用js非常好实现?

    转换思维非常重要:怎么简单怎么来

    7、lavarel数据库查找别名操作?

    $question_list=DB::table('user_questions as uq')->whereIn('uq_id', $userQuestions_ids)->select('uq.*')->get();

    8、php中将对象转成数组?

    直接利用json_encode加上json_decode方法即可
    $question_list=json_encode($question_list);
    $question_list=json_decode($question_list,true);

    9、同步和异步?

    同步就是一个做完另外的才能做
    异步就是多个可以同时一起做

    10、页面加载的文件后面带版本是怎么回事?

    其实就是在加载资源的时候给文件加上版本
    require.config({ baseUrl: 'js/',  paths: { jquery: 'lib/jquery-2.1.4',  mCustomScrollbar:'lib/jquery.mousewheel',  },  shim: {
       },  urlArgs: "v=" +  (new Date()).getTime()
    });
    
    应该是js文件外面加
    <script id="main"></script>
    <script type="text/javascript">
    var js = document.getElementById('main');
    js.src = 'main.js?v='+ new Date().getTime();
    </script>

    二、内容在总结中

     
  • 相关阅读:
    iphone开发之iphone解析xml&json1
    php中mb_convert_encoding 和 iconv 的区别
    Xcode开发 字符串用法
    iphone tableView的使用(zz)
    今天你抛弃了ASP.NET了吗?问题篇
    用代码初始化ViewController的View
    xcode 4.3 调试的时候显示汇编,怎么办?
    Show image from SQL image field
    provider: SQL 网络接口, error: 26 定位指定的服务器/实例时出错
    Dymanic Add Section For WebConfig
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11706626.html
Copyright © 2020-2023  润新知