[JavaScript你真的以为这么简单吗]JavaScript高级

news2025/1/27 12:32:48

✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆 📃个人主页:Philosophy7的csdn博客
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞

⭐学习目标:
 -掌握script标签的具体用法
 -理解行内脚本与外部脚本的区别
 -理解文档模式对JavaScript的影响
 -ECMAScript的语法

文章目录

  • 一、JavaScript初体验
    • 1、script元素
      • 1.1 标签位置
      • 1.2 废弃的语法
    • 2.行内代码与外部文件
    • 3.文档模式
    • 4.小结
  • 二、ECMAScript语法
    • 1、语法
      • 1.1、区分大小写
      • 1.2、标识符
      • 1.3、注释
      • 1.4、严格模式
      • 1.5、语句
      • 1.6、关键字与保留字
    • 2、变量
      • 2.1、var关键字作用域
      • 2.2、let关键字
      • 2.3、const关键字
    • 3、数据类型
      • 3.1、深入字符串
        • 字符串的特点:
        • 字符出的转换:
        • 字符串的字面量
      • 3.2、Symbol 类型(了解即可)
      • 3.3、Object类型
    • 4.运算符
      • 1.算数运算符
        • 减法
        • 乘法
        • 除法
        • 取余
      • 2.赋值运算符
    • 5.语句
      • 1.if语句
      • 2.do-while
      • 3.while
      • 4.for
      • 5.for-in
      • 6.break-continue语句
      • 7.switch

在这里插入图片描述

一、JavaScript初体验

1、script元素

在HTML中插入JavaScript,我们使用的是script标签。这个元素是被网景公司创造出来的,并最早在Netscape Navigator 2 中实现的。后来,这个元素被正式加入到 HTML 规范。script元素有下列八个属性,分别为:

  • async : 可选。表示立即下载脚本,但不阻止其他页面的效果。只对外部脚本有效
  • charset : 可选。使用src属性指定的代码字符集。不常用,因为大多数浏览器不在乎。
  • crossorigin : 配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
  • integrity:可选。允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI, Subresource Integrity)。
  • language:废弃。最初用于表示代码块中的脚本语言(如"JavaScript"、“JavaScript 1.2” 或"VBScript")。大多数浏览器都会忽略这个属性,不应该再使用它。
  • src:可选。表示包含要执行的代码的外部文件。
  • type:可选。代替 language,表示代码块中脚本语言的内容类型(也称 MIME 类型)。按照惯 例,这个值始终都是"text/javascript",尽管"text/javascript"和"text/ecmascript" 都已经废弃了。

使用JavaScript方式有两种:

  1. HTML中直接使用

  2. 外部引入

    1. 使用 src 属性。这个属性的值是一个 URL,指向包含 JavaScript 代码的文件,比如:下面的例子

    2. 这个例子在页面中加载了demo.js

      注意:

      ​ 使用了 src 属性的标签中再包含其他 JavaScript 代码。如果两者都提供的话,则浏览器只会下载并执行脚本文件,从而忽略行内代码。

<body>
<script>
    //内部使用script
    alert("Hello World")
</script>

<!--2.外部引入Js文件-->
<script src="demo.js"/>
</body>

Js文件

document.write("Hello Alert")

浏览器的执行流程:

在有多个script标签时,浏览器会依照从上到下的顺序去解释并执行它们,前提是没有defer和async属性。

1.1 标签位置

我们可以看到有的script标签被放在head标签内,如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>JS初体验</title>
    <script src="demo.js"></script>
    <script src="demo.js"></script>
</head>
<body>
<script>
    //内部使用script
    alert("Hello World")
</script>

<!--2.外部引入Js文件-->
<script src="demo.js"/>
</body>
</html>

为什么这样做呢:

主要目的是把外部的 CSS 和 JavaScript 文件都集中放到一起。

不过,把所有 JavaScript 文件都放在里,也就意味着必须把所有 JavaScript 代码都下载、解析和解释完成后,才能开始渲 染页面(页面在浏览器解析到的起始标签时开始渲染)。

对于需要很多 JavaScript 的页面,这会 导致页面渲染的明显延迟,在此期间浏览器窗口完全空白。

为了解决这个问题,我们将script引用到了body标签内,这就表示浏览器在解释JS代码之前就完全渲染了整个页面。

1.2 废弃的语法

自 1995 年 Netscape 2 发布以来,所有浏览器都将 JavaScript 作为默认的编程语言。

type 属性使用 一个 MIME 类型字符串来标识script的内容 但 MIME 类型并没有跨浏览器标准化。

即使浏览器默 认使用 JavaScript,在某些情况下某个无效或无法识别的 MIME 类型也可能导致浏览器跳过(不执行) 相关代码。

在最初采用 script 元素时,它标志着开始走向与传统 HTML 解析不同的流程。对这个元素需要应 用特殊的解析规则,而这在不支持 JavaScript 的浏览器(特别是 Mosaic)中会导致问题。不支持的浏览器会把script元素的内容输出到页面中

Netscape 联合 Mosaic 拿出了一个解决方案,对不支持 JavaScript 的浏览器隐藏嵌入的 JavaScript 代 码。最终方案是把脚本代码包含在一个 HTML 注释中

<script>
<!--
	function sayHi(){
		document.write("Hi");
	}
-->
</script>

2.行内代码与外部文件

可以直接在 HTML 文件中嵌入 JavaScript 代码,但通常认为最佳实践是尽可能将 JavaScript 代 码放在外部文件中

使用外部文件的好处:

  • 可维护性。JavaScript 代码如果分散到很多 HTML 页面,会导致维护困难。而用一个目录保存 所有 JavaScript 文件,则更容易维护,这样开发者就可以独立于使用它们的 HTML 页面来编辑 代码。
  • 缓存。浏览器会根据特定的设置缓存所有外部链接的 JavaScript 文件,这意味着如果两个页面都 用到同一个文件,则该文件只需下载一次。这最终意味着页面加载更快
  • 适应未来。通过把 JavaScript 放到外部文件中,包含外部 JavaScript 文件的语法在 HTML 和 XHTML 中是一样的。

在配置浏览器请求外部文件时,要重点考虑的一点是它们会占用多少带宽。在 SPDY/HTTP2 中, 预请求的消耗已显著降低,以轻量、独立 JavaScript 组件形式向客户端送达脚本更具优势。

3.文档模式

IE5.5 发明了文档模式的概念,即可以使用 doctype 切换文档模式。

最初的文档模式有两种:混杂 模式(quirks mode)和标准模式(standards mode)。

前者让 IE 像 IE5 一样(支持一些非标准的特性), 后者让 IE 具有兼容标准的行为。

虽然这两种模式的主要区别只体现在通过 CSS 渲染的内容方面,但对 JavaScript 也有一些关联影响,或称为副作用。

4.小结

  • 要包含外部 JavaScript 文件,必须将 src 属性设置为要包含文件的 URL。文件可以跟网页在同 一台服务器上,也可以位于完全不同的域
  • 所有script元素会依照它们在网页中出现的次序被解释。在不使用 defer 和 async 属性的 情况下,包含在script元素中的代码必须严格按次序解释
  • 对不推迟执行的脚本,浏览器必须解释完位于script元素中的代码,才能继续渲染页面

在这里插入图片描述

二、ECMAScript语法

1、语法

ECMAScript很大程度上借鉴了Java中的语法,熟悉Java的小伙伴应该学习起来会非常的容易,并且熟悉,

而且JavaScript是一门弱类型语言,也就意味着语法的约束倒没有那么严格,可以轻松的掌握。

1.1、区分大小写

ECMAScript 中一切都区分大小写。无论是变量、函数名还是操作符,都区分大小写。

换句话说,变量 test 和变量 Test 是两个不同的变量。类似地,typeof 不能作为函数名,因
为它是一个关键字(后面会介绍)。但 Typeof 是一个完全有效的函数名。

<script>
    //这是两个不同的变量名
    var test = 1;
    var Test = 2;
</script>

1.2、标识符

所谓标识符,就是变量、函数、属性或函数参数的名称。标识符的规则:

  • 第一个字符必须是字母、下划线_ 或者美元符号($)
  • 剩下的字母可以是数字、字母、美元符号下划线

按照我们熟悉的方式,ECMAScript标识符也使用了驼峰命名的规则,即第一个单词首字母小写,后面的每个单词首字母大写。

例如:

  • firstName
  • selectStudent
  • myMoney

虽然这些不做强制要求,但是为了增加我们代码的可读性,还是建议如此的去命名。

关键字、保留字、布尔类型、null不能作为标识符

1.3、注释

ECMAScript和Java中的注释一致

<script>
	//这是单行注释 双斜杠
	/*
		这是多行注释
	*/
</script>

1.4、严格模式

ECMAScript 5 增加了严格模式(strict mode)的概念。严格模式是一种不同的 JavaScript 解析和执
行模型,ECMAScript 3 的一些不规范写法在这种模式下会被处理,对于不安全的活动将抛出错误。

<script>
  	//在开头就采用严格模式
    "use strict"
    //这是两个不同的变量名
    var test = 1;
    var Test = 2;
</script>

1.5、语句

ECMAScript 中的语句以分号结尾。

加分号也便于开发者通过删除空行来压缩代码(如果没有结尾的分号,只删除空行,则会导致语法错误)。

加分号也有助于在某些情况下提升性能,因为解析器会尝试在合适的位置补上分号以纠正语法错误。

<script>
    var a = 10 //没有分号 不报错 但不推荐
    var b = 5; //推荐加上分号
</script>

1.6、关键字与保留字

这些关键字,有着独特的作用,因此,按照规定关键字和保留字不能作为标识符或属性名。

有关键字如下:

breakdointypeof
caseelseinstanceofvar
catchexportnewvoid
classextendsreturnwhild
constfinallysuperwith
continueforswitchyield
debuggerfunctionthisthrow

2、变量

ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。

有 3 个关键字可以声明变量:var、const 和 let。

其中,var 在ECMAScript 的所有版本中都可以使用,而 const 和 let 只能在 ECMAScript 6 及更晚的版本中使用。

<script>
    //1.定义变量的语法: var 变量名 = 初始化值;
    var name = "张三";

    //注意:在我们不初始化的时候,值会显示undefined 
    var age;
    alert(age)
</script>

2.1、var关键字作用域

定义变量格式: var 变量名 = 初始化值

<script>
    //1.定义一个函数
    function test(){
    	//在函数内部使用var修饰变量,意味着该变量会在函数退出时被销毁。
        var a  = 10; //局部变量
    }
    test();
    consolo.log(a) //打印到控制台 报错:Uncaught ReferenceError: consolo is not defined
</script>

当我们省略var关键字在函数内部定义变量,这个变量就是全局变量

去掉之前的var关键字定义变量,然后调用一次test()方法 我们就可以访问到变量a中的值了;

注意: 虽然通过省略var操作符定义全局变量,但不推荐这么操作。

因为在严格模式下,像这样没有初始化值,就会抛出异常 ReferenceError: a is not defined

<script>
 //严格模式
"use strict"
 //1.变量a
 a;
console.log(a)
</script>

2.2、let关键字

let 跟 var 的作用差不多,但有着非常重要的区别。最明显的区别是,let 声明的范围是块作用域, 而 var 声明的范围是函数作用域。

下面演示区别:

使用let修饰的变量age不能被if块外部访问,因为它的作用域仅限于内部。块作用域属于函数作用域的子集,因此适用于var的作用域限制同样也适用于let。

简单来说就是:

自上向下,可兼容,自下向上不可能。

<script>
    if (true){
        var name = "张三";
        document.write(name) //张三
    }
    document.write(name) //张三

    if (true){
        //let修饰
        let age = 20;
        document.write(age) //20
    }
    document.write(age) //没有访问到age
</script>

2.3、const关键字

const 的行为与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const 声明的变量会导致运行时

错误。

<script>
    const age = 26;
    age = 36;  //TypeError

    //不允许重复声明
    const name = "s";
    const name = "zhangsan"; // Identifier 'name' has already been declared

    //const作用域也是块
    if (true){
        const a = 10;
    }
    console.log(a) //无法访问到变量a并抛出异常

</script>

3、数据类型

ECMA中的数据类型有6种,分别为:

  • undefined : 值未定义的
  • Null : 表示空
  • Boolean : 布尔值,true false
  • Number : 数值
  • String : 字符串
  • Symbol : 值是符号

注意:

undefined

即使未初始化的变量会被自动赋予 undefined 值,但我们仍然建议在声明变量的 同时进行初始化。这样,当 typeof 返回"undefined"时,你就会知道那是因为给定的变 量尚未声明,而不是声明了但未初始化。

数值转换:

3 个函数可以将非数值转换为数值:Number()、parseInt()和 parseFloat()。

后两个函数主要用于将字符串转换为数值。

  • Number()函数基于如下规则转换:
  • 布尔值 ture == 1 false == 2
  • null 返回 0
  • undifined 返回 NaN
  • 字符串的规则较多:
    • 如果字符串包含数值字符 包括数组前面带-号的情况,则 转换为十进制数字
    • 如果是空字符串 则返回 0
    • 如果字符串包含浮点数值 则会转换为响应的浮点数
    • 如果字符串是一个十六进制的格式 就会转换为十进制整数值
    • 如果上述情况都不存在 则返回NaN
<script>
    var flag = true //true == 1  false == 2
    document.write(Number(flag))

    var num = 10; //数值直接返回
    document.write(Number(num) +  "</br>")

    var age; //undefined 返回 NaN
    document.write(Number(age)) //返回NaN


</script>
<script>
    //1.使用typeof 检查数据类型
    var a = "张三";
    document.write(typeof(a)) //string
    document.write(typeof 30) //number

    //2.演示undefined
    let b;
    document.write(b + "</br>")

    //未声明变量的时候也会检测出undefined
    document.write(typeof num1)

    //3.Null 表示空对象指针
    var car = null;
    document.write(typeof car) //返回的是一个对象object

    //4.Boolean
    var flag = true

    //5.Number -- 有趣的数据类型
    var num1 = 10; //整数
    var num2 = 0xA; //十六进制10
    /*
        存储浮点值使用的内存空间是存储整数值的两倍,
        所以 ECMAScript 总是想方设法把值转换为整数。
     */
    var num3 = 1.1; //浮点值
    var num4 = .1; //有效 但不推荐

    /*
        值的范围:
            内存是有限制的,ECMAScript 可以表示的最小数值保存在 Number.MIN_VALUE
            最大数值 Number.MAX_VALUE
     */
    var result  = Number.MIN_VALUE + Number.MAX_VALUE
    document.write(result) //1.7976931348623157e+308

    //NaN not a number 不是一个数字
    document.write(0/0) //如果分子或分母为0 就会返回NAN

    //String 字符串
    var name2 = "法外狂徒张三";

</script>

3.1、深入字符串

字符串的特点:

​ 不可变的,一旦创建,它们的值就无法改变。要修改的话,必须销毁原来的字符串。

字符出的转换:

​ 有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的 toString()方法。这个方法唯 一的用途就是返回当前值的字符串等价物。比如:

<script>
	var age = 20;
	var newString = age.toString(); //字符串20
	document.write(typeof(newString))
	//除了null 和 undefined没有tostring方法其他数据类型都有
</script>

字符串的字面量

字面量含义
\n换行
\t制表符
\b退格
\r回车
\f换页
\\\ 反斜杠
单引号

3.2、Symbol 类型(了解即可)

Symbol(符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。

符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

尽管听起来跟私有属性有点类似,但符号并不是为了提供私有属性的行为才增加的(尤其是因为 Object API 提供了方法,可以更方便地发现符号属性)。

相反,符号就是用来创建唯一记号,进而用作非 字符串形式的对象属性。

3.3、Object类型

在后续的对象会有更深的讲解,在这里介绍对象的基本用法,以及定义格式

<script>
    //创建一个对象
    var student = Object();

    //如果没有参数的话 可以胜率括号
    var student = Object;
    
</script>

每个Object实例都有如下属性和方法:

  • constructor:用于创建当前对象的函数。在前面的例子中,这个属性的值就是 Object() 函数
  • hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属 性。要检查的属性名必须是字符串(如 o.hasOwnProperty(“name”))或符号。
  • isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型。(后续将详细介绍 原型。)
  • propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用(本章稍后讨 论的)for-in 语句枚举。与 hasOwnProperty()一样,属性名必须是字符串。
  • toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相同。 因为在 ECMAScript 中 Object 是所有对象的基类,所以任何对象都有这些属性和方法。在接下来我们将介绍对象间的继承机制。

4.运算符

1.算数运算符

算数运算符用于对数字执行算数运算:

运算符描述
+加法
-减法
*乘法
/除法
%取模(余数)
++递加
递减
<script>
    //加法运算
    var a = 10;
    var b = 5;
    var result = a + b; //相加 -- 15
    alert(result)
</script>

减法

<script>
    //减法操作
    var a = 10;
    var b = 5;
    var result = a - b; //相减 -- 5
</script>

乘法

<script>
    //乘法操作
    var a = 10;
    var b = 5;
    var result = a * b; //相乘 -- 50
</script>

除法

<script>
    //除法操作
    var a = 10;
    var b = 5;
    var result = a / b; //2
</script>

取余

<script>
    //取余操作
    var a = 10;
    var b = 5;
    var result = a % b; // 10 除以 5 == 商为2 余数为0 所以输出0
    alert(result)
</script>

介绍完了算术运算的常用操作,在这介绍一下优先级。

在小学我们就知道加减乘除的优先级关系了 : 先乘除,后加减

括号括起来的优先级是最高的

2.赋值运算符

运算符例子等同于
=x = yx = y
+=x += yx = x + y
-=x -= yx = x - y
*=x *= yx = x * y
/=x /= yx = x / y
%=x %= yx = x % y
<<=x <<= yx = x << y
>>=x >>= yx = x >> y
>>>=x >>>= yx = x >>> y
&=x &= yx = x & y
^=x ^= yx = x ^ y
|=x |= yx = x | y
**=x **= yx = x ** y

这里就不一一演示了,大家可以亲自去测试。

5.语句

ECMA-262 描述了一些语句(也称为流控制语句),而 ECMAScript 中的大部分语法都体现在语句中。

我们首先来看 ECMA 是什么。ECMA,读音类似“埃科妈”,是欧洲计算机制造商协会(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。

后面的-xxx数字 代表的就是ECMAScript采用的标准

1.if语句

条件判断语句,在我们的代码中会多次频繁的出现,现在就来介绍它们的语法以及基本使用。

定义格式:if (条件){

​ 返回true 执行的代码块

}else{

​ 返回false 执行的代码块

}

<script>
    var a = 10;
    var b = 20;
    if (a > b){
        document.write("确实大于B")
    }else{
        document.write("a 怎么能大于 B ?")
    }
</script>

2.do-while

这是一种后测试语句,也就是说循环体中的代码执行完之后才会进行判断求值。

下述这个例子 只要a < 10 就会一直循环。 a从0开始 每次递增2

<script>
    var a = 0
    do {
        a += 2
    }while (a < 10);
</script>

3.while

有后测试语句,就有先测试语句,while就是先测试语句

<script>
    var a = 0;
    while (a < 10){
        a += 2;
    }
    //每次循环递增2 只要a不小于10了 循环就结束了
</script>

4.for

for 语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式。

与Java中的for循环写法几乎保持一致。

<script>
    for (var i = 0; i < 10; i++){
        document.write(i + "</br>")
    }
</script>

5.for-in

这是一种严格迭代语句,用于枚举对象中。

//循环显示了BOM对象window里面的所有属性 每次都会给propName变量赋值 直到window对象所有属性遍历完之后 循环就结束了
for (const propName in window) {
    document.write(propName);
}

6.break-continue语句

break语句用于立即退出循环,而continue语句也一样。

但是continue会跳过本次循环 执行下一次的循环

<script>
    for (var i = 0; i < 10; i++){
        if (i == 5){
            break;
        }
        document.write(i + "</br>") //当 i = 5的时候 这个循环就终止了 被break语句所终止。
    }
</script>
<script>
    for (var i = 0; i < 10; i++){
        if (i == 5){
            continue;
        }
        document.write(i + "</br>") //当 i = 5的时候 跳过本次循环,继续判断下一次是否满足条件
    }
</script>

7.switch

switch语句跟if语句紧密相连。

基本语句如下:

<script>
    var a = 10;
    switch (a){
        case 5:
            console.log("5");
            break;
        case 10:
            console.log("10");
            break;
    }
</script>

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

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

相关文章

three.js中坐标系转换以及camera的position、lookAt与up属性理解

为了更好的理解camera的position、lookAt与up属性&#xff0c;文章最开始我们先来阐述three.js的坐标系转换的概念。 1.监听event的事件获得屏幕坐标 文章的最开始首先讨论在哪里进行点击事件的监听的问题&#xff0c;当鼠标触发点击事件时&#xff0c;event会输出点击位置相对…

使用JS监听键盘按下事件

事件说明 我们将键盘按下后事件的所有属性和方法打印出来&#xff08;这里以按下1为例&#xff09; document.onkeydown function(event){console.log(event);} 这里面有几个需要注意的属性 key:按下按键的名称 keyCode:按下按键的键码 altKey、ctrlKey、shiftKey&#xf…

Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(项目演示、涉及知识点、源码分享)

基于 Vue3.x Vant UI 的多功能记账本&#xff08;一&#xff09; 文章目录基于 Vue3.x Vant UI 的多功能记账本&#xff08;一&#xff09;Vue3.x 实现多功能记账本1、前言2、项目演示3、涉及知识点4、写到最后&#xff08;附源码&#xff09;Vue3.x 实现多功能记账本 1、前…

文件在线浏览之微软office在线预览及隐藏的坑和其他更优解决办法

一 微软也已经免费提供在线版本office预览啦 https://view.officeapps.live.com/op/view.aspx?srcURLsrc后面的URL是网上能访问到的文件地址&#xff0c;比如http://abc.com/file/demo.xlsx 直接访问&#xff1a;https://view.officeapps.live.com/op/view.aspx?srchttp:/…

js模板字符串

js模板字符串模板字符串&#xff08;模板字面量&#xff09;在模板字符串中插入变量在模板字符串中插入表达式模板字符串中可以换行模板字符串中可以调用函数模板字符串支持嵌套使用模板字符串&#xff08;模板字面量&#xff09; ES6 中引入了模板字符串&#xff0c;让我们省…

Vue3 + vite 创建项目

项目创建 vite的介绍 首先要想使用vite来创建一个vue项目&#xff0c;要把vue脚手架升级成为5.0.1版本&#xff0c;但是有一个很大的缺陷&#xff0c;就是升级过后不会再向下兼容vue2的语法创建项目的方式 脚手架升级为5.0.1版本&#xff1a;cnpm install vuenext 或 yarn gl…

Redux最新实践指南之Redux-Toolkit

前言 redux-toolkit是目前redux官方推荐的编写redux逻辑的方法&#xff0c;针对redux的创建store繁琐、样板代码太多、依赖外部库等问题进行了优化&#xff0c;官方总结了四个特点是简易的/有想法的/强劲的/高效的&#xff0c;总结来看&#xff0c;就是更加的方便简单了。 从官…

vue-treeselect 的基本使用

官网地址&#xff1a;Vue-Treeselecthttps://vue-treeselect.js.org/公司用 若依 搞了一个速成项目&#xff0c;若依是一个免费开源的前后端项目&#xff0c;感兴趣的朋友百度。 在里边接触到了一个神奇的东西 &#xff1a;vue-treeselect&#xff0c;用起来真的是一言难尽&am…

uniapp全局弹窗(APP端)

uniapp自带的提示框不符合我们的要求&#xff0c;需要自己写一个提示框&#xff0c;且全局通用。 解决思路: 使用 plus.nativeObj 来绘制窗口以及事件监听。 官方文档 1. 首先创建一个整个屏幕的控件&#xff0c;作为一个父容器。 此时还看不到任何东西 let screenHeight…

牛客网前端刷题(二)

还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦! 赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。 面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏…

微信小程序之开发遇到 does not have a method “xxxx“ to handle event “tap“ 问题的解决方案【已解决】

今天在开发一个小功能&#xff0c;copy了之前写的代码&#xff0c;但是在实现功能时&#xff0c;出现了如下问题&#xff1a; 先在这简单总结一下解决方案&#xff1a; 在调用方法时&#xff0c;在" "中前后多加了空格&#xff1b;在 js 中没有定义该方法&#xff1…

纯前端导出表格

前端 excel 表格导出 我们习惯了后端去处理表格&#xff0c;直接接口返回 &#xff0c;那前端如何轻松的导出表格呢&#xff1f; 文章目录前端 excel 表格导出Ⅰ. 通过 js-xlsx ⭐⭐⭐⭐⭐安装① vue2 中使用② vue3 中使用③ react 中使用Ⅲ. 通过 vue-json-excel ⭐⭐安装使…

SpringBoot--Filter过滤器(一)

一.了解过滤器Filter 过滤器: Filter, 是 Servlet 技术中最实用的技术。过滤器是处于客户端和服务器之间的一个过滤网,可以过滤掉一些不符合要求的请求常见场景: Session 校验判断用户权限不符合设定条件&#xff0c;则会被重定向特殊的地址或者设定的响应过滤敏感词汇设置编…

一天撸一个财务APP系统【安卓端+前端+后端】

昨天有个粉丝朋友也想学开发Web和小程序、安卓&#xff0c;问可以在大学学会吗&#xff1f; 在学校学到的东西真的有限&#xff1a; 在很多的高校&#xff0c;有一些教授是学院派的&#xff0c;他们没有做过多少开发工作&#xff0c;上课就是照本宣科&#xff0c;讲的知识点都…

Vue打包优化篇-CDN加速

优化原因 在没有使用cdn加速之前打包后数据如下&#xff0c;可以看出element-ui、vue、vuex、vue-router这些依赖都打进chunk-vendors.js中导致体积很大&#xff0c;假设再来很多依赖项是不是更大&#xff0c;同时也会影响单页面应用首屏加载速度&#xff0c;所以这里采用一种打…

Vue的组件化编程

非单文件组件 注册局部组件 此时上面书写的组件都是局部组件,每一个vue实例要想使用上面的组件时都需要在components中进行注册才可以使用,此时如果再创建一个Vue实例vms,这个实例不在components中注册就直接使用组件会产生什么变化: 此时控制台报错 ‘是否正确注册了组件&a…

function 函数

一、函数的基本注意事项 function函数的名字也是一个标识符&#xff0c;通过关键字function申明一个函数 function 函数名(){ 代码块 } 二、函数基本用法 1、形参与实参 1、形参与实参可以有无数个&#xff0c;实参按照顺序赋值给形参&#xff1b; 2、实参个数不一定要与实…

web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)

系列文章目录 内容参考链接Vue基本使用Vue的基本使用&#xff08;一文掌握Vue最基础的知识点&#xff09;Vue通信和高级特性Vue组件间的通信及高级特性&#xff08;多种组件间的通信、自定义v-model、nextTick、插槽&#xff09;Vue高级特性Vue的高级特性&#xff08;动态组件…

axios发post请求,后端接收不到参数的原因及解决

做分页数据时&#xff0c;使用vue3 axios发post请求&#xff0c;后端服务调用成功但数据没有根据参数动态变化&#xff0c;换为js ajax也是同样错误。 后来是后端没有接收到参数。 网上看了资料&#xff0c;原因&#xff1a; 使⽤axios请求数据时&#xff0c;我们的 …

Module Federation在vue3中使用vue2的组件

前言&#xff1a; 备注&#xff1a;本文基于对webpack Module Federation有一定了解的情况下 一般情况下使用模块联邦都是会使用相同的版本&#xff0c;如Vue2的组件时在Vue2中使用&#xff0c;但我为什么会在Vue3项目中去使用Vue2的组件呢&#xff0c;其实是因为历史原因。好…