前端框架技术

一 网页技术HTML

1.概念

HTML(Hyper Text Markup Language)超文本标记语言,是做网站页面的最基础的开发语言,由Web的发明者 Tim Berners-Lee和同事 Daniel W. Connolly于1990年创立的一种标记语言,它是标准通用化标记语言SGML的应用。由W3C组织发展壮大。它的功能很弱,连脚本语言都算不上,类比java这种强语言,那就是一个天上一个地下,但它小而美,网站开发它却是霸主。

2.结构

1.文档声明,用来声明HTML文档所遵循的HTML规范。

2.头部分<head>,用来存放HTML文档的基本属性信息,比如网页标题、编码格式,这部分内容会被网页优先加载。

<title>编辑网页的标题<title>

3.体部分<body>,用来存放网页要显示的数据。

4.声明网页标题

用来通知浏览器使用哪个编码来打开HTML文档,打开的方式一定要和保存文件时使用的编码一致,避免出现中文乱码问题。

2.1常用嵌套关系:

1.<HTML>

   <head></head>

   <body></body>

</HTML>

2.<table>

    <tr>

       <td></td>

</tr>

</table>

3.<form>

    <input/>

    <select>

        <option>下拉选项</option>  配合select使用

    </select>

</form>

4. <ol>或<ul>

     <li>  只能在<ol>或<ul>中使用

</li>

</ol>或</ul>

3.语法

3.1HTML标签是什么

HTML是一门标记语言,标签分为开始标签和结束标签,如&lt;a&gt;&lt;/a&gt;。

如果开始和结束中间没有内容,可以合并成一个自闭标签

3.2HTML属性

HTML标签都可以具有属性,属性包括属性名和属性值,如果有多个属性,要以空格隔开。属性的值要用单引号或者双引号引起来

如:<a href="" target="" name="" id="">  </a>

属性声明格式:<标签名 属性名=属性值 ...属性名N=属性值N>标签内容</>

属性的特性:

属性必须要声明在标签的开始标签的<>内,不能独立存在

一个标签可以声明多个属性,属性与属性之间必须使用空格隔开。

属性的值可以使用双引号或单引号隔开。

3.3注释:

特性:不会被浏览器解析的信息。

作用: 为代码添加解释信息

注释暂时不需要执行的代码。

3.4空格和换行:

换行:<br/>

空格:

英文空格:&nbsp;

中文空格:&emsp;

3.5各种标签

<br/>自闭换行符

<h1> 标题标签 独占一行 共6级标签

<ul> 声明范围内是无序列表unorder list 独占一行

<ol> 声明范围内是有序列表order list 独占一行

<li>:  与<ul>  <ol>搭配使用 每个标签代表一行

<img  src="图片路径"  width="600px"  height="400px " />

图片标签,可以设置成自闭标签 

<a>:跳转到其它网页或在同一网页的其它部分:

<a  href="http://www.baidu.com"  target="_blank"> 百度一下 </a>

超链接标签 a 属性名=属性值  属性名固定为href(点击)  属性值为链接目标路径  target="_blank" 跳转目标为新窗口,文字可替换为图片等其他。

<a name="top">我是顶部</a>  <a href="#top">我是顶部</a>

锚定,回到顶部  一对a name角标和一对a href角标构成

< input type=" ">:  

双引号内属性值代表 框的特性,可以有

登录按钮:

           <input type="button" value="保存" /><br />

           登录按钮:

           <button> 登录</button><br /> <!-- button只是个按钮没有提交功能,提交功能需要用submit-->

           提交按钮:

           <input type="submit" value="注册" /><br /> <!-- 默认框名为提交 ,通过value="注册" 覆盖默认名-->

           提交按钮:

           <button type="submit" /> 提交</button>          

           选择框:

           <input type="checkbox" />

           选择颜色框:

           <input type="color" />

           年月日框:

           <input type="date" value=""/>

           输入时间框:

           <input type="datetime" value=""/>

           选择本地时间框:

           <input type="datetime-local"/>

           邮箱:

           <input type="email" />

           传文件:

           <input type="file" />

           隐藏框:

           <input type="hidden" />

           图片框:

           <input type="image" />

           选择到月:

           <input type="month" />

           输入数字的框:

           <input type="number" />

           输入密码的框:

           <input type="password" />

           单选框:

           <input type="radio" />:<input type="radio" name="sex" value="1"/>男 

                                                          <input type="radio" name="sex" value="0"/>女

                         各个单选框中name属性值一样才能进行单选。

           进度条:

           <input type="range" />

           重置框:

           <input type="reset" />

           查找框:

           <input type="search" />

           输入电话框:

           <input type="tel" />

           文本框:

           <input type="text" />

           选择时间框(小时:分钟):

           <input type="time" />

           链接框:

           <input type="url" value="http://tv.cctv.com/cctv3" />

          选择第几周框:

           <input type="week" />

<table >

表格标签一对table为一个表格,格式为

       <table>

<th> 表头名</th>

  <tr>

<td align="center">: align属性代表位置 可选择居中

  <textarea>请输入描述信息 </textarea>:一对<textarea>为文本域,域可手动调整大小

  <select>:获取标签,与<option>搭配使用,<option>内为下拉菜单内容

<option>--请选择--</option>

<option>--北京--</option>

<option>--上海--</option>

<option>--广州--</option>

</select>

</td>

</tr>

</table>

            一对tr为一行,一对td为一列  一对th为一列表头,角标内可以设置属性border="2px" 边框等于2像素  width="800px" 宽800像素  bgcolor背景色  bordercolor边框色   cellspacing="1px" 单元格间距。

       在行列角标内设置: rowspan  合并行        colspan 合并列

<form>

带form标签的可以提交数据给java处理,

要使用submit作为提交按钮,

                   提交的数据要使用name指定的变量接收值。

<iframe>标签:

作用:实现画中画功能

重要属性:src:url

用于指定嵌套在该标签内部的网页的url.

<div>:

     块级元素,各个标签内容独占一行,包裹大量文字, 行间距小

<p>:

     块级元素,各个标签内容独占一行,包裹大量文字,代表段落,行间距比<div>更大

<span>:

     行级元素,各个标签内容在一行,包裹大量文字

<audio  controls =”contrlis”> : 向网页中添加音频

controls属性:添加控件。

    <source  src=”音频链接”>

    </source>

</audio>

    

<video  controls =”contrlis”>:向网页中添加视频

controls属性:添加控件。

     <source  src=”视频链接”>

     </source>

</video>

      

3.6 html标签分类

 3.6.1块级标签:

表现形式:标签独占一行,可指定宽、高。

特性:能够识别宽高

margin和padding的上下左右均对其有效

可以自动换行

多个块状元素标签写在一起,默认排列方式为从上至下

可以使用margin:0 auto居中对齐

常用的块状元素有:

<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote>、<form>

3.6.2内联(行级)标签:

表现形式:标签在一行内,宽度与高度由内容决定,只有在内容超过HTML的宽度时,才会换行。

特性:无法设置宽高

margin上下无效,只有左右有效果,padding都有效果,会撑大空间;box-sizing:border-box;无效,因为该属性针对盒模型。

不会自动换行

常用的内联元素有:

<a>、<span>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>

3.6.3内联块状标签(inline-block):

表现形式:就是同时具备内联元素、块状元素的特点,代码display:inline-block就是将元素设置为内联块状元素。(css2.1新增),<img>、<input>标签就是这种内联块状标签。

特性:

不会自动换行

能够设置宽高

默认排列方式为从左到右

以使用text-align:center使内容相对于父盒子水平居中对齐,例如img标签,可以使用text-align:center,相对父盒子居中对齐、margin:0 auto无效

水平排列,但所有元素默认会有1个空格的间隙,因为元素之间在html中书写有回车换行,浏览器解析会将其解析成一个空格。

常用的内联块状元素有:<img>、<input>

HTML标签类型是可以转换的:

display:inline;转换为行内元素

display:linline-block;转换为行内块元素

display:block;转换为块级元素

3.7<form>提交数据的两种方式:get、post

get:被拼接在地址栏,方便看,但不安全,且最多2000个字符。

post:不方便看,但是安全

method属性:用来指定数据的提交方式,默认是get

method修改:<form  method=”post”>

action 属性:用来指定数据提交给哪个程序。

action修改:<form  action =”目标程序ip地址+端口号+ Mapping()中的规则>

        

4. 前端学习网站:

   www.w3school.com.cn、www.runoob.com

5.创建网页的思路

5.1 构思页面

5.1.1 页面布局

登录/注册

用户界面

详情页面

后台页面 

二 网页技术CSS技术

1.什么是CSS

CSS全称叫做层叠样式表stylesheet,是用来修饰HTML网页的一门技术,增强网页的展示能力。

2.为什么使用CSS:

主要是使用CSS属性来实现,最终可以将css代码和HTML网页代码进行分离,也可以提高CSS代码的复用性,更改html属性时直接调用CSS即可

3.怎么用

3.1 语法:

        3.1.1 css代码位置:

  1. 行内用法: <标签名 style="Css代码">   只作用于本标签
  2. 内部用法:可置于<head><body>

                    <style>

                                        /*CSS全局语法1:标签选择器*/

                                              div{  text-align: center;  } 选中所有div添加属性

                              h1{  text-align: center;  }  选中所有h1添加属性

                       /* CSS全局语法2:class选择器*/

          p角标中标记class属性:

<p class=”a”>

                           .a{  text-align: center; }选中所有class=”a” 值添加属性

          p角标中标记class属性:

<p class=”a  b”> 

.b{  text-align: center;  } 选中所有class=”b”值添加属性

/*CSS全局语法3:ID选择器*/

根据ID属性的值选中元素,要求ID的值不能相同,优先级最高,效率最高。

步骤:给元素添加ID属性然后在<style>中通过#值设属性。

#a{  text-align: center;  } 选中所有id=”a” 值添加属性

/*CSS全局语法4:分组选择器*/

.a,.b,#a {  text-align: center;  }

/*CSS全局语法5:属性选择器*/

标签名[ 属性名 ]{   font-size: 30px;   }

标签名[属性条件]{   font-size: 30px;background-color: aqua;    opacity: 0.1; }  设置透明度为0.1

标签名[属性条件]:hover{ font-size: 30px;background-color: aqua;    opacity: 1; 设置鼠标放置后透明度为1

</style> 

  1. 外部用法 把CSS代码和html代码分离,在Html中引入CSS文件,引入样式:

<head>

<link rel="stylesheet" href="小票.css"/>      

</head>

class属性:<p class=”a  b  c”>

        3.1.2要求:  css代码不可出现中文

        3.1.3选择器:标签名

{属性名1:属性值1:;属性名2:属性值2:....}

4.盒子模型

指的是将HTML中所有元素都看成一个盒子,盒子与盒子之间的距离,包括盒子的边框以及盒子边框和盒子内容的距离都可以设置。

 

4.1margin(外边距)

盒子间的距离,可以设置上下左右边距

<input type="text" style="margin-left: 105px;"/> 设置左边距为105像素

4.2 border(边框)

盒子的边框,可以设置宽度,颜色,样式

4.3 padding(内边距)

盒子里的内容和盒子的边框的距离,可以设置左边距,右,上,下

4.4 内容

可以设置 width 和 height

三.网页技术JavaScript

1. JS概述

1.1什么是JS:动态网页

JS是一门 基于对象事件驱动脚本语言,通常用来提高网页与用户的交互性。

1.1.1JavaScript web 前端开发者必学的三种语言之一:

HTML 定义网页的内容 H5

CSS 规定网页的布局 CSS3

JavaScript 实现网站的交互 ES6

1.1.2来历

      因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。实际上Java和JavaScript根本没有关系,java是强语言几乎无所不能,而javascript是脚本语言,只局限于浏览器。

1.1.3现状

       JavaScript遵循ECMA国际组织颁布的ECMAScript标准。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,2015年6月17日,ECMA国际组织发布了ECMAScript 的第六版,简称为ES6,它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。很多js相关技术都遵循这个标准,如目前最受欢迎的Vue

1.2 名词解释   

基于对象:它不仅可以创建对象,也能使用现有的对象。JS没有类的概念,也没有编译的过程。是一边解释一边执行。

事件驱动:在JS中,大部分情况下都是通过事件触发驱动函数执行的,从而实现特定的功能。(比如点击div将内容替换为时间、当鼠标滑过元素,元素就有翻转的动态。)

脚本语言:在网络前端开发环境下,用于嵌入在客户端浏览器中的一段小程序。

1.3 特点和优势

1.3.1特点:

 (1)JS是一门直译式的语言,直接执行的就是源代码.

是一边解释一边执行,没有编译的过程(不像Java需要提前编译为class文件再运行).

 (2)JS是一门弱类型的语言,没有严格的数据类型.

(3) JS跟java一样严格区分大小写

1.3.2优势:

 (1)良好的交互性

 (2)一定的安全性(JS被强制的要求,不能访问浏览器以外的东西,只能访问浏览器和浏览器内部的资源)

 (3)跨平台性(Java语言具有跨平台性,是因为有虚拟机)

只要有浏览器的地方都能执行JS

2.怎么用

2.1位置

与CSS一样有行内、内部、外部,CSS通过<style>设置属性,JS通过<script>编制函数

行内时通过onclick等调用预编译或自编译的函数。

<script>

function 方法名(参数){ 方法体 }  //JS自编译方法结构

</script>

2.2基本数据类型

2.2.1 数据类型:

 number:number类型可以直接赋值不需要像JAVA指定short,int,long一样指定number

 string:双引号,单引号引起来的都是string类型

boolean:ture,false

null: 意思是无值

undefined: 意思是未声明的

2.2.2运算符

算术运算符: +,-,*,/,%,++,–

赋值运算符: =,+=,-=,*=,/=,%=

比较运算符: ==,!=, =,!, > ,< ,>=,<=,===(比较值和类型)

位运算符: & , |

逻辑运算符: &&,||

前置逻辑运算符: ! (not)

三元运算符:     a?b :c

2.3变量

2.3.1变量必须以字母开头。

2.3.2变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)。

2.3.3变量名称对大小写敏感(y 和 Y 是不同的变量)。

2.2.4声明变量关键字

var:可以声明任何数据,且没有作用域,原因是底层做了提升,声明后自动提升到顶层

    方法内,出了方法不可用。

let:区别于var。let是有作用域的,出了声明的代码块就不可用

const:与final类似声明常量

2.4数组

1、var arr1 = new Array();//声明一个空数组

2、var arr2 = new Array("abc", "hello", true);//声明一个具有初始值的数组

alert(arr2.length);//3

3、var arr4 = [];//声明一个空数组

alert(arr4.length);//0

arr4 = ["abc", "hello", true];//声明一个具有初始值的数组

alert(arr4);

(1)  JS数组中可以存放任意的数据类型

(2)  JS中的数组长度随时可以被改变

2.5函数

document.write("<h1>这是一个标题</h1>"); //直接输出字符流到网页,提示尽量不要用

console.log(typeof  a+b); //console.log()输出到网页控制台 ,typeof判断后面是什么类型

var n=prompt('请输入分数'); //获取网页弹窗输入的内容,且内容都是字符串类型。

document.write()                      //动态向页面写入内容

document.getElementById(id)               //获得指定id值的元素

document.getElementsByName(name) //获得指定Name值的元素

var n=document.getElementById('n1').value*1; // 搜索n1,因为从<input id=’n1’> 中获取的值是String类型,所以需要强转为数字,方法1:(number)value 方法2:value*1 

οnclick="num()"//通过onclick(点击) 获取num()

alert( ‘1’ ) // 弹窗输出1

οnmοuseenter="alert('来了')"//通过鼠标滑入 获取 弹窗alert(‘来了’)

2.6自定义函数

2.6.1 作用:具有功能的代码块, 可以反复调用

2.6.2声明关键词 function

定义函数方式一:function 函数名称([参数列表]){ 函数体 }

定义函数方式二:var函数名称=new function([参数列表]){ 函数体 }

定义函数方式三:匿名函数(自调用):function( 参数 ){ 函数体 }

调用方式:(function(name,addr){statement})("刘德华","中国香港");

定义函数方式四:Lambda表达式:(参数)=>{函数体}

$(()=>{
                $("#sidebar-menu").on("click","#menuPerson,#menuAdmini",changeIcon)
               let elem = document.getElementById("menuAdmini");
               $("#sidebar-menu").data("elem", elem);
               $("#loadInfo").click(loadEmpInfo)
    $("#contentMain").html("<div style='text-align: center'><h2>公司介绍</h2></div>")
                         })

2.7调用:  

调用内部:函数名称([参数列表]);

     调用外部js<script src="测试json.js"></script>    

2.8内置对象

window.document网页文本框:

-获取对象: window.document

--调用方法:

                   getElementById("元素的id的属性的值")--返回1个元素

                   getElementsByName("元素的name属性的值")--返回多个元素(标签名)(用数组)

                   getElementsByClassName("元素的class属性的值")--返回多个元素(用数组)

                   getElementsByTagName("元素的标签名的值")--返回多个元素(用数组)

write()--向文档写 HTML 表达式 或 JavaScript 代码

title--返回网页的标题

id--设置或返回元素的id

innerHTML--设置或返回元素(网页)的内容

innerText--设置或返回元素(网页)的内容

window.alert('100'); //弹出框

window.confirm('确认框'); //确认框

window.prompt('输入框'); //输入框

2.9自定义对象

(1)方式一:

声明对象:function Person(){}

创建对象:var p1 = new Person();

设置属性:p1.name = "张飞"; p1.age = 18;

设置方法(与第二种定义函数一样):p1.run = function(){ alert(this.name+" : "+this.age); }

访问p1对象:

( 2)方式二:

创建对象同时声明了对象,可以同时设置属性和方法,属性方法间用逗号隔开。调用同方法一相同。

var p2 ={

“pname” : "赵云",

“page” :19,

“psay”:function( ){ console.log ( this.pname+this.page ) }

 }

2.10 DOM

通过js操作DOM对象实现对html页面的操作.

DOM(Document Object Model)文档对象模型为JS操作html文档所提供的一套API,通过这套API可以很方便的对html元素进行访问及增删改查操作。

window.document网页文本框对象

2.11 JSON

存储和交换文本信息的语法,将JS、JSON 相互转换,本质上就是一个字符串。

给服务器(后端)发送数据:  JS对象=> JSON字符串          JSON.stringify( Js对象)

接受服务器(后端)的数据:  JSON字符串=>JS对象            JSON.parse("json字符串")

四.网页技术Vue 框架

1. 概念

Vue是一个用于构建用户界面的渐进式 SPA ( Single-Page Applications )**单一页面框架。与其它庞大而单一框架不同的是,Vue从一开始就被设计为按需搭建,封装了JS的功能,提供了一套由适用于JS开发的API,需要遵守JS的语法。

渐进式:

就是我们可以由浅入深,由简单到复杂的方式使用vue.js进行开发。比如:我们可以在html文档中引入vue.js完成简单的前端页面的开发。同时,还可以使用vue.js特有的单文件组件和路由等复杂功能,实现当下流行的单页富应用的前端项目。

可以只使用核心vue.js

可以只使用核心vue.js + components组件

可以只使用核心vue.js + components组件 + router路由

可以只使用核心vue.js + components组件 + router路由 + vuex状态管理

构建大型vue项目:npm(包依赖) + webpack(打包、压缩、合并等)

2. MVVM框架

 

2.1 解释:

将vue自有或通过特有机制获取的数据,通过vue特有机制传递给页面展示。

M:数据层,代表大数据

V:视图层

VM:提供渲染,不用再手动刷新渲染,通过虚拟DOM把后台内存数据实时传给页面

3.怎么用

3.1 调用:

方式一:引入本地下载好的vue.js文件

vue.js粘贴至目录下,vue框架本身是由js语言编写而成,所以引入方式为JS语言引入方式: <script src="vue.js"></script>                  

方式二:从cdn上加载vue.js

不需要预先下载拷贝vue.js文档,但是运行效率差

3.2 vue入门案例

 

3.3基础语法

3.3.1  viewModel 对象区

     elelement): 可以是单一id属性“#app 可以是多个class属性“.app

     data:方式一:data : 数据区对象名

           方式二:data:{ 数据区对象名

数据属性名1:属性值

数据属性名1:属性值

 对象名:{

数据属性名3:属性值

数据属性名4:属性值

}}

           方式三:data(){ return{数据属性名:属性值} }

3.3.2 Model数据区(可直接在对象区声明数据)

         a : { 数据  }

3.3.3 view展示区

         通过插值表达式将数据展现在页面

3.3.1运算符 operator

     <p> 加法:{{2+3}} </p>

          <p> 减法:{{2-3}} </p>

          <p> 乘法:{{2*3}} </p>

          <p> 除法:{{3/2}} </p>

          <p> 取余:{{10%2}} </p>

          <p> 三元表达式: {{age>10?'yes':'no'}}</p>

         字符串操作:  <p> {{str}} {{str.length}} {{str.concat(1000)}} {{str.substr(3)}}  </p>

3.4高级用法:v-命令

3.4.1 v-model :

           双向绑定,修改一方同时修改相同的另一方,达到数据同时更新。

3.4.2 v-on:

          某种操作触发事件,可缩写为@

3.4.3 v-if:

          将根据表达式的值( true false )来决定是否插入 p 元素,满足条件加载,不满足不加载,逻辑同JAVA

3.4.4 v-show

          将根据表达式的值( true false )来决定是否插入 p 元素,无论满不满足都加载,只是如果不满足条件则被隐藏不运行。

3.4.5 v-for:

          循环语句,遍历数组,V-for : “数据 in 数组,或V-for : “数据,下标 in 数组

3.4.6 v-cloak:

          使用css隐藏插值表达式,v-cloak属性的标签内的插值表达式都将被隐藏,v-cloak CSS中设置为。

<styal>

 [v-cloak]{

         display: none;

}

</styal>

3.4.7 v-bind: 

属性的值是变量而不是字符串时,通过v-bind进行标识,如 : href 冒号开头(省略了v-bind)就说明后面跟的href是变量。

3.5 Vue组件

3.5.1概述

组件(Component)是 Vue.js 最强大的功能之一。

组件可以扩展 HTML 元素,封装可重用的代码。

组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

可创建一个页面。

3.5.2 使用

注册一个全局组件(所有实例都能用)Vue.component(组件或标签名, 配置选项)

<script>

 Vue.component( 组件名, {  template: 配置的选项(组件要展示的功能或内容)  })  </script>

注册一个局部组件(只能本new Vue实例范围能用,一个对象可创建多个组件)   

new Vue({

                   el:'#app',

                   components:{

                            starter1:{  //组件名1

                                     template:'组件要展示的功能或内容 '

                                               }

                            starter2:{  //组件名2

                                     template:'组件要展示的功能或内容 '

                                               }

                                     }

                            })

调用组件:<组件名> </组件名>

3.6 Vue的Ajax—>AXIOS

3.6.1 原有AJAX概述

Ajax Asynchronous Javascript And XML( 异步的 )

Ajax并不是一种新的编程语言,而是多种技术的综合应用

Ajax 客户端 的技术,它可以实现 局部刷新 网页

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

3.6.2原有AJAX原理

1AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

2ajax 根据httphttps协议将js对象转成json串传给后端。

3.后端发送json串使用  对象可以转化为json@responseBody

  后端接收json串使用  json串可以转为对象@requestBody

4. ajaxcontentType:默认为application/x-www-form-urlencoded,这时发送post/put请求时,不需要使用@RequestBody注解描述形参

5. axioscontentType: 默认为application/json,因此必须使用@RequestBody注解描述形参。

3.6.3 AXIOS

1Vue中封装了ajax并增强了它,在异步并发处理优于原生ajax。称为:axiosajax input output system

2、使用步骤: 要使用一个单独的js文件,注意导入顺序

        先导入     <script src="vue.js"></script>

再导入     <script src="axios.min.js"></script> min的为完整版。

使用后端程序资源(查询:get方法)最好把@requstmapping换成@getmapping

       1. get简单使用:

 axios.get("资源的url ","参数信息").then(res=>{console.log(res.data);})

                  本处resget到的数据为其命的名,=> 后面对数据进行操作。

         

      2.根据ID动态查询:id需要拼接到url后面

let id=1

       let url2="http://localhost:8080/findUserById?id="+id

       axios.get(url2).then(function(promise){console.log(promise.data)})

      3.传递的参数是个对象(多参数查询) delete请求与之一致

let user3 ={age:18,sex:""} //封装对象,要传的参数

     let url3="http://localhost:8080/findUserByAS" //url地址

     axios.get (   url3  ,  {   params:user3  }  )

     .then(function(promise){console.log(promise.data)})

      4. 传递的参数是个对象

http协议是支持GET请求是带请求体的,后端也是可以接受GET请求中的请求体,但是web浏览器会限制GET请求不携带请求体。

 2 post简单使用:

发送资源给后端(新增:post方法):后端接受参数使用注解@postmapping

post传递的参数是个对象(多参数查询)   put请求与之一致

let user3 ={age:18,sex:""} //封装对象,要传的参数

     let url3="http://localhost:8080/findUserByAS" //url地址

     axios.get (   url3  ,  user3  ) 不用{  params:  }

     .then(function(promise){console.log(promise.data)})

3delete简单使用:

发送资源给后端(删除:delete方法):后端接受参数使用注解@deletemapping

4put简单使用:

发送资源给后端(更新改:put方法):后端接受参数使用注解@putmapping

5map参数

后端接受map参数前端需要用put请求,后端使用put接收

public Result testget(@RequestBody Map map) { }

SprinMVC接收参数

 @RestController @RequestMapping

3.6.4 AXIOS作用

axios作用发起请求(form请求有11种,常用4种,post\delete\put\ get

对应增删改查),接受请求

请求:

1.常规方式:/user?key=value,key2=value2

2.post/put方式: data: js对象  后端使用@ RequestBody接收

3.restful风格:/url/arg1/arg2使用对象接受,每个参数,接收加 @PathVariable

3.6.5 跨域问题

浏览器解析ajax时,要求浏览器的网址,与ajax请求的网址必须满足三要素,如果有一项不满足则为跨域访问

1.协议相同

2.域名相同

3.端口号相同:http协议默认80https协议默认443,所以不写也满足端口号相同

3.6.6跨域问题解决:

第一种:前端使用vue框架时修改vue.config.js配置文件信息:是对vue本身的配置

module.exports = {

  lintOnSave: false,

  devServer: {

    proxy: {

      '/api': { //*通过本url代理

        target: 'http://127.0.0.1:8010', // 后端的地址

        ws: true,    / / webSocket协议:本协议常用于聊天工具

        changeOrigin: true,   // 允许跨域请求

        pathRewrite: {      // 路径重写

         '^/api':   '/'

                   }

           }

       }

    }

}

第二种:后端加注解

      Controller类上加上@CrossOrigin

3.7 Vue路由router

接受浏览器的请求,根据不同的请求的方式找到匹配的组件(网页),页面跳转

3.7.1 路由功能导入

<script src=" vue-router.js"></script>

3.7.2路由功能创建过程

//1,定义组件

let home = {      template:"<h3>这是主页</h3>"  }

let help = {        template:"<h3>这是帮助页</h3>"  }

//2,创建路由的实例VueRouter,  routes指定每个路由映射的一个组件

let router =new VueRouter({ routes: [

                                               {path:"/home 链接路径",component: 组件名home},

                                               {path:"/help链接路径",component: 组件名help}

                                      ] })

//3,通过router注入路由,从而让整个应用都有路由功能

new Vue({   el:"#app" ,

                                     // router:router  健值相同可简写为router

                            router     })

3.7.3 路由功能使用

<div id="app">

                            <!-- 将被解析成a标签,还有href属性 -->

                            <router-link to="/home">主页</router-link>

                            <router-link to="/help">帮助页</router-link>

                            <!-- 路由出口,匹配成功后,在这里展示 -->

                            <router-view></router-view>

                   </div>

3.7.4 路由三要素

    路由配置:路由的创建过程

    目标组件:路由要跳转的页面

    路由出口:<router-view></router-view>展示的位置

3.7.5 http 请求三要素

请求方式:有11种,常用4种,get\post\put\delete

请求的url:统一资源定位器,它是WWW的统一资源定位标志,就是指网络地址。

请求时携带的参数:

4. Vue的生命周期

页面创建时,页面加载时,页面更新时,页面销毁时四个过程,每个过程都会触发一些方法(生命周期钩子函数/组件钩子)共8个,初始化4个(创建前后,加载前后各两个),运行(更新)前后两个,销毁前后两个。

五.nodejs

是一种javascript的运行环境,能够使得javascript脱离浏览器运行。

1. npm

1.1概念:

npm(node package manager):nodejs的包管理器,Nodejs中包含了npm,用于node插件管理(包括安装、卸载、管理依赖等)。

它是世界上最大的软件注册表,包含超过 600000 个 包(package) (即,代码模块)。

官网:

https://docs.npmjs.com/about-npm 英文官网

https://www.npmjs.cn/ 中文官网

修改npm的镜像(下载的快,下载各种包的路径) :

npm config set registry https://registry.npm.taobao.org

2 webpack 概念

前端自动化构建工具,它基于nodejs实现,可以帮助我们实现资源的合并、打包、压缩、混淆的诸多功能。

webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用。

3. vue-cli脚手架

3.1概念

vue-cli就是Vue的脚手架工具既vue的客户端,和我们工地看到的脚手架真是那么一回事,它帮助我们搭建基本的开发环境,好比架子搭建好了,利用它可以搞定目录结构,本地调试,单元测试,热加载及代码部署等。

它是一个专门为单页面应用快速搭建繁杂的脚手架,它可以轻松的创建新的应用程序而且可用于自动生成(vue+webpack)的项目模板,vue-cli和webpack是什么关系:vue-cli 里面包含了初始化webpack, 配置webpack打包规则的方法。

3.2脚手架2.0怎么用

3.2.1下载安装脚手架

      npm install vue-cli –g //需要安装完npm

3.2.2 创建vue工作空间

      D:\workspace\vue

3.2.3生成vue项目

1.下载基于vue.js的官方webpack模板:D:\workspace\vue>vue init webpack jt01

2.配置项目文件:

 

3.2.4 启动项目 & 停止项目

cd jt01  //# 进入项目目录

npm run dev // # 自动启动服务,ctrl+c 停止,可能要等几分钟

3.2.5测试访问

注意:端口号可能不同,默认为8080,如果发现端口占用npm很聪明,它会自动改变端口号,以其具体提示的端口信息为准。

3.2.6 HBuilderX管理Vue项目

可以在HbuilderX中打开Vue项目

 

组件需要引入到APP.VUE中注册才能正常使用,或将APP.vue交给main.js管理,main.js中import。

vue-cli 脚手架有现成模板

3.3.脚手架Vue CLI v4.5.14怎么用

3.3.1安装

    npm i @vue/cli –g --force

3.3.2配置

安装完成后使用可视化页面配置vue-cli脚手架v4.5.14,默认端口号为8000

创建新项目

在工作空间下创建新项目>给新项目命名>预设最好选择手动>功能:补充点选router和使用配置文件>配置:pick a linter/formatter config 选择eslint+standard config 标准配置

配置>eslint configuration>保存时检查最好关闭否则频繁报错

插件>安装element-ui的1.0.1版本最好

依赖>安装axios的0.23.0版本

查看vue项目:

导入和操作旧版本项目需要把旧版本项目放到新版本工作空间下,但是不能展现完整内容

3.3.3vue-cli脚手架2.0区别

12.0版本依赖于dos窗口使用dos命令安装和配置第三方插件,Vue CLI v4.5.14只需要在可视化界面安装即可。

  22.0通过vue init webpack jt01创建结构完整的项目,3.0通过可视化界面创建项目

  33.0以上版本比2.0版本项目结构中多了plugins(存放各种插件代码)和views(可存放各种以vue命名的template自定义组件,主要是用户要访问的页面)文件夹,而2.0版本只存放在node_modules文件夹和components中。

3.4 vue中蕴含的webpack打包的项目结构

view 就是用户要访问的页面都存放在这个目录下,如Index.vue

static中保存一些静态的资源,如jquery、css、图片等

src 目录是一个很大的目录,包罗万象

components 把项目中所需要的组件都放在此目录下,默认会创建一个HelloWorld.vue,我们可以自己添加,如添加Header.vue

router 访问的路径,Vue提倡的是SPA(Single Page WebApplication)单页面设计,这是以前旧页面中如果包含其他资源,必然涉及到路径问题。Html没有很好的解决这个问题,而router它是一种解决路径的新发明,很好的解决了多模块页面刷新问题。简而言之就是给组件指明一个路径,我们怎么去访问它。不同组件是依靠配置的路径router来访问的。Router非常强大,老系统是url改变是在服务端进行刷新,而router支持在客户端刷新,就是url变化,页面内容变化,但不请求服务器端,以前的程序是做不到的。此处不好理解,后期专门章节论述,不必心急,先记录下这个特点

重要文件说明:

Vue项目这么多文件,它们什么关系?写代码该从哪里下手呢?

常见操作: 1, 在components里写自定义组件 2, 在App.vue里注册自定义组件 3, 在main.js里引入第三方js

index.html 首页,Vue是SPA单页面开发,页面入口,定义了一个div,并设置id=app

src/main.js 公共的组件就直接配置到这个文件中,私有的就配置到view中

components:1创建自定义组件的文件夹,结构是:

             <template> <div></div></template> //HTML代码区,只能有一个div区

             <script> export default { name:”与本vue文件名保持一致”

data(){return{}}//data区必须return}</script>// 提供一个支持导出的组件

             <script></script>         //写css的代码

App.vue:2把自定义组件,引入到这个文件里

        在<script> 导入区使用import  export default{ component:{名与导入名一致}}

         <template> <div> 此处使用component 中名标签</div></template>

main.js:3引入elementui或ant design需要修改main.js 引入方式:

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

4. 第三方插件的配置文件丢失:

如果没有node_modules library root(所有第三方插件的配置文件),可以在项目根目录下运行cmd然后使用npm install 安装所有需要的插件,前提是项目中还存在package.json和package—lock.json

六element-ui

  1. 是什么:

饿了么团队基于js开发的UI 设计语言,现已无人维护

2.vue-cli2.0版本中怎么用:

2.1安装(哪个工程就在哪个工程下下载安装)

访问官网: https://element.eleme.cn/#/zh-CN/component/installation,查看组件指南

在工程目录下,使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。

npm i element-ui –D // # 下载element资料,这可能要等几分钟

2.2修改 main.js,引入Element

你可以引入整个 Element,或是根据需要仅引入部分组件。

完整引入:

import ElementUI from 'element-ui'; //导入element

import 'element-ui/lib/theme-chalk/index.css'; //导入element的css

Vue.use(ElementUI);//使用element

2.3使用特点

element-ui中引入的标签名大多为el开头

<el-row>:行

<el-col>:列,默认24

<el-col   :span="8" >: 合并8

2.4 自定义列模板

 <el-table-column> 中插入template标签

 <template slot-scope="scope"> 命名作用域插槽名

   {{ scope .row.type ==A ? B : C }}   利用作用域插槽插入数据

</template>

</el-table-column>

2.5 点击某按钮,跳转到画中画页面

<el-dialog  :visible.sync="addItemCatDialogVisible = false " > //会话框开关

2.6 点击新增按钮,跳转到新增页面

3.同类产品ant design

蚂蚁金服基于js开发的一套企业级 UI 设计语言和 React 组件库

浏览器向服务器发起请求:

get方法:

网页地址栏直接输入:

<a href="http://localhost:8080/order/save/10/100/phone">练习3</a>

表单<form  method=”get” > :

<form  action =”目标程序ip地址+端口号+ Mapping()中的规则>

  post方法

  put 方法

  delete 方法

七.用户列表案例:

1.实现用户列表展现

1.1需求1

用户访问页面(初始化)的时候,就要求访问后台服务器,发起ajax请求,实现用户列表页面的渲染。

beforecreate、created、beforemout、mouted四个初始化结束,在此之前的函数都可用。

mounted() {

                            /* 页面初始化完成之后mounted立刻调用findUserList()方法 */

                                      this.findUserList() }

                           

1.1需求2:用户新增(有input标签就要考虑双向绑定)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值