1.基础语法
JS中有3种输出语句:
api | 描述 |
window.alert(...) | 警告框 |
document.write(...) | 在HTML 输出内容 |
console.log(...) | 写入浏览器控制台 |
1. 变量
-
JS中主要通过
let
关键字来声明变量的。 -
JS是一门弱类型语言,变量是可以存放不同类型的值的常量
2. 常量
在JS中,如果声明一个场景,需要使用const
关键字。一旦声明,常量的值就不能改变 (不可以重新赋值)
3. 数据类型
数据类型 | 描述 |
number | 数字(整数、小数、NaN(Not a Number)) |
string | 字符串,单双引('...')、双引号("...")、反引号(`...`)皆可,正常使用推荐单引号 |
boolean | 布尔。true,false |
null | 对象为空。 JavaScript 是大小写敏感的,因此 null、Null、NULL是完全不同的 |
undefined | 当声明的变量未初始化时,该变量的默认值是 undefined |
4. 函数
函数(function)是被设计用来执行特定任务的代码块,方便程序的封装复用。
匿名函数:是指一种没有名称的函数,由于它们没有名称,因此无法直接通过函数名来调用,而是通过变量或表达式来调用。
匿名函数定义可以通过两种方式:函数表达式 和 箭头函数。
-
示例一(函数表达式):
var add = function (a,b){ return a + b; }
-
示例二(箭头函数):
var add = (a,b) => { return a + b; }
5. JSON
JSON.stringify(...):作用就是将js对象,转换为json格式的字符串。
JSON.parse(...):作用就是将json格式的字符串,转为js对象。
6. JS DOM
DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
-
Document:整个文档对象
-
Element:元素对象
-
Attribute:属性对象
-
Text:文本对象
-
Comment:注释对象
-
根据CSS选择器来获取DOM元素,获取到匹配到的第一个元素:
document.querySelector('CSS选择器');
-
根据CSS选择器来获取DOM元素,获取匹配到的所有元素:
document.querySelectorAll('CSS选择器');
注意:获取到的所有元素,会封装到一个NodeList节点集合中,是一个伪数组(有长度、有索引的数组,但没有push、pop等数组方法)
2.事件监听
什么是事件呢?HTML事件是发生在HTML元素上的 “事情”,例如:
-
按钮被点击
-
鼠标移到元素上
-
输入框失去焦点
-
按下键盘按键等
而我们可以给这些事件绑定函数,当事件触发时,可以自动的完成对应的功能,这就是事件监听。
JS事件监听的语法
事件源.addEventListener('事件类型', 要执行的函数);
在上述的语法中包含三个要素:
-
事件源: 哪个dom元素触发了事件, 要获取dom元素
-
事件类型: 用什么方式触发, 比如: 鼠标单击 click, 鼠标经过 mouseover
-
要执行的函数: 要做什么事
addEventListener 与 on事件 区别:
-
onclick方式会被覆盖,addEventListener 方式可以绑定多次,拥有更多特性,推荐使用 addEventListener .
常用的事件属性:
js模块化
js应用js,用import、export,提高代码复用
import { printLog } from "./utils.js";
export function printLog(msg){
console.log(msg);
}
html应用js:
<!-- type="module" 模块化JS -->
<script src="./js/eventDemo.js" type="module"></script>
3.Vue
Vue(读音 /vjuː /, 类似于 view),是一款用于构建用户界面的渐进式的JavaScript框架(官方网站:https://cn.vuejs.org)
Vue指令
常见指令:
指令 | 作用 |
v-for | 列表渲染,遍历容器的元素或者对象的属性 |
v-bind | 为HTML标签绑定属性值,如设置 href , css样式等 |
v-if/v-else-if/v-else | 条件性的渲染某元素,判定为true时渲染,否则不渲染 |
v-show | 根据条件展示某元素,区别在于切换的是display属性的值 |
v-model | 在表单元素上创建双向数据绑定 |
v-on | 为HTML标签绑定事件 |
1.v-for
作用:列表渲染,遍历容器的元素或者对象的属性
语法:<tr v-for="(item,index) in items" :key="item.id">{{item}}</tr>
参数:
-
items 为遍历的数组
-
item 为遍历出来的元素
-
index 为索引/下标,从0开始 ;可以省略,省略index语法:
v-for = "item in items"
key:
-
作用:给元素添加的唯一标识,便于vue进行列表项的正确排序复用,提升渲染性能
-
推荐使用id作为key(唯一),不推荐使用index作为key(会变化,不对应)
注意:遍历的数组,必须在data中定义; 要想让哪个标签循环展示多次,就在哪个标签上使用 v-for 指令。
2.v-bind
作用:动态为HTML标签绑定属性值,如设置href,src,style样式等。
语法:v-bind:属性名="属性值"
<img v-bind:src="item.image" width="30px">
简化::属性名="属性值"
<img :src="item.image" width="30px">
注意:v-bind 所绑定的数据,必须在data中定义/或基于data中定义的数据而来。
3.v-if & v-show
作用:这两类指令,都是用来控制元素的显示与隐藏的
v-if:
-
语法:v-if="表达式",表达式值为 true,显示;false,隐藏
-
原理:基于条件判断,来控制创建或移除元素节点(条件渲染)
-
场景:要么显示,要么不显示,不频繁切换的场景
-
其它:可以配合 v-else-if / v-else 进行链式调用条件判断
v-show:
-
语法:v-show="表达式",表达式值为 true,显示;false,隐藏
-
原理:基于CSS样式display来控制显示与隐藏
-
场景:频繁切换显示隐藏的场景
4.v-model
-
作用:在表单元素上使用,双向数据绑定。可以方便的 获取 或 设置 表单项数据
-
语法:
v-model="变量名"
-
这里的双向数据绑定,是指 Vue中的数据变化,会影响视图中的数据展示 。 视图中的输入的数据变化,也会影响Vue的数据模型 。
注意:v-model 中绑定的变量,必须在data中定义。
5.v-on
作用:为html标签绑定事件(添加时间监听)
语法:
-
v-on:事件名="方法名"
-
简写为
@事件名="…"
-
<input type="button" value="点我一下试试" v-on:click="handle">
-
<input type="button" value="点我一下试试" @click="handle">
这里的handle函数,就需要在Vue应用实例创建的时候创建出来,在methods定义。
4.Ajax
全称Asynchronous JavaScript And XML,异步的JavaScript和XML。其作用有如下2点:
-
与服务器进行数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。
-
异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等。
请求方法别名
Axios还针对不同的请求,提供了别名方式的api,具体格式如下:
axios.请求方式(url [, data [, config]])
具体如下:
方法 | 描述 |
axios.get(url [, config]) | 发送get请求 |
axios.delete(url [, config]) | 发送delete请求 |
axios.post(url [, data[, config]]) | 发送post请求 |
axios.put(url [, data[, config]]) | 发送put请求 |
async、await
可以通过async、await可以让异步变为同步操作。async就是来声明一个异步方法,await是用来等待异步任务执行。
异步前:
search() {
//基于axios发送异步请求,请求https://web-server.itheima.net/emps/list,根据条件查询员工列表
axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`).then(res => {
this.empList = res.data.data
})
},
同步后:
async search() {
//基于axios发送异步请求,请求https://web-server.itheima.net/emps/list,根据条件查询员工列表
const result = await axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`);
this.empList = result.data.data;
},
5. Vue生命周期
vue的生命周期:指的是vue对象从创建到销毁的过程。
vue的生命周期包含8个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。其完整的生命周期如下图所示:
状态 | 阶段周期 |
beforeCreate | 创建前 |
created | 创建后 |
beforeMount | 挂载前 |
mounted | 挂载完成 |
beforeUpdate | 更新前 |
updated | 更新后 |
beforeDestroy | 销毁前 |
destroyed | 销毁后 |
钩子函数mounted,可以在页面加载完毕,就查询出员工列表,就可以在mounted钩子函数中,发送异步请求查询员工数据了