JavaWeb开发(前端Web开发)

news2024/11/16 2:38:40

文章目录

  • 前言
  • 一、初识Web
    • 1.Web开发-介绍
    • 2.初识Web前端
    • 3.Web标准
  • 二、HTML
    • 1.HTML快速入门
    • 2.VS Code开发工具
    • 3.基础标签&样式
    • 4.表格标签
    • 5.表单标签
  • 三、JavaScript
    • 1.JS-介绍
    • 2.JS-引入方式
    • 3.JS-基础语法
      • 3.1.JS-基础语法-书写语法
      • 3.2.JS-基础语法-变量
      • 3.2.JS-基础语法-数据类型&运算符
    • 4.JS-函数
    • 5.JS-对象
      • 5.1.JS-对象-Array数组
      • 5.2.JS-对象-String字符串
      • 5.3.JS-对象-JSON
      • 5.4.JS-对象-BOM
      • 5.5.JS-对象-DOM
    • 6.JS-事件
      • 1.JS-事件-事件绑定
      • 1.JS-事件-常见事件
  • 四、Vue
    • 1.Vue-概述
    • 2.Vue-常用指令
    • 3.Vue-生命周期
    • 4.Ajax
      • 4.1.Ajax-介绍
      • 4.1.Ajax-Axios2
    • 5.前后端分离开发
    • 6.前端工程化
      • 6.1.前端工程化-环境准备
      • 6.2.前端工程化-Vue项目
      • 6.3.前端工程化-Vue项目开发流程
    • 7.Vue组件库Element
      • 7.1.Element-快速入门
      • 7.2.案例
    • 8.Vue路由
    • 9.打包部署

此文档来源于网络,如有侵权,请联系删除!

前言

在这里插入图片描述

课程特色

  • 前后端分离开发,基于接口交互(接口文档)。
  • 前端-基于Vue脚手架,构建工程化的前端项目。
  • 通过案例贯穿整个课程体系,学以致用。
  • 参照企业开发模式,需求分析-表结构设计-接口文档-功能实现-测试。

一、初识Web

1.Web开发-介绍

什么是web?

Web:全球广域网,也称为万维网(www World wide Web),能够通过浏览器访问的网站。

在这里插入图片描述

2.初识Web前端

网页有哪些部分组成?

文字、图片、音频、视频、超链接...

我们看到的网页,背后的本质是什么?

程序员写的前端代码

前端的代码是如何转换成用户眼中的网页的?

通过浏览器转化(解析和渲染)成用户看到的网页。
浏览器中对代码进行解析渲染的部分,称为浏览器内核

提示:不同的浏览器,内核不同,对于相同的前端代码解析的效果会存在差异。

3.Web标准

  • Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。
  • 三个组成部分:

①HTML:负责网页的结构(页面元素和内容)。
②CSS:负责网页的表现(页面元素的外观、位置等页面样式,如:颜色、大小等)。
③JavaScript:负责网页的行为(交互效果)。

二、HTML

1.HTML快速入门

什么是HTML?

HTML(HyperText Markup Language):超文本标记语言

  • 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。
  • 标记语言:由标签构成的语言

① HTML标签都是预定义好的。例如: 使用<a>展示超链接,使用<img>展示图片,<video>展示视频。
②HTML代码直接在浏览器中运行,HTML标签由浏览器解析。

什么是CSS?

CSS(Cascading Style Sheet):层叠样式表,用于控制页面的样式(表现)。

HTML结构标签

<html>
    <head>
        <title>标题</title>
    </head>
    <body>
    
    </body>
</html>

HTML特点

①HTML标签不区分大小写
②HTML标签属性值单双引号都可以
③HTML语法松散

2.VS Code开发工具

VS Code安装使用

  • Visual Studio Code(简称 VS Code)是 Microsoft 于2015年4月发布的一款代码编辑器。
  • VS Code 对前端代码有非常强大的支持,同时也其他编程语言(例如:C++、Java、Python、PHP、GO等)。
  • Vs Code 提供了非常强大的插件库,大大提高了开发效率。
  • 官网:https://code.visualstudio.com 点击前往

在这里插入图片描述

VS Code下载安装教程:https://blog.csdn.net/weixin_44904239/article/details/120951203 点击前往

VS Code所需插件安装(需要连接网络)

1. Chinese (Simplified) (简体中文) Language Pack for Visual

适用于 VS Code 的中文 (简体) 语言包

在这里插入图片描述

2. Code Spell Checker

代码拼写检查器:一个基本的拼写检查程序,可以很好地处理代码和文档。这个拼写检查器的目标是帮助捕获常见的拼写错误,同时保持误报的数量较低

在这里插入图片描述

3. HTML CSS Support

在编写样式表的时候,自动补全功能大大缩减了编写时间。

在这里插入图片描述

4. JavaScript (ES6) code snippets

支持ES6语法提示

在这里插入图片描述

5.Mithril Emmet

一个能大幅度提高前端开发效率的一个工具,用于补全代码

在这里插入图片描述
6.Path Intellisense

路径提示插件

在这里插入图片描述

7.Vue 3 Snippets

在 Vue 2 或者 Vue 3 开发中提供代码片段,语法高亮和格式化的 VS Code 插件,能极大提高开发效率。

在这里插入图片描述

8.VueHelper

VS Code最好的vue代码提示插件,不仅包括了vue2所有api,还含有vue-router2和vuex2的代码

在这里插入图片描述

9.Auto Close Tag

自动闭合HTML/XML标签

在这里插入图片描述

10.Auto Rename Tag

自动完成另一侧标签的同步修改

在这里插入图片描述

11.Beautify

格式化html,js,css(安装过程中, 如果提示是否需要继续安装, 选择 “仍要安装”)

在这里插入图片描述

12.[Deprecated] Bracket Pair Colorizer 2

给括号加上不同的颜色,便于区分不同的区块,使用者可以定义不同括号类型和不同颜色(安装过程中, 如果提示是否需要继续安装, 选择 “仍要安装”)

在这里插入图片描述
13.open in browser

VS Code不像IDE一样能够直接在浏览器中打开html,而该插件支持快捷键与鼠标右键快速在浏览器中打开html文件,支持自定义打开指定的浏览器,包括:Firefox,Chrome,Opera,IE以及Safari

在这里插入图片描述

14.Vetur

Vue多功能集成插件,包括:语法高亮,智能提示,emmet,错误提示,格式化,自动补全,debugger。vscode官方钦定Vue插件,Vue开发者必备。

在这里插入图片描述
15.File Utils

File Utils插件,可以方便快捷的来创建、复制、移动、重命名文件和目录。

在这里插入图片描述

16.IntelliJ IDEA Keybindings

安装了IntelliJ IDEA Keybindings即可在VS Code中使用IDEA的快捷键

在这里插入图片描述

3.基础标签&样式

图片标签:<img>

  • src:指定图像的url(绝对路径 / 相对路径)
  • width:图像的宽度(像素 / 相对于父元素的百分比)
  • height:图像的高度(像素 / 相对于父元素的百分比)

标题标签:<h1> - <h6>

水平标签:<hr>

CSS引入方式:

  • 行内样式:写在标签的style属性中(不推荐)
  • 内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中)
  • 外联样式:写在一个单独的.css文件中(需要通过 link 标签在网页中引入)

颜色表示形式

表示方式表示含义取值
关键字预定义的颜色名red、green、blue…
rgb表示法红绿蓝三原色,每项取值范围:0-255rgb(0,0,0)、rgb(255,255,255)、rgb(255,0,0)
十六进制表示法#开头,将数字转换成十六进制表示#099908、#ff088、#cccccc,简写:#000、#ccc

在这里插入图片描述
超链接标签<a><a/>

属性作用
href指定资源访问的url
target指定在何处打开资源链接(_self 默认值,在当前页面打开,_blank 在空白页面打开)

视频标签<video>

属性作用
src规定视频的url
controls显示播放控件
width播放器的宽度
height播放器的高度

音频标签<audio>

属性作用
src规定音频的url
controls显示播放控件

段落标签<p>

文本加粗标签:<b> / <strong>

页面布局

  • 盒子:页面中所有的元素(标签),都可以看做是一个盒子,由盒子将页面中的元素包含在一个矩形区域内,通过盒子的视角更方便的进行页面布局
  • 盒子模型组成:内容区域(content) 、内边距区域(padding) 、边框区域(border)、外边距区域(margin)

布局标签

  • 布局标签:实际开发网页中,会大量频繁的使用 div和 span 这两个没有语义的布局标签。
  • 标签:<div><span>

div标签特点

  • 一行只显示一个(独占一行)
  • 宽度默认是父元素的宽度,高度默认由内容撑开
  • 可以设置宽高(width、height)

span标签特点

  • 一行可以显示多个
  • 宽度和高度默认由内容撑开
  • 不可以设置宽高(width、height)

4.表格标签

表格标签

  • 场景:在网页中以表格(行、列) 形式整齐展示数据
标签描述属性/备注
<table>定义表格整体,可以包裹多个<tr>border:规定表格边框的宽度
width:规定表格的宽度
cellspacing:规定单元之间的空间
<tr>表格的行,可以包裹多个<td>
<td>表格单元格(普通),可以包裹内容如果是表头单元格,可以替换为<th>

5.表单标签

表单标签

  • 场景:在网页中主要负责数据采集功能,如 注册、登录等数据采集。
  • 标签: <form>
  • 表单项:不同类型的 input 元素、下拉列表、文本域等。
标签作用
<input>定义表单项,通过type属性控制输入形式
<select>定义下拉列表
<textarea>定义文本域
  • 属性:
属性作用
action规定当提交表单时向何处发送表单数据,URL
method规定用于发送表单数据的方式。GET、POST

表单项

  • <input>:表单项,通过type属性控制输入形式。
  • <select>:定义下拉列表, 定义列表项。
  • <textarea>:文本域

在这里插入图片描述

三、JavaScript

1.JS-介绍

  • JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互。
  • JavaScript 和Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。
  • JavaScript 在1995 年由 Brendan Eich 发明,并于1997年成为 ECMA标准。
  • ECMAScript6(ES6)是最新的JavaScript版本(发布于2015年)。

ECMA:ECMA国际(前身为欧洲计算机制造商协会),制定了标准化的脚本程序设计语言 ECMAScript,这种语言得到广泛应用。而lavaScript是遵守ECMAScript的标准的。

2.JS-引入方式

内部脚本

  • JavaScript代码必须位于<script></script>标签之间
  • 在HTML文档中,可以在任意地方,放置任意数量的<script>
  • 一般会把脚本置于<body>元素的底部,可改善显示速度

外部脚本

  • 外部JS文件中,只包含JS代码,不包含<script>标签
  • <script>标签不能自闭合

3.JS-基础语法

3.1.JS-基础语法-书写语法

书写语法

  • 区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的

  • 每行结尾的分号可有可无

  • 注释:

    单行注释://注释内容
    多行注释:/注释内容/

  • 大括号表示代码块

    //判断
    if(count==1){
    	alert(count);
    }
    

输出语句

  • 使用 window.alert() 写入警告框

  • 使用 document.write() 写入 HTML 输出

  • 使用 console.log() 写入浏览器控制台

    <script>
            window.alert("Hell JavaScript");    //浏览器弹出警告框
            document.write("Hell JavaScript");  //写入HTML,在浏览器展示
            console.log("Hell JavaScript");     //写入浏览器控制台
     </script>
    

3.2.JS-基础语法-变量

变量

  • JavaScript 中用 var 关键字 (variable 的缩写) 来声明变量。

  • JavaScript 是一门弱类型语言,变量可以存放不同类型的值

  • 变量名需要遵循如下规则:

    ①组成字符可以是任何字母、数字、下划线(_)或美元符号($)
    ②数字不能开头
    ③建议使用驼峰命名

    //定义变量
    var a = "张三";
    

注意事项

  • ECMAScript 6 新增了 let 关键字来定义变量。它的用法类似于var,但是所声明的变量,只在 let 关键字所在的代码块内有效,且不允许重复声明。
  • ECMAScript6 新增了 const 关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。

3.2.JS-基础语法-数据类型&运算符

数据类型

  • JavaScript中分为:原始类型 和 引用类型。

  • number:数字(整数、小数、NaN(Not a Number))

  • string:字符串,单双引皆可

  • boolean:布尔。true,false

  • null:对象为空

  • undefined:当声明的变量未初始化时,该变量的默认值是 undefined

  • 使用 typeof 运算符可以获取数据类型

    var a = "张三";
    alert(typeof a);
    

运算符

  • 算数运算符:+,-,*,/,%,++,–
  • 赋值运算符:=,+=,-=,*=,/=,%=
  • 比较运算符:>,<,>=,<=,!=,==, ===
  • 逻辑运算符:&&,||,!
  • 三元运算符:条件表达式?true_value:false_value
  • == 会进行类型转换,=== 不会进行类型转换

类型转换

  • 字符串类型转为数字

    将字符串字面值转为数字。如果字面值不是数字,则转为NaN。

  • 其他类型转为boolean:

    Number:0 和 NaN为false,其他均转为true。
    String:空字符串为false,其他均转为true。
    Null 和 undefined:均转为false。

流程控制语句

  • if…else if…else…
  • switch
  • for
  • while
  • do…while

4.JS-函数

函数

  • 介绍:函数(方法)是被设计为执行特定任务的代码块。

  • 定义:JavaScript 函数通过 function 关键字进行定义,语法为:

    定义方式一:

    function functionName(参数1,参数2..){
    	//要执行的代码
    }
    

    定义方式二:

    var functionName = function(参数1,参数2..){
    	//要执行的代码
    }
    
  • 注意

    形式参数不需要类型。因为JavaScript是弱类型语言
    返回值也不需要定义类型,可以在函数内部直接使用return返回即可

  • 调用:函数名称(实际参数列表)

5.JS-对象

5.1.JS-对象-Array数组

Array

  • JavaScript 中 Array对象用于定于数组。

  • 定义
    方式一

    var 变量名 = new Array(元素列表);

    var arr = new Array[1,2,3,4,5];
    

    方式一

    var 变量名 = [元素列表];

    var arr = [1,2,3,4,5];
    
  • 访问

    arr[索引] = 值;

    arr[10] = "hello";
    

注意事项

  • JavaScript 中的数组相当于Java 中集合,数组的长度是可变的,而JavaScript 是弱类型,所以可以存储任意的类型的数据。

  • 属性

属性描述
length设置或返回数组中元素的数量
  • 方法
属性描述
forEach()遍历数组中的每个有值的元素,并调用一次传入的函数
push()将新元素添加到数组的末尾,并返回新的长度。
splice()从数组中删除元素。

箭头函数(ES6):是用来简化函数定义语法的。具体形式为:(…) =>{…},
如果需要给箭头函数起名字:var xxx =(…) =>{…}

5.2.JS-对象-String字符串

String

  • String字符串对象创建方式有两种:
    方式一:

    var 变量名 = new String(“…”);

    var str = new String("Hello String");
    

    方式二:

    var 变量名 = “…”;

    var str = "Hello String";
    var str = 'Hello String';
    
  • 属性

属性描述
length字符串的长度
  • 方法
属性描述
charAt()返回在指定位置的字符
indexOf()检索字符串
trim()去除字符串两边的空格
substring提取字符串中两个指定的索引号之间的字符

5.3.JS-对象-JSON

JavaScript自定义对象

  • 定义格式

    var 对象名 = {
    	属性名1:属性值1,
    	属性名2:属性值2,
    	属性名3:属性值3,
    	函数名称:function(形参列表){}
    }
    
    var user = {
        name:"张三",
        age:"20",
        gender:"男",
        eat:function(){
            alert("吃饭");
         }
    }
    
  • 调用格式

    对象名.属性名;

    console.log(user.name);
    

    对象名.属性名();

    user.eat();
    

JSON

  • 概念:JavaScript Object Notation,JavaScript对象标记法。
  • JSON 是通过 JavaScript 对象标记法书写的文本。
  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体在网络中进行数据传输。
{
	"name":"张三",
    "age":"20",
    "gender":"男"
}

JSON-基础语法

  • 定义

    var 变量名 = ‘{“key1”,“value1”,“key1”,“value2”}’

    value的数据类型为:

    ①数字(整数或浮点数)
    ②字符串(在双引号中)
    ③逻辑值(true 或 false)
    ④数组(在方括号中)
    ⑥对象(在花括号中)
    ⑦null

    var user = '{ "name":"张三","age":"20","address":["北京","上海","深圳"]}';
    
  • JSON字符串转为JS对象

    var jsonObject = JSON.parse(user);
    
  • JS对象转为JSON字符串

    var jsonString = JSON.stringify(jsonObject);
    

5.4.JS-对象-BOM

BOM

  • 概念:Browser Object Model 浏览器对象模型,允许JavaScript与浏览器对话,JavaScript 将浏览器的各个组成部分封装为对象。

  • 组成

    1.Window:浏览器窗口对象
    2.Navigator:浏览器对象
    3.Screen:屏幕对象
    4.History:历史记录对象
    5.Location:地址栏对象

Window

  • 介绍:浏览器窗口对象。

  • 获取:只接使用window,其中window.可以省略。

    window.alert("Hello Window");
    alert("Hello Window");
    
  • 属性

    history:对 History 对象的只读引用。
    location:用于窗口或框架的 Location 对象。
    navigator:对 Navigator 对象的只读引用。

  • 方法

    alert():显示带有一段消息和一个确认按钮的警告框。
    confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
    setlnterval():按照指定的周期 (以毫秒计) 来调用函数或计算表达式。
    setTimeout():在指定的毫秒数后调用函数或计算表达式。

Location

  • 介绍:地址栏对象。

  • 获取:使用 window.location 获取,其中 window. 可以省略。

    window.location.属性;
    location.属性;
    
  • 属性

    href:设置或返回完整的URL。

    location.href = "https://www.baidu.com";
    

5.5.JS-对象-DOM

DOM

  • 概念:Document Object Model,文档对象模型。
  • 将标记语言的各个组成部分封装为对应的对象:
    1.Document:整个文档对象
    2.Element:元素对象
    3.Attribute:属性对象
    4.Text:文本对象
    5.Comment:注释对象

在这里插入图片描述

  • DOM是W3C(万维网联盟)的标准,定义了访问HTML和XML文档的标准,分为3个不同的部分:
    1.Core DOM - 所有文档类型的标准模型

    Document:整个文档对象
    Element:元素对象
    Attribute:属性对象
    Text:文本对象
    Comment:注释对象

    2.XML DOM - XML文档的标准模型
    3.HTML DOM - HTML 文档的标准模型

    Image:<img>
    Button:<input type=‘button’>

  • HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的。

  • Document对象中提供了以下获取Element元素对象的函数:
    1.根据id属性值获取,返回单个Element对象

    <img id="h1" src="./图片.img" >
    <script>
        var img = document.getElementById('h1');
    </script>
    

    2.根据标签名称获取,返回Element对象数组

    <div class="cls">第一个div</div>
    <div class="cls">第二个div</div>
    <script>
        var divs = document.getElementsByTagName('div');
    </script>
    

    3.根据name属性值获取,返回Element对象数组

    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
    <script>
        var hobbys = document.getElementsByName('hobby');
    </script>
    

    4.根据class属性值获取,返回Element对象数组

    <div class="cls">第一个div</div>
    <div class="cls">第二个div</div>
    <script>
        var clss = document.getElementsByClassName('cls');
    </script>
    

6.JS-事件

事件监听

  • 事件:HTML事件是发生在HTML元素上的 “事情”。比如:
    1.按钮被点击
    2.鼠标移动到元素上
    3.按下键盘按键

  • 事件监听:JavaScript可以在事件被侦测到时 执行代码

1.JS-事件-事件绑定

事件绑定

方式一:通过 HTML 标签中的事件属性进行绑定

<input type="button" onclick="on()" value="按钮">
<script>
	function on(){
		alert('我被点击了!');
	}
</script>

方式二:通过 DOM 元素属性绑定

<input type="button" id="button" value="按钮">
<script>
	document.getElementById('button').onclick=function(){
		alert('我被点击了!');
	}  
</script>

1.JS-事件-常见事件

常见事件

事件名说明
onclick鼠标单击事件
onblur元素时区焦点
onfocus元素获得焦点
onload某个页面或图像被完成加载
onsubmit当表单提交时触发该事件
onkeydown某个键盘的键被按下
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开

四、Vue

1.Vue-概述

什么是Vue

  • Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。
  • 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。
  • 官网:Vue快速入门 点击前往

Vue快速入门

  • 新建HTML页面,引入Vue.js文件

    <script src="./js/vue.js"></script>
    
  • 在JS代码区域,创建Vue核心对象,定义数据模型

    <script>
    	new Vue({
    		el:'#app',
            data:{
    			message:"Hello Vue"
    		}
    	})
    </script>
    
  • 编写视图

    <div id="app">
    	<input type="text" v-model="message">
    	{{message}}
    </div>
    

插值表达式

  • 形式:{{表达式}}。
  • 内容可以是:
    1.变量
    2.三元运算符
    3.函数调用
    4.算术运算

2.Vue-常用指令

  • 指令:HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同的含义。
  • 常用指令
指令作用
v-bind为HTML标签绑定属性值,如设置href,css样式等
v-model在表单元素上创建双向数据绑定
v-on为HTML标签绑定事件
v-if条件性的渲染某元素,判定为true时渲染,否则不渲染
v-else-if
v-else
v-show根据条件展示某元素,区别在于切换的是display属性的值
v-for列表渲染,遍历容器的元素或者对象的属性
  • v-bind

    <!-- 写法一: -->
    <div id="app">
        <a v-bind:href="url">百度一下</a> 
    </div>
    
    <!-- 写法二: -->
    <div id="app">
        <a :href="url">百度一下</a> 
    </div>
    
    <script>
    	new Vue({
    		el:'#app',
    		data:{
    			url:"https://www.baidu.com/"
    		}
    	})
    </script>
    
  • v-model

    <div id="app">
        <input type="text" v-model="url">
    </div>
    
    <script>
    	new Vue({
    		el:'#app',
    		data:{
    			url:"https://www.baidu.com/"
    		}
    	})
    </script>
    

    注意事项

    通过v-bind或者v-model绑定的变量,必须在数据模型中声明。

  • v-on

    <!-- 写法一: -->
    <div id="app">
        <input type="button" value="按钮" v-on:click="handle()">
    </div>
    
    <!-- 写法二: -->
    <div id="app">
        <input type="button" value="按钮" @click="handle()">
    </div>
    
    <script>
        new Vue({
            el:'#app',
            data: {
            },
            methods: {
                handle:function(){
                    alert('我被点击了');
                }
            },
        })
    </script>
    
  • v-if & v-else-if & v-else

    <div id="app">
        年龄<input type="text" v-model="age">,经判定为:
        <span v-if="age <= 35">年轻人</span>
        <span v-else-if="age > 35 && age < 60">中年人</span>
        <span v-else>老年人</span>
    </div>
    
    <script>
        new Vue({
            el:'#app',
            data: {
                age: 20
            },
        })
    </script>
    
  • v-show

    <div id="app">
        年龄<input type="text" v-model="age">,经判定为:
        <span v-show="age <= 35">年轻人</span>
        <span v-show="age > 35 && age < 60">中年人</span>
        <span v-show="age >= 60">老年人</span>
    </div>
    
    <script>
        new Vue({
            el:'#app',
            data: {
                age: 20
            },
        })
    </script>
    
  • v-for

    <!-- 写法一: -->
    <div id="app">
        <div v-for="addr in address">{{addr}}</div>
    </div>
    
    <!-- 写法二: -->
    <div id="app">
        <div v-for="(addr,index) in address">{{index + 1}}:{{addr}}</div>
    </div>
    
    <script>
        new Vue({
            el:'#app',
            data: {
                address: ["北京","上海","深圳","广州","长沙"]
            },
        })
    </script>
    

案例

  • 通过Vue完成表格数据的渲染展示

    <div id="app">
        <table border="1" cellspacing="0" width="60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
                <th>等级</th>
            </tr>
            <tr align="center" v-for="(user,index) in users">
                <td>{{index + 1}}</td>
                <td>{{user.name}}</td>
                <td>{{user.age}}</td>
                <td>
                    <span v-if="user.gender == 1"></span>
                    <span v-if="user.gender == 2"></span>
                </td>
                <td>{{user.score}}</td>
                <td>
                    <span v-if="user.score >= 85">优秀</span>
                    <span v-else-if="user.score >= 60">及格</span>
                    <span style="color: red;" v-else>不及格</span>
                </td>
            </tr>
        </table>
    </div>
    
    <script>
        new Vue({
            el:'#app',
            data: {
                users: [{
                    name: "张三",
                    age: 20,
                    gender: 1,
                    score: 78,
                },{
                    name: "李四",
                    age: 18,
                    gender: 2,
                    score: 78,
                },{
                    name: "王五",
                    age: 26,
                    gender: 2,
                    score: 98,
                },{
                    name: "赵六",
                    age: 30,
                    gender: 1,
                    score: 52,
                }]
            },
        })
    </script>
    

3.Vue-生命周期

  • 生命周期:指一个对象从创建到销毁的整个过程。
  • 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)。
状态阶段周期
beforeCreate创建前
created创建后
beforeMount挂载前
mounted挂载完成
beforeUpdate更新前
update更新后
beforeDestroy销毁前
destroyed销毁后

在这里插入图片描述

  • mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。(发送请求到服务端,加载数据)

    <div id="#app">
    </div>
    <script>
        new Vue({
            el: '#app',
            mounted() {
                alert("Vue挂载完成,发送请求到服务端。")
            },
        })
    </script>
    

4.Ajax

4.1.Ajax-介绍

  • 概念:Asynchronous JavaScript And XML,异步的JavaScript和XML。
  • 作用:
    1.数据交换:通过Aiax可以给服务器发送请求,并获取服务器响应的数据。
    2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等。

原生Ajax

  1. 准备数据地址:http://yapi.smart-xwork.cn/mock/169327/emp/list

  2. 创建XMLHttpRequest对象:用于和服务器交换数据

  3. 向服务器发送请求

  4. 获取服务器响应数据

    <div id="demo">
        <h2>AJAX 更改这段文本</h2>
        <button type="button" onclick="getData()">更改文本</button>
    </div>
    <script>
        function getData(){
            //1.创建XMLHttpRequest
            var xhttp = new XMLHttpRequest();
            //2.发送异步请求
            xhttp.open('GET','http://yapi.smart-xwork.cn/mock/169327/emp/list');
            xhttp.send();//发送请求
            //3.获取服务器响应数据
            xhttp.onreadystatechange = function() {
                if(xhttp.readyState == 4 && xhttp.status == 200){
                    document.getElementById("demo").innerHTML = xhttp.responseText;
                }
            }
        }
    </script>
    

4.1.Ajax-Axios2

Axios

  • 介绍:Axios 对原生的Ajax进行了封装,简化书写,快速开发。
  • 官网:https://www.axios-http.cn/点击前往

Axios入门

  • 引入Axios的js文件

    <script src="./js/axios-0.18.0.js"></script>
    
  • 使用Axios发送请求,并获取响应结果

    <input type="button" value="获取数据GET" onclick="get()">
    <input type="button" value="删除数据POST" onclick="post()">
    <script>
        function get(){
            //通过axios发送异步请求-get
            axios({
                method:"get",
                url:"http://yapi.smart-xwork.cn/mock/169327/emp/list",
            }).then((result)=>{
                console.log(result.data);
            });
        }
        function post(){
            //通过axios发送异步请求-post
            axios({
                method:"post",
                url:"http://yapi.smart-xwork.cn/mock/169327/emp/deleteById",
                data:"id=1"
            }).then((result)=>{
                console.log(result.data);
            });
        }
    </script>
    

Axios请求方式别名

  • axios.get(url [,config])

  • axios.delete(url [,config])

  • axios.post(url [,data[,config]])

  • axios.put(url [,data[,config]])

    <script>
        function get(){
            //通过axios发送异步请求-get
            axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then((result)=>{
                console.log(result.data);
            });
        }
    </script>
    
    <script>
        function post(){
            //通过axios发送异步请求-post
            axios.post("http://yapi.smart-xwork.cn/mock/169327/emp/deleteById","id=1").then((result)=>{
                console.log(result.data);
            });
        }
    </script>
    

案例

基于Vue及Axios完成数据的动态加载展示

  1. 数据准备的url:http://yapi.smart-xwork.cn/mock/169327/emp/list

  2. 加粗样式在页面加载完成后,自动发送异步请求,加载数据,渲染展示页面(性别:1代表男,2 代表女)。

    <div id="app" align="center">
        <table border="1" cellspacing="0" width="60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>图像</th>
                <th>性别</th>
                <th>职位</th>
                <th>入职日期</th>
                <th>最后操作时间</th>
            </tr>
            <tr align="center" v-for="(emp,index) in emps">
                <td>{{index + 1}}</td>
                <td>{{emp.name}}</td>
                <td>
                    <img v-bind:src="emp.image" width="70px" height="50px">
                </td>
                <td>
                    <span v-if="emp.gender == 1"></span>
                    <span v-if="emp.gender == 2"></span>
                </td>
                <td>{{emp.job}}</td>
                <td>{{emp.entrydate}}</td>
                <td>{{emp.updatetime}}</td>
            </tr>
        </table>
    </div>
    <script>
        new Vue({
            el:"#app",
            data: {
                emps:[]
            },
            mounted() {
                //发送异步请求,加载数据
                axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then((result)=>{
                   this.emps = result.data.data;
                });
            },
        })
    </script>
    

在这里插入图片描述

5.前后端分离开发

前后端混合开发缺点

  1. 沟通成本高
  2. 分工不明确
  3. 不便管理
  4. 不便维护扩展

在这里插入图片描述

YAPI

  • 介绍:YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务

  • 地址:http://yapi.smart-xwork.cn/点击前往

    1.添加项目
    2.添加分类
    3.添加接口

6.前端工程化

前端工程化

  • 前端工程化:是指在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化

6.1.前端工程化-环境准备

环境准备(vue-cli)

  • 介绍:Vue-cli 是Vue官方提供的一个脚手架,用于快速生成一个 Vue 的项目模板。
  • Vue-cli提供了如下功能:
    1.统一的目录结构
    2.本地调试
    3.热部署
    4.单元测试
    5.集成打包上线
  • 依赖环境:NodeJS

NodeJS下载

  • NodeJS官网:https://nodejs.org/en 点击前往

在这里插入图片描述

NodeJS安装

  • 双击NodeJS安装包
    在这里插入图片描述

  • Next

    在这里插入图片描述

  • 勾选→Next

    在这里插入图片描述

  • 选择安装路径→Next

    在这里插入图片描述

  • Next

    在这里插入图片描述

  • Next

    在这里插入图片描述

  • Install

    在这里插入图片描述

  • 等待安装完成

    在这里插入图片描述

  • Finisn

    在这里插入图片描述

  • 验证NodeJS环境变量

    在这里插入图片描述

  • 配置npm的全局安装路径

    在这里插入图片描述

     ```javascript
     #使用管理员身份运行命令行,在命令行中,执行如下指令:
     #注意:D:\develop\NodeJS 目录是NodeJS的安装目录
     npm config set prefix "D:\develop\NodeJS"
     #查看是否设置成功
     npm config get prefix
     ```
    
     ![在这里插入图片描述](https://img-blog.csdnimg.cn/31fe5046fe304bf29ecca2fca97f295b.png)
    
  • 切换npm的淘宝镜像

    #使用管理员身份运行命令行,在命令行中,执行如下指令:
    npm config set registry https://registry.npm.taobao.org
    

    在这里插入图片描述

  • 安装Vue-cli

    #使用管理员身份运行命令行,在命令行中,执行如下指令:(安装过程中会联网下载,需要等待几分钟)
    npm install -g @vue/cli
    

    在这里插入图片描述

    #执行命令查看是否安装成功
    vue --version
    

    在这里插入图片描述

6.2.前端工程化-Vue项目

Vue项目-创建

  • 命令行:

    vue create vue-project01
    
  • 图形化界面:

    vue ui
    

通过图形化界面创建Vue项目

  1. 在自己想要创建Vue项目的文件目录下打开cmd窗口输入命令:vue ui

    vue ui
    

    在这里插入图片描述

  2. 项目→在此创建新项目

    在这里插入图片描述

  3. 设置项目名称→选择包管理器类型→关闭Git初始化按钮(根据自己要求设置)→下一步

    在这里插入图片描述

  4. 选择手动→下一步

    在这里插入图片描述

  5. 根据自己需求打开对应的功能(我这里就多打开了一个Router功能)→下一步

在这里插入图片描述

  1. 选择Vue版本→选择语法检测规范→创建项目

    在这里插入图片描述

  2. 创建项目,不保存预设

    在这里插入图片描述

  3. 正在联网创建项目

    在这里插入图片描述

  4. Vue项目创建完成

    在这里插入图片描述
    在这里插入图片描述

  5. 新建窗口→打开项目文件

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Vue项目-目录结构

  • 基于Vue脚手架创建出来的工程,有标准的目录结构,如下:

    在这里插入图片描述
    在这里插入图片描述
    vue项目-启动

  • 方法一(图形化界面启动Vue项目)
    在这里插入图片描述

  • 方法二(命令行方式启动Vue项目)

    #在项目所在位置打开cmd窗口执行下面命令(执行成功浏览器访问:http://localhost:8080/)
    npm run serve
    

    在这里插入图片描述

  • 方法三(Vue命令启动Vue项目)

    npm run serve
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Vue项目-配置端口

  • 编辑vue.config.js文件

    #添加内容
    devServer: {
    	port: 7000,
    }
    

    在这里插入图片描述

6.3.前端工程化-Vue项目开发流程

Vue项目开发流程

在这里插入图片描述

  • Vue的组件文件以.vue结尾,每个组件由三个部分组成:<template>、<script>、<style>。

在这里插入图片描述

7.Vue组件库Element

什么是Element

  • Element:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  • 组件:组成网页的部件,例如:超链接、按钮、图片、表格、表单、分页条等等。
  • 官网:https://element.eleme.cn/#/zh-CNListener 点击前往

7.1.Element-快速入门

快速入门

  • 安装ElementUI组件库(在当前工程的目录下),在命令行执行指令:

    #执行命令下载安装ElementUI组件库(下载安装完成后node_modules文件夹路径下会有一个element-ui文件夹)
    npm install element-ui@2.15.13
    

    在这里插入图片描述

    在这里插入图片描述

在这里插入图片描述

  • 引入ElementUI组件库

    import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
    Vue.use(ElementUI);
    

    在这里插入图片描述
    在这里插入图片描述

  • 访问官网,复制组件代码,调整

    在views文件夹下创建一个名为element的文件夹,element的文件夹下创建组件文件页面

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

在这里插入图片描述

7.2.案例

根据页面原型完成员工管理页面开发,并通过Axios完成数据异步加载。
服务端数据获取地址:http://yapi.smart-xwork.cn/mock/169327/emp/list
服务端数据获取地址:http://yapi.smart-xwork.cn/mock/262870/emp/list

步骤:

  • 创建页面,完成页面的整体布局规划
  • 布局中各个部分的组件实现
  • 列表数据的异步加载,并渲染展示

在这里插入图片描述

Vue项目中使用Axios:

  • 在项目目录下安装axios:

    npm install axios
    

    在这里插入图片描述

  • 需要使用axios时,导入axios:

    import axios from 'axios';
    

    在这里插入图片描述
    在这里插入图片描述

8.Vue路由

前端路由:URL中的hash(#号)与组件之间的对应关系。

Vue router

  • 介绍:Vue Router 是 Vue 的官方路由。

  • 组成:

    • VueRouter:路由器类,根据路由请求在路由视图中动态渲染选中的组件
    • <router-link>:请求链接组件,浏览器会解析成<a>
    • <router-view>:动态视图组件,用来渲染展示与路由路径对应的组件
  • Vue路由安装(创建Vue项目时已选择

    npm install vue-router@3.5.1
    
  • 定义路由

    配置router文件夹下的index.js文件

    在这里插入图片描述

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    Vue.use(VueRouter)
    const routes = [
      {
        path: '/emp',
        name: 'emp',
        component: () => import('../views/tlias/EmpView.vue')
      },
      {
        path: '/dept',
        name: 'dept',
        component: () => import('../views/tlias/DeptView.vue')
      },
      {
        path: '/',
        redirect: '/emp',
      },
    ]
    
    const router = new VueRouter({
      routes
    })
    
    export default router
    
    

    配置main.js文件

    在这里插入图片描述

    前端页面引用

    在这里插入图片描述

9.打包部署

#打包命令
npm run build

在这里插入图片描述

在这里插入图片描述

部署

Nginx

  • 介绍:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,在各大型互联网公司都有非常广泛的使用。

  • 官网:http://nginx.org/ 点击前往

  • 下载

    在这里插入图片描述

    稳定版本下载

    在这里插入图片描述

  • 安装

    将下载的压缩包解压到没有中文的目录下

  • Nginx目录介绍

在这里插入图片描述

  • 项目部署

    • 部署:将打包好的 dist 目录下的文件,复制到nginx安装目录的html目录下。

    在这里插入图片描述

    • 启动:双击nginx.exe 文件即可,Nginx服务器默认占用
      80端口号。

    在这里插入图片描述

    启动nginx后查看任务管理器是否有nginx进程,没有的话查看logs目录下的error.log是否报错(下面是80端口被占用报错,导致nginx没有启动

    在这里插入图片描述

    • 修改nginx端口号:修改conf目录下的nginx.conf文件,将其端口号改为90
      在这里插入图片描述

    重新启动nginx后查看任务管理器有了nginx进程,nginx启动成功。浏览器访问:http://localhost:90/ 即可访问成功

    在这里插入图片描述

在这里插入图片描述

此文档来源于网络,如有侵权,请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向Java开发者的ChatGPT提示词工程(7)

在如今信息爆炸的时代&#xff0c;我们面临着海量的文字信息&#xff0c;很难抽出足够的时间去阅读所有感兴趣的内容。然而&#xff0c;大语言模型为我们提供了一种有效的解决方案&#xff1a;通过自动文本摘要&#xff0c;帮助我们快速获取文章的核心内容。这种技术已经被广泛…

vue2 h5开发前进刷新后退缓存实现

vue2 h5开发前进刷新后退缓存实现 在store定义变量 const state {includedComponents: [] }const mutations {includedComponents (state, data) {state.includedComponents data} }在app.vue&#xff08;我这里主要在layout.vue修改&#xff09;使用 keep-alive :include…

使用Microsoft.Office.Interop.PowerPoin遥控PPT

Microsoft.Office.Interop.PowerPoin操作PPT 主窗体&#xff0c;填写ppt路径&#xff0c;打开ppt打开ppt后&#xff0c;可用代码操作ppt可获取每页PPT截图&#xff0c;并获取对应小节名称&#xff0c;备注等代码下载地址联系qq 主窗体&#xff0c;填写ppt路径&#xff0c;打开p…

四.图像处理与光学之3A的 AE

五.图像处理与光学之3A的 AE 3A 是Camera ISP 控制算法的一个重要组成部分,通常分为自动曝光(AE)、自动聚焦(AF)、自动白平衡(AWB)三个组件。 5.0 概述自动曝光(Auto Exposure) 自动曝光算法可以理解为一个伺服系统,它不断监控ISP生成的每一帧图像的曝光状态,如果发现采…

C# Winform小程序:局域网设置NTP服务器、实现时间同步

设置NTP服务器&#xff1a; NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。 局域网不能连接Internet&#xff0c;可以设置一台计算机为NTP服务器。 依次点击&#xff1a;开始---运行---regedit&#xff0c;进入注册表&am…

晶体管放大器结构原理图解

功率放大器的作用是将来自前置放大器的信号放大到足够能推动相应扬声器系统所需的功率。就其功率来说远比前置放大器简单&#xff0c;就其消耗的电功率来说远比前置放大器为大&#xff0c;因为功率放大器的本质就是将交流电能"转化"为音频信号&#xff0c;当然其中不…

JAVA 正则表达式 及 案例

JAVA 正则表达式 及 案例 目录 JAVA 正则表达式 及 案例1.正则表达式Regex1.1 概述1.2 常见语法1.3 String提供了支持正则表达式的方法1.4 练习&#xff1a;测试输入身份证号 1.正则表达式Regex 1.1 概述 正确的字符串格式规则。 常用来判断用户输入的内容是否符合格式的要求…

chatgpt赋能python:为什么在写Python代码时需要注意空格的使用

为什么在写Python代码时需要注意空格的使用 作为一门高效、易读且简单的编程语言&#xff0c;Python在软件开发领域中得到了越来越广泛的应用。然而&#xff0c;在Python的编码过程中&#xff0c;空格的使用可能会带来一些难以预料到的问题。为了避免这些问题&#xff0c;我们…

Redis【实战篇】---- 商户查询缓存

Redis【实战篇】---- 商户查询缓存 1. 什么是缓存&#xff1f;1. 为什么要使用缓存2. 如何使用缓存 2. 添加商户缓存1. 缓存模型和思路2. 代码如下 3. 缓存更新策略1. 数据库缓存不一致解决方案2. 数据库和缓存不一致采用什么方案 4. 实现商铺和缓存与数据库双写一致5. 缓存穿透…

Linux系统编程:详解环境变量

目录 一. 环境变量的基本概念 1.1 什么是环境变量 1.2 环境变量的功能测试 二. 与环境变量相关的操作 三. 环境变量的组织方式 四. 通过代码获取环境变量的值 五. 总结 一. 环境变量的基本概念 1.1 什么是环境变量 环境变量是用于指定操作系统相关参数的、全局的变量。…

大语言模型 -- 部署LaWGPT模型记录

模型介绍&#xff1a; 该系列模型在通用中文基座模型&#xff08;如 Chinese-LLaMA、ChatGLM 等&#xff09;的基础上扩充法律领域专有词表、大规模中文法律语料预训练&#xff0c;增强了大模型在法律领域的基础语义理解能力。在此基础上&#xff0c;构造法律领域对话问答数据…

SpringBoot——2.7.3版本整合Swagger3

前言 Swagger2&#xff08;基于openApi3&#xff09;已经在17年停止维护了&#xff0c;取而代之的是 sagger3&#xff08;基于openApi3&#xff09;&#xff0c;而国内几乎没有 sagger3使用的文档&#xff0c;百度搜出来的大部分都是swagger2的使用&#xff0c;这篇文章将介绍…

存量时代,CRM系统如何赋能企业客户关系管理

如何发掘和吸引新客户、如何维系现有客户、如何推动业务增长&#xff0c;一直是众多公司运营管理中时常要面对的关键问题。尤其在数字化时代&#xff0c;用户获取信息的渠道越来越丰富&#xff0c;企业的获客渠道也在日益增多&#xff0c;面对每天的海量数据&#xff0c;企业该…

【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【MOOC 测验】第3章 运输层

1​、在 ISO/OSI 参考模型中&#xff0c;对于运输层描述正确的有&#xff08; &#xff09; A. 为传输数据选择数据链路层所提供的最合适的服务B. 为系统之间提供面向连接的数据传输服务C. 可以提供端到端的差错恢复和流量控制&#xff0c;实现可靠的数据传输D. 提供路由选择…

TP composer 新创建一个vendor2,作为新库下载目录

站点目录新建一个vendor2文件夹&#xff1a; 在里面新建一个 composer.json 文件&#xff1a;(只写一个花括号就行) {} 然后这个vendor2目录里&#xff0c;使用宝塔终端执行&#xff1a; composer require zoujingli/ip2region 这样&#xff0c;vendor2目录里就会再多出 v…

AI大模型应用时代,如何通过数据“造好品,卖好品”?

在数字化时代的浪潮中&#xff0c;品牌营销正面临着前所未有的挑战和机遇。随着技术的迅猛发展&#xff0c;消费者的行为和期望也在不断演变。 新的市场环境下&#xff0c;消费者的需求和购买行为发生了哪些变化&#xff1f; 数码家电转战社媒平台&#xff0c;竞争白热化如…

HAL库记录--外部中断

1.STM32CubaMX配置 2.分析生成代码 /*Configure GPIO pin : PtPin */GPIO_InitStruct.Pin GPIO_PIN_12;GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull GPIO_PULLUP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);/* EXTI interrupt init*/HAL_NVIC_SetPri…

leetcode:191. 位1的个数(python3解法)

难度&#xff1a;简单 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;…

经纬恒润OTA仿真测试解决方案为汽车智能化发展保驾护航

OTA技术是汽车实现完整网联化、智能化体验的基础&#xff0c;自被引用汽车以来&#xff0c;广受研发人员、市场用户的关注。近来&#xff0c;国家有关部门也陆续出台了相应政策&#xff0c;对汽车企业OTA技术的应用进行了约束和规范。因此&#xff0c;OTA技术在量产车型的应用落…