Ajax学习
原生Ajax
简介
Ajax
Ajax 全称为 Asynchronous JavaScript And XML ,就是异步的 JS 和 XML。
通过 Ajax 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。
Ajax 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。
XML
XML 是可扩展标记语言,被设计用来传输和存储数据。
XML 和 HTML 类似,不同的是 HTML 中都是预定义标签,而 XML 中没有预定义标签,全都是自定义标签,用来表示一些数据。
12345<student> <name>Tom</name> <age>20</age> <gender>男</gender></student>
JSON
JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML,比 XML 更小、更快,更易解析。
1{"student" ...
React Ajax
写在前面
React本身只关注于界面,并不包含发送ajax请求的代码
前端应用需要通过ajax请求与后台进行交互(json数据)
React应用中需要集成第三方ajax库(或自己封装)
常用的ajax请求库
jQuery:比较重,如果需要另外引入不建议使用
axios:轻量级,建议使用
npm i axios
封装XmlHttpRequest对象的ajax
promise风格
可以用在浏览器端和node服务器端
启动server.js服务
server1.js
12345678910111213141516171819202122const express = require('express')const app = express()app.use((request,response,next)=>{ console.log('有人请求服务器1了'); console.log('请求来自于',request.get('Host')); console.log('请 ...
基于脚手架的React应用
初始化脚手架
使用 npx 创建
1npx create-react-app 项目名
使用 npm install 创建
全局安装create-react-app包:
1npm install -g create-react-app
创建脚手架:
1create-react-app 项目名
npm 镜像
执行 create-react-app时,还会自动安装一些包,这个时候,默认使用的是npm,速度较慢,可以替换为国内源。
1234# 换源npm config set registry https://registry.npm.taobao.org# 查看修改的结果npm config get registry
若已经安装cpm,则全局安装 create-react-app 时可以使用 cnpm ,但需要注意的是,在执行 create-react-app my-app时,还会自动安装一些包,这个时候,默认使用的还是npm。
脚手架文件结构
public
favicon.ico
偏爱图标,设置默认图标
index.html
详见注释(英文注释为react自动生成)
1234 ...
JavaScript创建SVG
今天闲鱼有买家问我svg能不能写,给我发来了需求:
一番百度必应之后,咱就试着写写吧。
构思:页面有一个输入框、提交按钮和一个div(用来展示svg),点击按钮后获取输入框的值。
123<input type="text" name="inp" id="inp"><button id="btn">确定</button><div class="box"></div>
获取输入框的值很好办,给按钮加一个onclick监听来得到input的value即可
123456function handleSubmit() { let input = document.getElementById('inp') let value = input.value console.log(value)}document.getElementById('btn').oncl ...
React面向组件编程
React 开发者工具
推荐使用Chrome或Edge浏览器,安装React Developer Tools(Facebook出品)。
安装完成后,访问使用React编写的页面时,图标会高亮(开发环境为红色有debug标识,生产环境为蓝色),同时F12开发者工具中会多出Components和Profiler两个选项卡。
React组件
函数式组件
效果
简单组件:无状态state
代码
1234567// 1.创建函数式组件function Demo() { // 创建组件,函数名首字母须大写 console.log(this) // 此处的this是undefined,因为babel编译后开启了严格模式 return <h2>我是用函数定义的组件(适用于【简单组件】的定义)</h2>}// 2.渲染组件到页面ReactDOM.render(<Demo/>, document.getElementById('test'))
执行ReactDOM.render(<Demo/>, ...
React入门
React 简介
简介
官网
英文官网:React - A JavaScript library for building user interfaces
中文官网:React官方中文文档 - 用于构建用户界面的 JavaScript 库
介绍
用于动态构建用户界面的js库(只关注于视图)
由Facebook开源
特点
声明式编码
组件化编码
React Native 编写原生应用
高效:DOM Diffing算法,最小化页面重绘
Hello React 案例
引入js库
react.development.js:React核心库
react-dom.development.js:React操作DOM的扩展库
babel.min.js:解析JSX转为JS代码的库
完整代码
12345678910111213141516171819202122232425262728293031<!DOCTYPE html><html lang="en"><head> <meta charset=" ...
字符串匹配算法
给定两个字符串A和B,请判断B是否是A的子串。
如果是,返回B在A中第一次出现的位置;
如果不是,返回-1。
什么意思呢?我们来举一个例子:
字符串A: a b b c e f g h
字符串B: b c e
字符串B是A的子串,B第一次在A中出现的位置下标是2,所以返回 2。
字符串A: a b c d e f g h
字符串B: a d e g
字符串B在A中并不存在,所以返回 -1。
为了统一概念,在后文中,我们把字符串A称为主串,把字符串B称为模式串。
BF算法
Brute Force(暴力算法)的缩写。
分析
直接从头开始,把主串和模式串的字符逐个进行匹配,如果发现不匹配,再从主串下一位开始,比较简单粗暴。
第一轮,从主串的第0位开始,把主串和模式串的字符逐个比较:
显然两者并不匹配。
第二轮,把模式串后移一位,从主串的第1位开始,把主串和模式串的字符逐个比较:
主串的第1位字符是b,模式串的第1位字符也是b,两者匹配,继续比较:
主串的第2位字符是b,模式串的第2位字符是c,两者并不匹配。
第三轮,把模式串再次后移一位,从主串的第2位开始,把主串和模式串 ...
Web开发技术课程设计
提醒1:本篇所有内容(源代码、使用图片、配置文件)已开源至Gitee,开源地址
提醒2:本篇内容所提到的项目为东北林业大学软件工程专业课程《Web开发技术》的课程设计,可供参考
提醒3:本项目未使用任何框架,基于IDEA和JDK11编写,连接MySQL数据库,适合初学者参考,但因页面风格等问题,不建议直接使用
提醒4:运行时请记得修改Maven仓库地址、配置文件中的数据库连接信息以及某些细节数据等
提醒5:推荐您参考本项目时的查看以上提醒作为食用方法
Project课程设计要求
项目要求
基于HTML/CSS/JS/Servlet/JDBC等技术完成以下设计内容
允许并鼓励使用Bootstrap/easy-ui/flat-ui等UI框架,及轮播/动画/图表/全屏滚动等等插件
允许使用vue/react/springboot等技术,但需部署在学生个人服务器,提供访问网址
本设计占总成绩40%,按功能完成设计状况评分
分组:每人1组,独立完成
截至时间:15周(具体日期待定)
提交/部署方式:以war包上传到指定系统,项目统一部署在华为云服务器
部署环境:Docker Tomcat9+My ...
数据结构课程设计
提醒1:本篇所有内容已开源至gitee,项目地址:
提醒2:本篇篇幅极长,请点击右侧目录查看
提醒3:提醒1和提醒2是本篇课设的食用方法
一 线性结构 链表
Joseph环
任务:编号是1,2,…,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,则正确的输出是什么?
要求:输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。
输出形式:建立一个输出函数,将正确的输出序列
提供的数据结构:
123456typedef struct Node{ int data; int password; struct Node *n ...
Kotlin安卓开发 - Bottom Navigation Activity那些事
我们日常使用的软件多数有底部导航栏,通过搜索我们也可以看到如LinearLayout+TextView、TabLayout+ViewPager 、RadioGroup+RadioButton等多种实现方式。同样,Android Studio也内置了Bottom Navigation Activity以方便实现底部导航栏这一效果,本文主要说明这种方法出现的页面重置问题及解决办法。
开始使用
创建项目
首先我们点击New->Project,选择Bottom Navigation Activity,创建一个新的导航栏项目。名称取为BNATest,包名为com.morales.bnatest,语言选择Kotlin。
创建好的项目是可以直接运行的,我们运行后就得到如下效果图:
结构分析
将项目结构模式切换至Project,便可看到如上图所示的结构,这里已经将重要的内容全部展开。我们可以看到默认内置了MainActivity和三个Fragment,分别在layout中对应。至于导航栏的实现,则是依靠menu和navigation目录下的内容。
文件分析
MainAcitvity.k ...