前端-JavaScript简介JavaScript模块化 - 努力-

news/2025/10/1 11:28:00/文章来源:https://www.cnblogs.com/kongsq/p/19122254

一、JavaScript介绍

 


  我们已经学习了HTML、CSS的基础内容,我们知道HTML负责网页的结构,而CSS负责的是网页的表现。 而要想让网页具备一定的交互效果,具有一定的动作行为,还得通过JavaScript来实现。那今天,我们就来学习JavaScript,这门语言会让我们的页面能够和用户进行交互。

  那什么是JavaScript呢 ?

  JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,实现人机交互效果。JavaScript 和 Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。

  组成:

    ECMAScript: 规定了JS基础语法核心知识,包括变量、数据类型、流程控制、函数、对象等。

    BOM:浏览器对象模型,用于操作浏览器本身,如:页面弹窗、地址栏操作、关闭窗口等。

    DOM:文档对象模型,用于操作HTML文档,如:改变标签内的内容、改变标签内字体样式等。

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

二、开发工具


  我们需要学习一款前端专业的开发工具VS Code。

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

  官网: https://code.visualstudio.com

三、 引入方式


  同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式:

  第一种方式:内部脚本,将JS代码定义在HTML页面中。

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

 

<body><!-- 页面内容 --><script>alert("Hello World");</script>
</body>

 


  第二种方式:外部脚本, 将JS代码定义在外部 JS文件中,然后引入到 HTML页面中

  1.外部JS文件中,只包含JS代码,不包含<script>标签
  2.引入外部js的<script>标签,必须是双标签
例子:

 

<script src="js/demo.js"></script>

 


四、JS模块化


  所谓JS模块化,指的是JS提供的一种,将JavaScript程序拆分位若干个可按需导入的单独模块的机制。

  比如,我们前面实现的表单校验的案例,我们是可以把JS代码单独的抽取到一个js文件中,然后在html中引入对应的js文件即可,这样做,便于管理、提升代码的复用性。具体操作如下:

 

  4.1 在html中,引入JS文件


  在html中,引入JS文件,可以直接使用 <script src=".."></script> 来引入。
  step1. 定义一个js文件,命名位 check.js

 

 

//在鼠标离开焦点时, 校验输入框内容的长度 .
//校验用户名
function checkUsername(){ //true, 合法; false, 不合法;let flag = true;let usernameValue = document.querySelector('#username').value;let errMsg = "";if(!/^\w{4,16}$/.test(usernameValue)){errMsg = "用户名不合法";flag = false;}document.querySelector('#name_msg').innerHTML = errMsg;return flag;
}
document.querySelector('#username').addEventListener('blur', checkUsername)//校验密码
function checkPhone(){ //true, 合法; false, 不合法;let flag = true;let phoneValue = document.querySelector('#phone').value;let errMsg = "";if(!/^1[3-9]\d{9}$/.test(phoneValue)){errMsg = "手机号不合法";flag = false;}document.querySelector('#phone_msg').innerHTML = errMsg;return flag;
}
document.querySelector('#phone').addEventListener('blur', checkPhone)//在表单提交时, 判断是否所有的输入框输入的值合法 .
document.querySelector('form').addEventListener('submit', (e)=> {if(!checkUsername() || !checkPhone()){alert('表单校验失败, 不能提交表单')e.preventDefault();}
})

 

  step2. 在html文件中,如果需要用到上述的JS代码,直接在 script 标签中引入该js即可。

 

 

<!DOCTYPE html>
<html><head><title>表单</title><style>label {display: inline-block;width: 80px;text-align: right;margin-right: 10px;}input {width: 250px;padding: 10px;border: 1px solid #ccc;border-radius: 5px;margin-bottom: 10px;}.btn {width: 150px;}.tip {color: #ff0000;font-size: 12px;}</style>
</head><body><div><h1>用户注册</h1><form><label for="username">用户名:</label><input type="text" id="username" name="username" placeholder="用户名不能为空且长度在4-16个字符"><span class="tip" id="name_msg"></span> <br><label for="phone">手机号:</label><input type="text" id="phone" name="phone" placeholder="手机号不能为空且长度为11位"><span class="tip" id="phone_msg"></span><br><input type="submit" value="提交" class="btn"><input type="reset" value="重置" class="btn"></form></div><script src="./js/check.js"></script>
</body></html>

 

  OK,那这是在html中,引入JS文件,可以直接使用 <script src=".."></script> 来引入。 那如果是在一个js文件中,我需要用到另外一个js文件中的方法呢。 那此时该如何实现呢 ?

  4.2 在一个js文件中使用另外一个js文件中的方法


  那在JS中,就给我们提供了模块化导入、导出的操作,我们可以通过 export 关键字,来导出模块。 然后在别的需要用到的地方,通过 import 关键字导入模块。

  如下所示:

  step1. checkFn.js 中定义是校验方法

  在变量前面加上 export 代表,我们要将该变量、函数、对象导出为一个模块。别的js中要想使用,就可以 import 导入了。

 

export function checkUsername(){ //true, 合法; false, 不合法;let flag = true;let usernameValue = document.querySelector('#username').value;let errMsg = "";if(!/^\w{4,16}$/.test(usernameValue)){errMsg = "用户名不合法";flag = false;}document.querySelector('#name_msg').innerHTML = errMsg;return flag;
}export function checkPhone(){ //true, 合法; false, 不合法;let flag = true;let phoneValue = document.querySelector('#phone').value;let errMsg = "";if(!/^1[3-9]\d{9}$/.test(phoneValue)){errMsg = "手机号不合法";flag = false;}document.querySelector('#phone_msg').innerHTML = errMsg;return flag;
}

 

 

  step2. check.js 中定义的是校验的事件监听

 

那在check.js中需要用到 checkUsername、checkPhone函数,就可以通过 import 关键字将其导入进来。

 

import {checkUsername, checkPhone} from './checkFn.js'//1. 校验用户名 - 失去焦点时校验 - blur
document.querySelector('#username').addEventListener('blur', checkUsername)//2. 校验手机号
document.querySelector('#phone').addEventListener('blur', checkPhone)//3. 表单提交的时候 - 校验整个表单 - submit
document.querySelector('form').addEventListener('submit', function(event){//判断用户名及手机号是否合法, 如果不合法, 提示错误信息;if(!checkUsername() || !checkPhone()){alert('表单数据不合法');//组织表单默认的提交事件event.preventDefault();//组织事件的默认行为
    }
})

 

 

  step3. xxx.html 中就是html的基础代码样式

注意:如果我们使用到了 export, import 这种模块化的js,那在通过 <script src="..."></script> 在引入JS文件时,必须指定 type="module" 属性,表名我们使用的是模块化的JS。 如下所示:

 

<!DOCTYPE html>
<html><head><title>表单</title><style>label {display: inline-block;width: 80px;text-align: right;margin-right: 10px;}input {width: 250px;padding: 10px;border: 1px solid #ccc;border-radius: 5px;margin-bottom: 10px;}.btn {width: 150px;}.tip {color: #ff0000;font-size: 12px;}</style>
</head><body><div><h1>用户注册</h1><form><label for="username">用户名:</label><input type="text" id="username" name="username" placeholder="用户名不能为空且长度在4-16个字符"><span class="tip" id="name_msg"></span> <br><label for="phone">手机号:</label><input type="text" id="phone" name="phone" placeholder="手机号不能为空且长度为11位"><span class="tip" id="phone_msg"></span><br><input type="submit" value="提交" class="btn"><input type="reset" value="重置" class="btn"></form></div><!-- 模块化JS引入方式,需要指定type="module" --><script type="module" src="./js/check.js"></script>
</body></html>

 

 

 

注意:如果使用模块的js,使用了 export,import ,要保证我们的代码,一定是在服务器端运行,而不是在磁盘中直接打开。 所以运行的时候,在VSCode中已经要右键选择 “Open with Live Server”。

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

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

相关文章

基本地址变换机构

设页面大小为L,逻辑地址A到物理地址E的变换过程如下 1.计算页号P和页内偏移量W 2.比较页号P和页表大小M如果P>=M则会发生越界中断,否则继续执行。(页号从0开始,页表长度至少为1,因此P=M也会越界) 3.页表中页号…

电子商务网站建设 以为例建设银行官方网站首页个人登录

有许多开源和免费的敏捷管理工具可供敏捷团队使用&#xff0c;以支持他们的敏捷项目管理和开发需求。以下是一些常见的开源/免费敏捷管理工具&#xff1a; 免费敏捷工具 以下是一些免费的敏捷工具&#xff0c;这些工具提供了一定的功能&#xff0c;可用于支持敏捷项目管理和开…

【APK安全】组件安全核心风险与防御指南 - 详解

【APK安全】组件安全核心风险与防御指南 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

自己电脑做局域网网站服务器专门做app的公司有哪些

计算机常识 计算机如何存储数据 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法 实例&#xff1a; // 在java 中 可以使用不同…

中山网站建点东营招标建设信息网

OSPF NSSA实验简述 1、OSPF NSSA区域配置 为解决末端区域维护过大LSDB带来的问题&#xff0c;通过配置stub 区域或totally stub区域可以解决&#xff0c;但是他们都不能引入外部路由场景。 No so stuby area &#xff08;区域&#xff09;NSSA 可以引入外部路由&#xff0c;支持…

书籍网站建设的目的360网站制作潍坊

文章目录1. 题目2. 解题1. 题目 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如&#xff0c;序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序列&#xff0c;可以通过删除数组中的某些元素…

长沙做企业网站的公司wordpress加载谷歌

一、梯度消失与爆炸 在神经网络中&#xff0c;梯度消失和梯度爆炸是训练过程中常见的问题。 梯度消失指的是在反向传播过程中&#xff0c;梯度逐渐变小&#xff0c;导致较远处的层对参数的更新影响较小甚至无法更新。这通常发生在深层网络中&#xff0c;特别是使用某些激活函…

gitee 使用安装教程

一、下载方式 1.官网下载https://git-scm.com/downloads 2.淘宝镜像下载https://registry.npmmirror.com/binary.html?path=git-for-windows/2.1安装 1.点击刚刚下载的安装包,然后点击next 2.根据自己的情况选择,一…

2025工业网线厂家权威推荐榜:千兆/拖链/高柔/网线/六类/超五类/6类/超5类/千兆/超六类/8芯/4芯/成品/相机/视觉数据工业网线高强屏蔽与稳定传输实力之选

在工业4.0和智能制造快速发展的今天,工业网络作为数字基础设施的核心组成部分,其稳定性与可靠性直接关系到生产系统的运行效率。工业网线作为网络传输的物理载体,不仅需要具备优异的信号传输性能,更要能在恶劣的工…

VisualMimic——基于视觉的人形行走-操作控制:低层策略负责平衡控制且跟踪高层下发的指令、高层策略则基于自我中心视觉输入生成任务跟踪指令 - 实践

VisualMimic——基于视觉的人形行走-操作控制:低层策略负责平衡控制且跟踪高层下发的指令、高层策略则基于自我中心视觉输入生成任务跟踪指令 - 实践pre { white-space: pre !important; word-wrap: normal !importan…

g4560做网站服务器网络舆情的应对及处理

用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; ["…

套用模板网站哪里有做网站培训的

题目 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。 实现 MyHashMap 类&#xff1a; MyHashMap() 用空映射初始化对象 void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#xff0c;则更新…

FPGA强化-简易频率计 - 实践

FPGA强化-简易频率计 - 实践2025-10-01 11:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

基本分页存储管理的基本概念

将内存分为一个个大小相等的分区,每个分区就是一个页框(页框=页帧=内存块=物理快=物理页面)每一个页框都有一个编号--页框号,页框号从0开始。 将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为…

无锡网站制作哪里有国家高新技术企业申报时间

最近在做docker容器的时候遇到了问题&#xff0c;安装的GD库没有JPEG支持&#xff0c;因为项目用到了绘图技术&#xff0c;这个支持必不可少。要解决这个问题也很简单&#xff1a; 安装jpeg支持&#xff0c;重新编译gd库&#xff0c;生成gd.so文件&#xff0c;重新加载gd库扩展…

设计企业的网站个人网页设计硬件需求

Spectral Python (SPy) 是一个纯 Python 模块&#xff0c;用于处理高光谱图像数据。它具有读取、显示、操作和分类高光谱图像的功能。 SPy 需要 Python 并依赖于其他几个免费提供的 Python 模块。在安装 SPy 之前&#xff0c;您应该确保满足其依赖项。虽然您可以仅使用 Python…

luogu P6503 [COCI 2010/2011 #3] DIFERENCIJA

题目大意 题面 让我们求一个序列中的 \[\sum^{n}_{i=1}\sum^{n}_{j=i}(\max_{i\leq k\leq j} a_k-\min_{i\leq k \leq j} a_k) \]Sol 由于暴力是\(O(n^2)\)的,所以我们需要优化 我们先看暴力的流程:每次选取一段区间求…

做网站一个月能挣多少钱洛阳做网站哪家便宜

1. 适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式&#xff0c;旨在将一个类的接口转换成客户端所期待的另一个接口&#xff0c;从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通常用于需要复用现有类但其接口与要求不匹配的情况。 1.1…

网络公司网站建设服务dw软件免费安装

候选基因如何分析&#xff1f; 通常情况下关联分析会得到一大堆候选基因&#xff0c;总不可能每个都有用&#xff0c;因此需要对候选基因进行深一步分析&#xff0c;本篇笔记分享一下群体遗传学研究中GWAS候选位点与候选基因的筛选思路。主要的方式包括单基因关联分析、连锁程度…

2025宅基地纠纷律所权威推荐榜:专业调解与胜诉保障实力之选

宅基地纠纷作为农村土地争议的重要类型,近年来呈现持续增长态势。随着城乡一体化进程加速和土地资源价值提升,涉及宅基地使用权确认、边界划分、拆迁补偿等案件数量显著上升。这类纠纷往往牵涉农民切身利益,法律关系…