博学谷项目总结,个人总结经验

1.用的的技术

require.js  是用来模块化开发,进行异步请求的
arttemplate.js 模板引擎是用来数据渲染的
jquery.js  是用来进行DOM操作和数据请求的
jquery.cookie.js 是用来储存cookie的值得
bootstrap   它依赖有jquery,如果需要bootstrap.js前面需要引入jquery.js
bootstrap.css  是用来进行样式设置的
bootstrap.js    是用来动态交互的

2.login.html部分用到的技术

使用jquery的设置cookie的值  $.cookie("userInfo", JSON.stringify(res.result));    $.removeCookie("userInfo")删除cookie值    需要下载jquery.cookie.js

页面调转   location.href = "/"; //location.href="index.html"

阻止默认行为  return false(jquery下才可以)

点击获取form的表单信息 $(this).serialize()

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="assets/bootstrap/css/bootstrap.css">
  <link rel="stylesheet" href="css/login.css">
</head>
<body>
  <div class="login-container">
    <h3 class="text-center">博学谷后台管理系统</h3>
    <form class="form-horizontal">
      <div class="form-group">
        <label class="col-sm-2 control-label">用户名</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" placeholder="" name="tc_name" value="前端学院">
        </div>
      </div>
      <div class="form-group">
        <label class="col-sm-2 control-label">密码</label>
        <div class="col-sm-10">
          <input type="password" class="form-control" placeholder="" name="tc_pass" value="123456">
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <button type="submit" class="btn btn-success btn-block btn-lg">登录</button>
        </div>
      </div>
    </form>
  </div>
</body>
<script src="js/lib/jquery-2.1.4.js"></script>
<script src="js/lib/jquery.cookie.js"></script>
<script>
  $("form").on("submit", function () {
    //1、获取输入的表单信息
    var formData = $(this).serialize();
    console.log(formData)
    //2、提交到服务器
    $.ajax({
      type: "post",
      url: "/api/login",
      data: formData,
      success: function (res) { //响应的:response
        //为了实现login.html里面的数据可以再index.html里面进行访问:
        //a、h5本地存储:localStorage/sessionStorage
        //b、cookie:浏览器端的技术,也可以实现:在不跨域的前提下,任何页面都可以访问这些数据
        console.log(res);
        $.cookie("userInfo", JSON.stringify(res.result));

        //c、session:服务器端的技术

        var userInfoStr = $.cookie("userInfo");
        console.log(userInfoStr); //JSON字符换
         location.href = "/"; //location.href="index.html"
      }
    })
    //出发点:减少服务器的压力,将服务器验证变成前端验证
    //      -->前端验证需要获取数据,需要在用户提交表单的时候,才能真正的获取数据,而用户用户提交表单就会触发form标签的submit事件,而submit事件的就会默认跳转页面(刷新页面),而一旦跳转页面数据就丢失了,所以需要阻止该事件的默认行为
    //阻止事件的默认行为-->同步提交表单
    return false;
  })
</script>
</html>

2.  index.html  部分用到的技术点

  使用bootstrap进行首页布局 引入相应的css和js

  引入require.js并与main.js建立联系 data-main里面的“.js”可以省略

  <script src="js/lib/require.js" data-main="main"></script>

  给一个空盒子设置一个div来放切换的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="assets/bootstrap/css/bootstrap.css">
    <link rel="stylesheet" href="assets/datetimepicker/css/bootstrap-datetimepicker.css">
    <link rel="stylesheet" href="assets/uploadify/uploadify.css"/>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
<!--侧边栏-->
<div class="aside">
    <!--个人资料-->
    <div class="profile-container">
        <div class="img-container">
            <img src="" class="img-circle img-responsive">
        </div>
        <h4 class="text-center"></h4>
    </div>
    <!--菜单栏-->
    <div class="list-group">
        <button type="button" class="list-group-item active btn-teacher">讲师管理</button>
        <button type="button" class="list-group-item btn-course">课程管理</button>
        <button type="button" class="list-group-item btn-courseAdd">>>>创建课程</button>
        <button type="button" class="list-group-item btn-course-message">>>>课程基本信息</button>
        <button type="button" class="list-group-item btn-course-time">>>>编辑课时</button>
        <button type="button" class="list-group-item btn-course-category">课程分类</button>
        <button type="button" class="list-group-item btn-chart">图表统计</button>
    </div>
</div>
<!--右侧内容区-->
<div class="content-container">
    <!--顶部菜单栏-->
    <div class="top panel panel-default">
        <div class="panel-body">
            <div class="row">
                <div class="col-md-1">
                    <button type="button" class="btn btn-success" aria-label="Left Align">
                        <span class="glyphicon glyphicon-align-left" aria-hidden="true"></span>
                    </button>
                </div>
                <div class="col-md-1 col-md-offset-8">
                    <a href="#" class="personalCenter">个人中心</a>
                </div>
                <div class="col-md-1">
                    <a href="login.html" class="link-logout">退出</a>
                </div>
            </div>

        </div>
    </div>

    <!--要切换内容的区域-->
    <div class="menu-content-container">

    </div>
</div>
</body>
<script src="js/lib/require.js" data-main="main"></script>
</html>

3.  main.js  部分用到的技术点,它就是个主模块,是个大心脏

  require的配置问题 使用require.config({})来进行配置

  baseUrl    键值对    来设置默认路径

  paths    键值对对象    来设置路径

  shim   键值对对象来  来设置模块依赖

  require(["a.js","b.js"],function(a,b){...})

  当他触发默认事件的时候触发a.js也就是  $(this).a("我是石顺麟") 会跟a.js建立联系并把"我是石顺麟"通过形参传过去了

  a.js 子模块需要设置按需加载的问题  并用define(["c.js","d.js"],function(){ return function(name){出来业务逻辑name="我是石顺麟"} })

  设置ajax的全局默认样式 jquery的方法 $.ajaxSetup(beforeSend:function(){发送ajax等待的业务逻辑},complete:function(){数据请求回来之后的业务逻辑})

  把JSON字符换转化成JSON对象  JSON.parse(userInfoStr)

  实现菜单栏切换功能 通过事件委托为按钮注册事件判断该类名是哪个 用HTML5的 hasclass("demo")方法

  自动触发事件  $(".aside .list-group button.btn-teacher").trigger("click");  trigger()方法

  退出功能 删除cookie值 $.removeCookie("userInfo") 并调转到登录页面 location.href="login.html"

/**
 * 这是注释的内容
 * Author:Wilbert
 *   Date:2017/6/28
 */

require.config({
    baseUrl:"js",//设置默认路径
    paths:{  //设置路径
        jquery:"lib/jquery-2.1.4",
        cookie:"lib/jquery.cookie",
        text:"lib/text",
        arttemplate:"lib/template-web",

        //配置tpls文件夹路径
        tpls:"../tpls",

        bootstrap:"../assets/bootstrap/js/bootstrap",
        datatime:"../assets/datetimepicker/js/bootstrap-datetimepicker",
        //上传控件
        upload:"../assets/uploadify/jquery.uploadify",

        //配置ueditor
        ueConf:"../assets/ueditor/ueditor.config",
        ueAll:"../assets/ueditor/ueditor.all",
        ZeroClipboard:"../assets/ueditor/third-party/zeroclipboard/ZeroClipboard",

        //配置百度图表控件
        echarts:"lib/echarts.min"
    },
    shim:{ //设置依赖模块
        bootstrap:{
            deps:["jquery"] //依赖jQuery
        },
        datatime:{
            deps:["bootstrap"] //依赖bootstrap
        },
        upload:{
            deps:["jquery"]
        }

    }
})

require(["jquery","teacher/list","courseCategory/list","course/list","course/add","course/editMessage","couserTime/list","course/personalCenter","text!tpls/loading.html","char","cookie"],function($,teacherList,courseCategory,courseList,courseAdd,editMessage,coursetime,personalCenter,loadingTpl,chart){
    var $modalloading = $(loadingTpl)

    //设置ajax请求的全局默认样式,所有的ajax请求都可以用的
    $.ajaxSetup( {
        beforeSend:function(){
            //console.log("发送ajax之前");
            //再每次发送ajax之前把前面的模态框删除掉
            //$("#modalloading").remove();
            $modalloading.appendTo("body").modal();
        },
        complete:function(){
            $modalloading.on("hidden.bs.modal",function(){
                $modalloading.remove();
            }).modal("hide");

        }
    })

    //1在cookie中获取保存的数据
    var userInfoStr=$.cookie("userInfo");
     //console.log(userInfoStr);  //JSON字符换

    //如果获取不到cookie,说明没有登录过,跳转到登录页面
    if(!userInfoStr){
        location.href="login.html";
    }

    var userInfo=JSON.parse(userInfoStr); //把JSON字符换转化成JSON对象

     //console.log(userInfo);

    //2、更新用户名和头像
    $(".profile-container .img-container img").attr("src",userInfo.tc_avatar);
    $(".profile-container h4").text(userInfo.tc_name);

    //3、实现菜单栏切换
    $(".aside .list-group").on("click","button",function(){

        //实现菜单背景的切换
        $(this).addClass("active").siblings().removeClass("active");

        //a、讲师管理
        if($(this).hasClass("btn-teacher")){
            teacherList();
        }else if($(this).hasClass("btn-course")){
            //b、课程管理
            courseList();

        }else if($(this).hasClass("btn-course-category")){
            //b、课程分类

            courseCategory();

        }else if($(this).hasClass("btn-chart")){
            //alert("图表统计模块")
            //b、图表统计
            chart();

        }else if($(this).hasClass("btn-courseAdd")){
            //b、创建课程
            courseAdd();
        }else if($(this).hasClass("btn-course-message")){
            //b、课程基本信息
            editMessage();
        }else if($(this).hasClass("btn-course-time")){
            //b、课时管理
           coursetime();
        }
    });

    //5.触发个人中心事件
    $(".panel-body .personalCenter").on("click",function(){
        personalCenter();
    })

    //6.为退出注册事件
    $(".link-logout").on("click",function(){
        //发送ajax请求 使其到登录状态
        $.post("api/logout",{},function(){

            //删除cookie的值
            $.removeCookie("userInfo")
            console.log($.cookie("userInfo"));

            //调转到登录界面
            //location.href="login.html";
        })

    })

    //4、自动触发讲师管理按钮的点击事件
    $(".aside .list-group button.btn-teacher").trigger("click");
})

  

  

    

  

  

时间: 2024-10-17 16:18:53

博学谷项目总结,个人总结经验的相关文章

【慧?回顾】慧谷项目路演——创业项目EasyPM面对投资人的提问

为了更好地服务河南创业者,为我们河南营造更好的创新创业环境,3月16日下午,慧谷特举办“2015中国创业咖啡联盟年会•郑州站-慧谷项目路演”,邀请政府.园区领导以及多位资深投资人.媒体人等作为嘉宾,组织10家创业项目进行公开路演,展示创业项目.对接创业资源. 下午2点半,活动开始.郑州金水科教园区管委会主任孙钢灿.河南外包产业园总经理刘勇志.杨金高科总经理张保柱以及中国创业咖啡联盟第一任秘书长.同道会CEO程川.秉鸿资本华中区总经理张斌.美国亚美迪孵化器中国区合伙人王阳.慧谷咖啡创始人杨晏等多位

微信小程序豆瓣电影项目的改造过程经验分享

在学习微信小程序开发过程中,一部分的难点是前端逻辑的处理,也就是对前端JS的代码编辑:一部分的难点是前端界面的设计展示:本篇随笔基于一个豆瓣电影接口的小程序开源项目进行重新调整,把其中遇到的相关难点和改进的地方进行讨论介绍,希望给大家提供一个参考的思路,本篇随笔是基于前人小程序的项目基础上进行的改进,因此在开篇之前首先对原作者的辛劳致敬及感谢. 1.豆瓣电影接口的小程序项目情况 豆瓣电影接口提供了很多相关的接口给我们使用,豆瓣电影接口的API地址如下所示:https://developers.d

公司做项目的几点经验总结(个人经验)

首先作为一个低级码农,写这篇文章是需要一点勇气的..哈哈哈...毕竟自己也才做了几个小项目而已,没有资格高谈阔论.反正就是希望给一些不知道的人一些思路,知道的活就不用看了.本文是从程序员视角进行分析. 1.项目的注释. 这是一个很大的而且很严重的问题,一般只要公司不做强制性要求的话,至少我们部门,我很少看到能有自觉写注释的人.这就导致了一个问题,如果那个人的方法写得很复杂,或者命名不规范的话,又没有注释,当然雪上加霜了,结果就是,其他人看那个人写的代码,不说看不懂,调不通,至少也会花费大量的时间

iOS开发-项目 知识分享与经验积累(一)

近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更小的3.5英寸就会出现问题,发现下面的按钮不见了,主要原因是输入框太多,导致更个屏幕放不下,如下图(3.5屏幕): 想了下就决定用ScrolleView,ContentSize可以设置大一些,这样在其他屏幕上没有太多的影响,在3.5英寸的屏幕下也可以滑动了;但是在Storybord下添加Scroll

C#做项目时的一些经验分享

1.对于公用的类型定义,要单独抽取出来,放到单独的DLL中. 2.通过大量定义interface接口,来提高模块化程度,不同功能之间通过实现接口来面向接口编程. 3.如果项目中存在很多非常相似,但是又存在一些差异的类,最好的办法是进一步抽象,得到它们的共同基类,将相同点放到基类中实现,然后通过派生类实现差异.使用方根据实际情况决定自己要使用的类. 4.项目中,经常会遇到一些全局范围内有且只有一个实例的类,该怎么办呢?此时,请一定要想起单例模式.定义一个类,该类只开放一个静态方法GetInstan

记一次项目导入报错经验

用eclipse或idea导入项目一直是我的伤心事,总是会报错: 有一次用eclipse导入多个SpringBoot项目,系统运行代码报错,我靠,为什么,另一台机器好好的,为什么到这里就报错了,难道svn版本不一样,拉取的代码也不一样?maven依赖没下载全?这个问题浪费了一天半的时间. 查看报错信息JCE报错,何为JCE?就是JDK自带的加密类报错了导致后面有两个类也跟着报错,因为我安装的JDK版本过低,加密类不足以支撑项目运行,当时JDK版本(JDK1.8_131),只要把local_pol

接口和抽象类在项目中的用处经验

抽象类与接口: 抽象类:一般用于描述一个体系单元,将一组共性内容进行抽取,特点:可以在类中定义抽象内容让子类实现,可以定义非抽象内容让子类直接使用.它里面定义的都是一些体系中的基本内容. 接口:一般用于定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能.

博学谷-数据分析

python熟悉学科的基础 机器学习课程的基础 1.1 介绍 1.2 jupyter和conda 1.3 matplotlib from matplotlib import pyplot as plt x=range(2,26,2) y=[15,13,14,5,17,20,25,26,24,22,15,23] plt.plot(x,y) plt.show() 原文地址:https://www.cnblogs.com/jiang910/p/10443995.html

Android课程设计——博学谷1.0

没错,又是一学期期末时,我又来补课程设计了,hhh. 总体认识 服务器端: 首先在NetBeans中打开服务器端程序: 然后打开Navicat,连接到wlw1db数据库,建立一张自己的表,再添加所要访问的用户信息: 然后再修改服务器程序中连接数据库的常用类——DBUtil中的连接方法getConn(),确保数据库连接成功. 最后运行serverlet中的ListAllUserServlet可以在浏览器中看到所有用户username和password的json串. 手机端: 首先模拟运行之前的An