热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:大事件练习项目分享实现前后端交互

本文由编程笔记#小编为大家整理,主要介绍了大事件--练习项目分享--实现前后端交互相关的知识,希望对你有一定的参考价值。项目介绍:实现的页面效果:
本文由编程笔记#小编为大家整理,主要介绍了大事件--练习项目分享--实现前后端交互相关的知识,希望对你有一定的参考价值。



项目介绍:

实现的页面效果:

前台页面:

技术图片技术图片技术图片

后台管理页面:

技术图片技术图片技术图片

以上的静态页面,通过 html结构 和 CSS样式  实现  而页面的交互由 JS 来实现


练习项目的目标:

1.了解真实项目开发的架构设计



  • (1)前端三层分离的编程思想



  • (2)网络请求层单独处理的编程思想



  • 技术图片

2.培养大家的项目思维能力



  • (1)独立小功能需求分析->页面需求分析->整个项目需求分析



  • (2)熟练运用ajax+模板引擎实现页面业务逻辑功能



  • 技术图片

3.提升大家的项目经验



  • (1)项目技术难点的分析与解决方案



  • (2)各种第三方插件使用



  • 技术图片

回顾ajax发起请求和接收响应

回顾模板引擎实现数据的动态渲染

掌握token实现状态保持的前台页面实现过程

进一步的掌握和体会前台页面的交互,理解前台页面交互的处理流程

进一步的掌握ajax的其它使用方式


 


搭建后台环境:

项目之前需要使用数据可视化软件 naVicat  和 mysql数据库 将以存储的数据导入和服务器的开启  

打开大事件项目文件夹 >> 找到大事件接口文件夹 >> 找到BigEventServers文件夹 >> 找到config 下的文件 index.js 打开 根据文件内容

技术图片

根据以上内容,在Navicat 中新建一个名字叫 ‘bignews‘ 的数据库  >>  然后在BigEventServers文件夹中找到 reset 文件打开 >>  在打开的该目录下打开小黑窗  >>  输入命令 node index.js 出现‘搞定‘两个字即数据导入成功.

打开服务器: 在BigEventServers文件夹目录下 打开小黑窗 输入命令  app.js 运行 出现:  开启成功:  http://localhost:8080   即服务器打开成功.

 


模态框的添加

原因:: 相当于弹出层,可以用于取代alert进行用户提示  


1
2


 

注意点:   模态框的整体结构要直接做 body 的子元素, 如果嵌套在其他HTML结构中会出现模态框无法点击使用


http模块的封装

作用: 使页面的代码更简洁, 便于管理, 不易出错. 页面请求的 url 只需要引入该文件(http.js) 再调用方法即可


1 (function (w) {
2 var baseURL = ‘http://127.0.0.1:8080/api/v1‘
3 w.itcast = {
4 // 定义基准路径,所谓基准路径就是资源url前面那一坨
5 baseURL: baseURL,//基地址
6 user_login: baseURL + ‘/admin/user/login‘,//用户登录
7 user_info: baseURL + ‘/admin/user/info‘,//用户信息
8 user_detail: baseURL + ‘/admin/user/detail‘,//用户详情
9 user_edit: baseURL + ‘/admin/user/edit‘,//用户编辑
10 category_list: baseURL + ‘/admin/category/list‘,//文章类别查询
11 category_add: baseURL + ‘/admin/category/add‘,//文章类别新增
12 category_search: baseURL + ‘/admin/category/search‘,//文章类别搜索
13 category_edit: baseURL + ‘/admin/category/edit‘,//文章类别编辑
14 category_delete: baseURL + ‘/admin/category/delete‘,//文章类别删除
15 article_query: baseURL + ‘/admin/article/query‘,//文章搜索
16 article_publish: baseURL + ‘/admin/article/publish‘,//文章发布
17 article_search: baseURL + ‘/admin/article/search‘,//文章信息查询
18 article_edit: baseURL + ‘/admin/article/edit‘,//文章编辑
19 article_delete: baseURL + ‘/admin/article/delete‘,//文章删除
20 comment_search: baseURL + ‘/admin/comment/search‘,//文章评论列表
21 comment_pass: baseURL + ‘/admin/comment/pass‘,//文章评论通过
22 comment_reject: baseURL + ‘/admin/comment/reject‘,//文章评论不通过
23 comment_delete: baseURL + ‘/admin/comment/delete‘,//文章评论删除
24 }
25 })(window)

 

 


后台登录页面

实现点击登录按钮, 登录到后台首页页面


1 // 实现登陆
2 // 1、用户登录
3 // 请求地址:/admin/user/login
4 // 请求方式:post
5 $(‘.input_sub‘).on(‘click‘, function () {
6 // serialize:获取获取指定表单中拥有name属性的表单元素的value值
7 console.log($(‘.login_form‘).serialize())
8 $.ajax({
9 type: ‘post‘,
10 url: itcast.user_login,
11 data: $(‘.login_form‘).serialize(),
12 dataType: ‘json‘,
13 success: function (res) {
14 console.log(res)
15 $(‘.logininfo‘).text(res.msg)
16 if (res.code == 200) {
17 // 将后台返回的token数据存储到本地
18 localStorage.setItem(‘bignews_token_58‘, res.token)
19 $(‘#myModal‘).modal(‘show‘)
20 // hidden.bs.modal:在当前模态框被隐藏之后触发
21 $(‘#myModal‘).on(‘hidden.bs.modal‘, function (e) {
22 location.href = ‘./index.html‘
23 })
24 } else {
25 // alert(res.msg)
26 $(‘#myModal‘).modal(‘show‘)
27 }
28 }
29 })
30 })
31
32 // 单击模态框中的确定,隐藏模态框
33 $(‘.btnconfirm‘).on(‘click‘, function () {
34 $(‘#myModal‘).modal(‘hide‘)
35 })

 

因为后续的页面的操作都需要权限操作 , 即如果用户登录成功了才可以在后续的页面中使用增删改查的权限 , 那就需要给页面传一个tokan令牌,证明用户已经登录过了,即可继续操作页面,

因为后续的页面有很多请求, 如果一个个去加既麻烦还冗余, 这时候就需要一个全局函数来解决这种  

该函数可以写在页面引入的 jQuery文件 的 最后 不要加在中间或其他地方,容易更改了原代码的结构


1 // 这里添加ajax的全局函数的配置
2 $.ajaxSetup({
3 // 每个请求发送之前都会经过beforeSend,可以在这个回调进行请求头的统一设置
4 beforeSend: function (xhr) {
5 let token = localStorage.getItem(‘bignews_token_58‘)
6 if (token) {
7 xhr.setRequestHeader(‘Authorization‘, token)
8 }
9 },
10 // 添加统一的错误处理
11 error: function (xhr, status, error) {
12 console.log(xhr, status, error)
13 if (error == ‘Forbidden‘) {//用户未登录
14 alert(‘请先登录!‘)
15 window.location.href = ‘./login.html‘;//跳转登陆页面
16 };
17 }
18 })

注意事项:

在前端页面结构中如果按钮的类型为: ‘submit‘ 会有一个默认行为,会影响到后面的操作, 所以将登陆按钮的type属性从submit修改为button

参数获取不到,我们需要人为设置表单元素的name, 因为 serialize() 的方法会获取到表单域中带有name属性的元素的表单值  name值一定要参照后台接口

 


token的本地存储和传递


在登陆成功之后将token存储到本地

后续请求传递token

为了简化操作,使用$.ajaxSetup进行统一的处理



在登陆成功之后将token存储到本地


// 将后台返回的token数据存储到本地
localStorage.setItem(‘bignews_token_58‘, res.token)


 


首页


用户信息的动态渲染

首页主体内容页面的展示

左侧菜单的功能处理

顶部栏的个人中心和退出



用户信息的动态渲染


// 动态渲染用户信息
//
2、获取用户信息
//
请求地址:/admin/user/info
//
请求方式:get
$.ajax({
url: allSite.user_info,
dataType:
‘json‘,
// beforeSend: function (xhr) {
// xhr.setRequestHeader(‘Authorization‘, localStorage.getItem(‘token_58‘))
// },
success: function (res) {
console.log(res);
if (res.code == 200) {
$(
‘.user_info>img‘).attr(‘src‘, res.data.userPic)
$(
‘.user_info>span‘).html(`欢迎  ${res.data.nickname}`)
$(
‘.user_center_link>img‘).attr(‘src‘, res.data.userPic)
}
}
})

 

 


首页主体内容页面的展示


使用iframe浮动框架,也称为页中页

使用方式

1.添加浮动框架,为浮动框架设置name属性

2.设置超链接的target属性的值为iframe的name属性的 值


 







 


左侧菜单的功能


1 //主页左侧导航栏功能实现
2 $(‘.level01‘).on(‘click‘, function () {
3 $(this).addClass(‘active‘).siblings().removeClass(‘active‘)
4
5 if ($(this).next().hasClass(‘level02‘)) {
6 $(this).next().slideToggle()
7 $(this).find(‘b‘).toggleClass(‘rotate0‘)
8 } else {
9 $(‘.level02‘).slideUp()
10 $(‘.level02>li‘).removeClass(‘active‘)
11 }
12 })
13
14 $(‘.level02>li‘).on(‘click‘, function () {
15 $(this).addClass(‘active‘).siblings().removeClass(‘active‘)
16 })

 


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
author-avatar
政庆雅竹8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有