首页
学习
活动
专区
圈层
工具
发布

谷粒学院day5 讲师管理模块的前端实现

: '"http://localhost:8001"', }) 注意到前端的login.js中有两个方法,login()方法和info()方法,分别用于登录和获取登录信息,因此后端也需要开放两个接口。...对应前端页面查看代码可以很容易理清代码功能对应的逻辑。对该页面进行改造。从这里作为路口阅读,可以大致了解下前端框架代码的开发过程,后面小节中具体进行实现。...注意到下面代码对于后端传的数据进行了一层包装,使用===将比较两个数据的值、与类型,而==在js中只判断值。比如’1’与1的值相等,类型不同。...如果想要根据页数获得数据,还要将getList()方法也要进行下改造,下面代码将传入page进行查询,page默认值为1....如下图(添加讲师页面居然有回写数据) 是不是在添加路由时将teacher数据置空就可以解决这个问题啦?试验下。

4.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    datatables使用教程

    各式各样的扩展: Editor, TableTools, FixedColumns …… 丰富多样的option和强大的API 支持国际化 超过2900+个单元测试 免费开源 ( MIT license...进行渲染,前提table的数据源得有,如上面的是HTML页面本来就有一定的数据了,所以可以直接调用函数进行渲染; 但是在大多数情况下,项目开发并不会采用这种做法,而是要结合服务端,采用ajax方式获取数据源...做法有很多,可以ajax异步拿到数据后,进行dom操作,把数据填入table中,在进行datatables.ajax.reload() 这样当然可以,但是代码很乱,难看。...: true,//使用排序 bStateSave: true,//记录cookie paging: true,//是否分页 pagingType: "full_numbers",//除首页、...: true,//使用排序 bStateSave: true,//记录cookie paging: true,//是否分页 pagingType: "full_numbers",//除首页、

    8.9K20

    Activity Result API详解,是时候放弃startActivityForResult了

    我个人的观点是,startActivityForResult()方法并没有什么致命的问题,只是Activity Result API在易用性和接口统一性方面都做得更好。...最后在parseResult()方法中,我们对SecondActivity返回的结果进行解析,并将解析出来的字符串作为输出参数返回。...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。...在onActivityResult()方法当中,我们为了区分这个结果是来自之前的哪个任务的,所以要在这里再对requestCode进行判断。...这是以前使用startActivityForResult()方法时的传统写法。 而Activity Result API是没有地方让你传入requestCode的。

    2.2K30

    Activity Result API详解,是时候放弃startActivityForResult了「建议收藏」

    我个人的观点是,startActivityForResult()方法并没有什么致命的问题,只是Activity Result API在易用性和接口统一性方面都做得更好。...最后在parseResult()方法中,我们对SecondActivity返回的结果进行解析,并将解析出来的字符串作为输出参数返回。...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。...在onActivityResult()方法当中,我们为了区分这个结果是来自之前的哪个任务的,所以要在这里再对requestCode进行判断。...这是以前使用startActivityForResult()方法时的传统写法。 而Activity Result API是没有地方让你传入requestCode的。

    1.5K30

    给接口添加缓存

    两个方法,getList 方法用来获取用户的列表,save 用来添加新的用户。...三、给接口增加缓存 缓存的形式比较多,可以在项目的内存中直接进行缓存,也可以使用专门的缓存服务器进行缓存。...如果缓存的内容少,可以直接在项目的内存中进行缓存,省去了缓存服务器的管理与成本,缓存的内容多则在缓存服务器中进行缓存,方便后续的扩容和进行单独的管理等,并且在项目重启后,缓存的内容不丢。...做好这些准备,我们就可以请求接口的地址了,地址如下: http://localhost:8080/api/user/getList 请求上面的接口后,在 IDEA 的控制台中可以看到接口查询数据库的日志记录...当我们增加一个新的 user 记录时,需要让缓存失效,也就是删除缓存。因为实际的用户列表发生了变化,这个功能由 @CacheEvict 注解为我们完成。

    1.8K40

    基于状态变更的分页查询另辟幽径

    简单使用了jdk自带的调度线程池来代替定时任务,在spring容器将bean初始化完毕,触发任务分配调度,调度的业务逻辑交给另外一个线程封装后实现,任务分配在应用启动5秒后开始触发,每20秒执行一次。...,先触发一次待分配任务的分页查询,然后记录总页数,接着循环分页去查询待分配的任务,每次循环分页中会将查到的任务分配掉。...为了记录调度执行的周期和每次调度分配掉的任务,在每次调度执行开始和结束都打印了日志。 相信屏幕前的你脑海中也大概过了一下代码,好像看起来没有什么问题。那究竟有没有问题呢?...测试&问题发现 基于上述的代码我们先进行一下测试。首先在Task表造了100条状态为2(需要分配)的数据: ?...方案二:不使用总页数做循环查询,使用自增id做增量查询 这个方案需要改造底层逻辑,使用id升序排序,每次循环查询拿上次的最大id做条件,新查询id要大于上一次查询的最大id,此处不再做赘述,有兴趣可以自己实现或者找我私聊

    1.1K20

    VUE跨页面传值的精妙

    vue2官方推荐axios,是一个基于Promise的HTTP请求客户端,不再对vue-resource进行维护和更新。...API,作者也暂没计划在axios添加支持发送跨域请求,所以只能使用第三方库 2.2 ajax传参格式 ajax是jquery封装的一个前端方法,通过请求后台API接口方式,用以局部刷新和动态展示页面。...,子页面请求后台Api关联查询并展示父页面选中记录对应的明细记录。...在父页面定义方法query() const rows为父页面查询列表选中的某行记录 queryView为子页面 params 为定义的传值对象 callback 回调方法 query() {...接口关联查询并展示 params 定义方法中变量,获取从父页面接收的对象中的属性值 this.operat4Data(XXApi.getList, params, null, null); 调用后台api

    4.1K30

    提升微服务测试效率:消费者驱动契约测试

    三、集成测试 测试两个服务(提供者和消费者)之间的交互的传统方法是使用集成测试。这样做的目的是在某些集成环境中同时运行消费者服务和提供者服务,并检查它们是否按预期进行交互。...起初,这似乎不是一个问题,但是随着集成测试的数量开始增加,构建过程变得越来越慢。在微服务体系结构中尤其如此。在每一对交互的微服务之间进行集成测试是不合适的。 集成测试的另一个问题是它们很脆弱。...在到达QA之前,清楚地知道两个服务在开发时是否正确地交互,将为我们节省大量的时间和开销。...接下来,在服务提供者一端,将通过模拟消费者的Mock对Pact文件进行回放,要求服务提供者针对该契约做出正确的响应。通过这样的的过程,完成一次完整的从服务消费者向服务提供者的驱动过程。...服务消费者可以通过运行TEST测试来了解自己能否获得正确的信息,但事实上,这并没有必要,因为只有当服务提供者一方发生服务接口的变更时,才会影响契约的效力,所以正确的做法是,只需要在服务提供者一方来进行对契约的验证测试即可

    1.5K32

    前端提升生产力系列三(vant3 vue3 移动端H5下拉刷新,上拉加载组件的封装)

    | 在日常的移动端开发中,经常会遇到列表的展示,以及数据量变多的情况下还会有上拉和下拉的操作。...,于是花了一点时间,将其进行封装,发现还是节省了很多的时间。...跟原来一模一样 3、主要是准备模拟api请求多了不少代码 4、声明变量和一些定义 封装的理念 1、将尽可能通用的代码,抽离出来,不用再进行复制粘贴的操作 2、修改维护逻辑时只需要修改一个地方即可,无需每个列表都要修改...,在封装的组件中进行统一处理,当然这里就要要求使用组件的接口要统一参数 3、请求数据后要将数据列表和分页数据通过emits进行回传父组件,用于显示列表数据 4、下拉刷新判断仍然存在统一封装 5、上拉加载列表数据判断仍热存在统一封装...封装的过程就是对那些重复性的工作进行提炼,提高代码的复用性,减少代码的拷贝粘贴,这样调用组件后的代码也方便维护和测试工作,相对来说稳定性也更加强劲。

    1.7K10

    后端一次返回过多数据,前端应该如何优化处理?

    最近,我的一位朋友在面试时被问到这个问题。这个问题其实是考察面试者对性能优化的理解,涉及的话题很多。下面我就和大家一起来分析一下这个问题。...通过 setTimeout 进行分页渲染 一个简单的优化方法是对数据进行分页。假设每个页面都有limit记录,那么数据可以分为Math.ceil(total/limit)个页面。...该方法将回调作为要在重绘之前调用的参数。 文档片段 以前,每次创建 div 元素时,都会通过 appendChild 将元素直接插入到页面中。但是 appendChild 是一项昂贵的操作。...每当视口出现空白时,就意味着用户已经滚动到网页底部,这意味着我们需要继续渲染数据。 同时,我们可以使用getBoundingClientRect来判断空白是否在页面底部。...如果你在面试中被问到这个问题,你可以用今天的内容回答这个问题,如果你在工作中遇到这个问题,你应该先揍那个写 API 的人。

    1K30

    SpringBoot中时间格式化的5种方法!

    这个时候我们后端程序员就需要发挥自己的特长了,我们提供的第 1 个时间格式化的方法是使用 SimpleDateFormat 来进行时间格式化,它也是 JDK 8 之前重要的时间格式化方法,它的核心实现代码如下...4.全局时间格式化 以上两种后端格式化的实现都有一个致命的缺点,它们在进行时间格式化的时候,都需要对核心业务类做一定的修改,这就相当为了解决一个问题,又引入了一个新的问题,那有没有简单一点、优雅一点的解决方案呢...这里地势险要,风景秀丽,兼具历史和地方风情,也是伦敦在泰晤士河的东方门户。 ​ 不光是天文学家使用格林尼治时间,就是在新闻报刊上也经常出现这个名词。我们知道各地都有各地的地方时间。...如果对国际上某一重大事情,用地方时间来记录,就会感到复杂不便.而且将来日子一长容易搞错。因此,天文学家就提出一个大家都能接受且又方便的记录方法,那就是以格林尼治的地方时间为标准。 ​...从上述结果可以看出,使用注解的方式也可以实现时间的格式化。它的实现原理和第 4 种时间格式化的实现原理类似,都是在返回数据之前,对相应的字段进行时间格式化的处理。

    5.9K30

    【Spring Cloud Alibaba】(三)OpenFeign扩展点实战 + 源码详解

    扩展点配置入手,然后进行OpenFeign扩展点配置实战,最后对OpenFeign是如何实现的进行了源码解读,内容很详细,Let’s go!...教你一个简单有效的方法: 我使用demo-c发起调用,可以在启动demo-c 启动服务 时,构建 动态代理前 打断点查看Feign.Builder。...日志级别 Feign提供了4种日志级别: 日志级别 简单说明 NONE 默认值,不记录日志 BASIC 记录请求方法、请求URL、响应状态代码、执行时间 HEADERS 在BASIC级别的基础上,记录请求和响应的...header FULL 记录全部日志:请求和响应的header、body和metadata 注意: 若要正常输出日志,需要配置接口包路径的日志级别,我这里是com.tiangang.demo.api,...---- 最后 通过本文,我们对OpenFeign的扩展点配置进行了实战,并对源码进行了详细解读,如果你在项目中使用到了OpenFeign,相信这些扩展功能会让你在项目中使用得心应手。

    2.5K50

    小技巧|使用Vue.js的Mixins复用你的代码

    这里主要来讨论 mixins 如何优化我们的数据列表代码。 如果我们有大量的表格页面,仔细一扒拉你发现非常多的东西都是可以复用的例如分页,表格高度,加载方法, laoding 声明等一大堆的东西。...error) { this.loading = false console.error(error) } }, created () { // 这个生命周期是在使用组件的生命周期之前...from '@/mixins/list' // 引入 import {getList} from '@/api/demo' export default { name: 'mixins-demo'...在list.js中我们可以直接调用组件的方法,比如在分页回调事件中调用组件的 getList()方法,在组件中直接调用 list.js中的代码,如直接访问 this.pageParam。...当组件和 mixins 对象含有同名选项时,这些选项将以恰当的方式混合。比如,数据对象在内部会进行浅合并 (一层属性深度),在和组件的数据发生冲突时以组件数据优先。 你学会了吗?还不快试试。。。

    1K20

    ENS介绍

    例如,如果Alice拥有"alice.eth",她就可以创建"pay.alice.eth"并按需对其进行设置。 ENS部署在以太坊主网络和几个测试网络上。...每个记录类型(以太坊地址、内容的散列等)都定义了一个或多个方法,解析器必须实现这些方法才能提供这类记录。...新的记录类型可以随时通过EIP标准化程序进行定义,因此不需要为了支持它们而对ENS注册表或现有的解析器进行更改。...在使用Namehash进行散列之前,首先需要借助UTS-46标准对域名进行规范化,确保域名中的字母与大小写无关,并禁止使用无效字符。...任何对域名进行散列和解析的操作都必须首先对其进行规范化,以确保所有用户获得ENS的一致性。 有关Namehash和规范化如何工作的详细信息,请参阅有关域名处理[6]的文档。

    2.3K40

    MetaForce佛萨奇开发案例,MetaForce佛萨奇2.0智能合约系统开发流程及源码

    使用C++进行智能合约开发读者对象:本章节主要描述使用C++进行ChainMaker合约编写的方法,主要面向于使用C++进行ChainMaker的合约开发的开发者。6.1....upgrade: 升级合约会自动执行该方法,无需指定方法名。// 在创建本合约时, 调用一次init方法....ChainMaker不允许用户直接调用该方法.WASM_EXPORT void init_contract() { // 安装时的业务逻辑,可为空 }// 在升级本合约时, 对于每一个升级的版本调用一次...合约示例源码展示下文代码框内为一个C++编写的存证合约示例,该合约示例实现以下功能:1、存储文件哈希、文件名称和该交易的ID;2、通过文件哈希查询该条记录。...();}// 在升级本合约时, 对于每一个升级的版本调用一次upgrade方法.

    49610

    如果后端API一次返回10万条数据,前端应该如何处理?

    最近,我的一位朋友在面试时被问到这个问题。这个问题其实是考察面试者对性能优化的理解,涉及的话题很多。下面我就和大家一起来分析一下这个问题。...通过 setTimeout 进行分页渲染 一个简单的优化方法是对数据进行分页。假设每个页面都有limit记录,那么数据可以分为Math.ceil(total/limit)个页面。...该方法将回调作为要在重绘之前调用的参数。 文档片段 以前,每次创建 div 元素时,都会通过 appendChild 将元素直接插入到页面中。但是 appendChild 是一项昂贵的操作。...每当视口出现空白时,就意味着用户已经滚动到网页底部,这意味着我们需要继续渲染数据。 同时,我们可以使用getBoundingClientRect来判断空白是否在页面底部。...如果你在面试中被问到这个问题,你可以用今天的内容回答这个问题,如果你在工作中遇到这个问题,你应该先揍那个写 API 的人。

    1.7K20

    SqlSugar ORM 入门篇2 【查询】 让我们实现零SQL「建议收藏」

    SqlSugar在查询的功能是非常强大的,多表查询、分页查询 、 一对一查询、二级缓存、一对多查、WhenCase等复杂函数、Mapper功能、和拉姆达自定义扩展等,用好了是可以做到真正零SQL的一款...分页查询加排序 简单查询中拉姆达的使用技巧 基本上和EF差不太多 var data3 = StudentDb.GetList(it => it.Name.Contains("a")); // like.../ id in (1,2,3) 我们还支持了SqlFunc.xxx一串方法来给我们使用,如下用法 var data311 = StudentDb.GetList(it => SqlFunc.Between...,Mapper是在查询出结果后进行处理所以任何C#方法都支持 也更强大 var s12 = db.Queryable((st, sc) => st.SchoolId..."null" : it.Name; }).ToList(); 一对多查询的性能可以秒杀其它ORM ,因为生成的SQL只有2条,并且这2条不会多查询一条没用的记录,有幸趣的可以研究一下,其它的都内存处理

    2.4K10
    领券