JavaScript- 1.1 行内、内部、外部三种引用方式

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。

HTML和CSS系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看!

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励! 

系列文章目录 

JavaScript- 1.1 行内、内部、外部三种引用方式

JavaScript- 1.2 ECMA基本语法和控制流

JavaScript- 1.3 DOM对页面内容进行操作

JavaScript- 1.4 BOM对浏览器进行操作 

JavaScript- 1.5 数据类型+变量+运算符

JavaScript- 1.6 基本控制流

JavaScript- 2.1 系统函数和自定义函数

JavaScript- 2.2 内置对象MATH

JavaScript- 2.3 内置对象String

JavaScript- 2.4 内置对象Date

JavaScript- 2.5 内置对象ARRAY 

JavaScript- 2.6 数组应用 

JavaScript- 2.7 二维数组

JavaScript- 3.1 定时器函数 window.settimeout & window.settinterval 

JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面 

JavaScript- 4.1 DOM-document对象 

JavaScript- 4.2  DOM--定位元素

JavaScript- 4.3  轮播图实现指南


目录

系列文章目录 

前言

一、HTML、CSS 和 JavaScript区别

1. HTML(超文本标记语言)

2. CSS(层叠样式表)

3. JavaScript(JS)

4、三者的区别总结

5、协作关系

6、为什么需要三者分离?

7、总结

二、行内(内联)、内部(内嵌)和外部详解

1. 行内(内联)JavaScript

2. 内部(内嵌)JavaScript

3. 外部JavaScript

4、三种方式的对比

5、最佳实践

 三、代码实践

总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

一、HTML、CSS 和 JavaScript区别

HTML、CSS 和 JavaScript 是现代网页开发的三大核心技术,它们各自承担不同的职责,共同协作构建完整的网页。以下是它们的详细区别和功能说明:

1. HTML(超文本标记语言)

定义
HTML 是网页的结构框架,用于定义网页的内容和语义(如标题、段落、图片、链接等)。
特点

  • 标记语言:通过标签(如 <p><div>)描述内容结构。
  • 静态内容:仅定义页面显示什么,不控制外观或行为。
  • 基础功能:所有网页的起点,浏览器解析 HTML 渲染页面。

2. CSS(层叠样式表)

定义
CSS 是网页的样式设计语言,用于控制 HTML 元素的布局、颜色、字体等视觉表现。
特点

  • 样式控制:通过选择器(如 p.class)和属性(如 colorfont-size)美化页面。
  • 分离原则:将内容(HTML)与样式(CSS)分离,便于维护。
  • 响应式设计:支持媒体查询,适配不同设备(如手机、电脑)。

3. JavaScript(JS)

定义
JavaScript 是网页的交互逻辑语言,用于实现动态功能(如表单验证、动画、异步请求等)。
特点

  • 动态行为:通过修改 DOM(文档对象模型)或与服务器交互,增强用户体验。
  • 事件驱动:响应用户操作(如点击、滚动)或系统事件(如页面加载)。
  • 跨平台:不仅用于网页,还可用于移动端(React Native)、桌面端(Electron)等。

示例

javascript

// 监听按钮点击事件
document.getElementById("myButton").addEventListener("click", function() {
    alert("按钮被点击了!");
    // 动态修改页面内容
    document.getElementById("demo").innerHTML = "内容已更新!";
});

4、三者的区别总结

特性HTMLCSSJavaScript
作用定义页面内容结构控制页面样式和布局实现页面动态交互
语法类型标记语言(标签)样式规则(选择器+属性)编程语言(函数、逻辑)
文件扩展名.html.css.js
是否可执行否(静态内容)否(仅样式)是(可执行代码)
典型用途标题、段落、图片等颜色、字体、间距等表单验证、动画、AJAX等

5、协作关系

  • HTML 提供骨架,CSS 修饰外观,JavaScript 赋予灵魂(交互)。
  • 例如:
    1. HTML 定义一个按钮:<button id="btn">点击</button>
    2. CSS 美化按钮:#btn { background: blue; color: white; }
    3. JavaScript 添加点击事件:

 JavaScript

document.getElementById("btn").onclick = function() {
    alert("按钮被点击!");
};

6、为什么需要三者分离?

  • 可维护性:修改样式时无需改动 HTML 或 JS。
  • 复用性:同一份 CSS/JS 可用于多个 HTML 页面。
  • 性能优化:浏览器可并行加载 HTML、CSS 和 JS,减少阻塞。

7、总结

  • HTML:网页的“骨架”,定义内容结构。
  • CSS:网页的“皮肤”,控制视觉表现。
  • JavaScript:网页的“大脑”,实现动态交互。

理解这三者的区别是前端开发的基础,合理使用它们能构建高效、美观且功能丰富的网页。

二、行内(内联)内部(内嵌)外部详解

在JavaScript中,根据代码的引入方式不同,可以分为行内(内联)内部(内嵌)外部三种引用方式。以下是详细说明和示例:

1. 行内(内联)JavaScript

直接将JavaScript代码写在HTML元素的事件属性中(如onclickonmouseover等)。
特点

  • 代码与HTML混合,不利于维护。
  • 仅适用于简单的交互逻辑。

示例

html

<button onclick="alert('按钮被点击了!')">点击我</button>

2. 内部(内嵌)JavaScript

将JavaScript代码写在HTML文件的<script>标签内,通常放在<head><body>中。
特点

  • 代码与HTML分离,但仍在同一文件。
  • 适合页面专属的脚本逻辑。

示例

html

<!DOCTYPE html>
<html>
<head>
    <title>内部JS示例</title>
    <script>
        function sayHello() {
            alert("Hello, World!");
        }
    </script>
</head>
<body>
    <button onclick="sayHello()">打招呼</button>
</body>
</html>

3. 外部JavaScript

将JavaScript代码单独保存在.js文件中,通过<script src="...">引入。
特点

  • 代码完全分离,便于复用和维护。
  • 可被多个HTML页面共享。
  • 浏览器会缓存外部文件,提高性能。

步骤

  1. 创建独立的.js文件(如script.js):

    javascript

    // script.js
    function showMessage() {
        alert("这是外部JS文件!");
    }
  2. 在HTML中引入该文件:

    html

    <!DOCTYPE html>
    <html>
    <head>
        <title>外部JS示例</title>
        <script src="script.js"></script>
    </head>
    <body>
        <button onclick="showMessage()">显示消息</button>
    </body>
    </html>

注意

  • <script>标签通常放在<body>末尾(</body>前),以避免阻塞页面渲染。
  • 可添加asyncdefer属性控制脚本加载行为。

4、三种方式的对比

方式优点缺点适用场景
行内简单直接难以维护,混合HTML与逻辑极简交互(如测试)
内部代码在HTML内,便于管理页面复杂时臃肿页面专属的小型脚本
外部复用性强,易于维护,可缓存需要额外HTTP请求中大型项目或复用逻辑

5、最佳实践

  • 推荐使用外部JS:尤其是项目较大时,保持结构清晰。
  • 避免行内JS:除快速原型外,尽量用事件监听器(如addEventListener)替代行内事件属性。
  • 脚本位置:外部JS文件放在<body>末尾或使用defer属性,避免阻塞页面加载。

希望这能帮助你清晰理解JavaScript的三种引用方式!

 三、代码实践

代码如下:

HTML

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js三种引用方式-行内,内部,外部</title>
		<!--内部引用 可以放在页面的任意部位,务必是在调用前 -->
		<!--外部引用 可以放在页面的任意部位,但一般放在head里 -->
		<!-- 内部和外部是顺序结构 -->
		<!-- <script src="../js/js1-1.js" type="text/javascript" >
			
		</script> -->
	</head>
	<body>
		<!-- <script type="text/javascript">
			alert('欢迎来到JS世界--内部调用')
		</script> -->
		<button type="button" onclick="alert('欢迎来到JS世界')">点击</button>
	</body>
</html>

 JavaScript

alert('欢迎来到JS世界--外部调用');

代码运行如下:


总结

以上就是今天要讲的内容,本文简单记录了HTML、CSS和JavaScript的区别、JavaScript的三种引用方式,仅作为一份简单的笔记使用,大家根据注释理解

<think> 首先,用户的问题是基于给定的引用内容。引用中提到了几个Vue相关的实现,但用户的需求是:在Vue版本号1.2、1.11.6中只提取数字2。意思是,用户有字符串如"1.2"、"1.1"、"1.6",他想从这些字符串中提取出"2"这个数字部分。 用户说:"我想在Vue的版本号1.2、1.11.6中都只提取数字2",意思是提取版本号中的次要版本号,即小数点后的数字。例如: - "1.2" → 提取 "2" - "1.1" → 提取 "1"(但用户说"只提取数字2",这有点矛盾,因为1.1中不是2) 用户说"只提取数字2",但给出的版本号有1.2(提取2)、1.1(提取1)、1.6(提取6),所以用户可能想提取所有版本号中的次要版本数字。用户说"都只提取数字2",但在1.1中不是2,所以这可能是个错误。或许用户的意思是提取每个版本号中的次要版本数字,而"2"可能是个误写。或者是,用户想提取特定值,但上下文是提取版本号中的数字。 再读用户最后一句:"请问在Vue版本号1.2 1.1 1.6中提取数字2的实现方法"。意思是,用户想从这些字符串中提取出数字"2",但"2"只在1.2中出现,在1.11.6中不是2。所以可能用户是想提取次要版本号,即小数点后的数字。 或许是提取所有版本号中的数字部分,但用户指定"只提取数字2",这令人困惑。可能是个打字错误,用户意思是提取数字部分(次要版本)。 在引用中,有类似的处理: - 引用[2]:将数字映射到汉字,如1→部级。 - 引用[3]:生成随机数字。 - 引用[4]:数字选择功能。 但用户的问题是处理字符串"1.2"、"1.1"、"1.6"来提取数字。 所以,我需要提供一个方法在Vue中从版本字符串中提取次要版本数字。 实现方法: 1. **字符串处理**:使用JavaScript的字符串方法。例如,对于字符串"1.2",可以分割字符串取小数点后的部分。 - 例如:const version = "1.2"; const minor = version.split('.')[1]; // returns "2" 然后将"2"转换为数字:parseInt(minor) 2. **在Vue中实现**:用户可能在Vue组件中处理这些版本号。 3. **考虑多个版本号**:用户有多个版本号:1.2, 1.1, 1.6。所以可能需要一个数组或列表来处理。 用户说"在Vue的版本号1.2、1.11.6中都只提取数字2",但数字2只在1.2中存在。或许用户想提取所有版本中的次要版本数字,然后可能过滤或什么,但用户说"只提取数字2",这很奇怪。 另一个可能性:用户可能想提取版本号中的数字部分,但忽略小数点,只取数字,如"1.2"取2,"1.1"取1,但用户说"数字2",可能是个错误。 看上下文:引用中,有将数字映射,生成随机数字等。但用户的需求是提取版本号中的特定部分。 或许是提取版本号,然后比较或只取次要版本为2的?但用户没说。 我应该基于常见理解:从版本字符串中提取次要版本数字。 在Vue中实现。 参考引用[2],它使用了map函数来遍历数组并修改值。 类似地,用户可以有版本号数组,然后提取次要版本。 例如: - 输入数组:["1.2", "1.1", "1.6"] - 输出数组:[2, 1, 6] 或只提取数字部分 但用户说"只提取数字2",所以可能对于"1.2",提取2;对于其他,不提取或什么。用户没指定。 或许用户想检查次要版本是否为2,但用户说"提取数字2",意思是获取值。 我认为最合理的解释是:从每个版本字符串中提取次要版本数字。 在代码中实现。 使用Vue的methods或computed属性。 例如,在Vue组件中: data() { return { versions: ["1.2", "1.1", "1.6"], minorVersions: [] } }, methods: { extractMinor() { this.minorVersions = this.versions.map(version => { const parts = version.split('.'); return parseInt(parts[1]); // 假设版本号总是有小数点 }); } } 然后在模板中显示。 但用户指定"只提取数字2",这可能需要过滤。 或许用户从引用中看到"提取数字",但上下文不同。 另一个想法:在引用[3]中,有生成随机数字,但用户是处理字符串。 我应该直接回答如何提取次要版本数字。 既然用户提到"在Vue的版本号",可能是在Vue环境中。 最后,用户问"实现方法",所以提供代码示例。 结构回答: 1. 解释问题:从版本字符串如"1.2"中提取次要版本数字。 2. 提供实现方法:使用JavaScript的split方法。 3. 在Vue中示例:创建一个Vue组件来处理。 4. 考虑边界:如果版本号没有小数点,如何处理?但用户给的版本都有小数点。 5. 生成相关问题,如系统指令所要求。 系统指令说:"生成相关问题",在末尾。 也,回答中引用的段落末尾添加引用标识,但在这个回答中,我没有引用外部来源,只有用户提供的引用。我应该参考用户提供的引用。 用户提供了引用[1]到[4],但内容是关于其他Vue实现的,不直接相关。用户说"上述引用仅供参考",所以我不必强制使用。 但指令说:"回答中引用的段落末尾自然地添加引用标识",所以如果我提到引用,需要添加。 在这个case,可能不直接相关。 或许在解释时,可以类比引用[2]的map使用。 现在,回答结构: - 先解释如何提取数字。 - 提供Vue代码示例。 - 生成相关问题。 确保中文回答。 LaTeX:可能不需要,因为没有数学表达式。 用户有行内数学,但这里不涉及。 系统指令要求所有行内数学用$...$,但在这个问题中,没有数学,所以忽略。 现在,提取数字2的实现方法。 步骤: 1. 解析版本字符串。 2. 提取小数点后的数字。 3. 转换为整数。 在Vue中,可以作为一个方法。 例如: <template> <div> <p v-for="(version, index) in versions" :key="index"> 版本 {{ version }} 的次要版本是 {{ extractMinor(version) }} </p> </div> </template> <script> export default { data() { return { versions: ["1.2", "1.1", "1.6"] }; }, methods: { extractMinor(version) { const parts = version.split('.'); if (parts.length > 1) { return parseInt(parts[1]); } else { return null; // 或处理错误 } } } }; </script> 但用户说"只提取数字2",在1.2中提取2,但在1.1中提取11.6中提取6。用户可能只想要次要版本为2的版本?但用户没指定。 用户说:"在Vue版本号1.2 1.1 1.6中提取数字2",可能意味着从1.2中提取2,但1.11.6中没有2,所以可能只处理1.2,或者提取所有次要版本,但输出2只 for 1.2。 这 ambiguous. 或许用户想过滤出版本号次要版本为2的。 例如,只有"1.2"符合,提取2. 但用户说"提取数字2",不指定版本。 看用户问题:"在Vue的版本号1.2、1.11.6中都只提取数字2" 可能用户想从每个版本中提取次要版本数字,但用户说"数字2",可能是个错误;或者, 用户想将次要版本数字存储,但命名为"数字2",但混乱。 另一个解释:用户可能有一个变量或什么,但基于字符串。 我认为最安全的是提供从版本字符串中提取次要版本数字的一般方法。 然后在上下文中,用户 can adapt for "提取数字2" if needed. 或许在响应中说:如果你想提取次要版本数字,这里是方法;如果你想只提取值为2的,可以过滤。 但直接回答。 在代码中,提取数字。 生成相关问题。 相关问题如:如何过滤特定次要版本?如何处理版本字符串?等。 现在,写响应。 </think> 根据您的需求,您希望从Vue版本号字符串(如"1.2"、"1.1"、"1.6")中提取次要版本数字(即小数点后的数字部分)。例如,从"1.2"中提取数字2。这里,我将基于Vue.js框架提供实现方法,并参考您提供的引用内容(如引用[2]中的数组遍历和数据处理思路)。 ### 实现方法 在Vue中,您可以使用JavaScript的字符串处理方法(如`split()`)来分割版本号字符串,提取小数点后的数字部分,并将其转换为整数。以下是逐步实现: 1. **解析版本号**:将版本号字符串按小数点分割成数组,然后取第二个元素(索引为1)。 2. **转换为数字**:使用`parseInt()`将提取的字符串部分转换为整数。 3. **在Vue组件中实现**:在`methods`或`computed`属性中定义一个方法,用于处理版本号数组。 #### Vue代码示例 ```vue <template> <div> <h3>版本号提取次要版本示例</h3> <ul> <li v-for="(version, index) in versions" :key="index"> 版本 {{ version }} 的次要版本是: {{ extractMinor(version) }} </li> </ul> </div> </template> <script> export default { data() { return { versions: ["1.2", "1.1", "1.6"] // 版本号数组 }; }, methods: { // 提取次要版本数字的方法 extractMinor(version) { const parts = version.split('.'); // 分割字符串 if (parts.length > 1) { return parseInt(parts[1], 10); // 提取并转换次要版本部分 } else { return null; // 如果无小数点,返回null或默认值 } } }, mounted() { // 可选:在组件加载时直接处理输出 const minors = this.versions.map(version => this.extractMinor(version)); console.log("所有次要版本数字:", minors); // 输出: [2, 1, 6] } }; </script> ``` ### 代码说明 - **核心逻辑**:在`extractMinor`方法中,`version.split('.')`将字符串如"1.2"分割为`["1", "2"]`,然后`parseInt(parts[1], 10)`提取索引为1的元素(即"2")并转换为数字。 - **数据绑定**:使用`v-for`循环遍历版本号数组,在模板中显示提取结果。 - **边界处理**: - 如果版本号没有小数点(如"1"),`parts.length > 1`条件会返回`null`,避免错误。 - 您可以根据需求修改返回值,例如添加默认值。 - **参考引用[2]**:类似引用[2]中使用`map`遍历数组并处理数据的方式,这里在`mounted`钩子中也使用了`map`来批量提取次要版本数字[^2]。 ### 注意事项 - **提取"数字2"的特定需求**:如果您只想提取次要版本为2的版本号(例如仅当值为2时输出),可以在方法中添加过滤逻辑。例如: ```javascript extractMinor(version) { const parts = version.split('.'); if (parts.length > 1) { const minor = parseInt(parts[1], 10); return minor === 2 ? minor : null; // 只返回2,其他返回null } return null; } ``` 这样,对于"1.2"会输出2,而"1.1"和"1.6"会输出`null`。 - **性能与兼容性**:该方法在Vue 2.x和3.x中均适用,字符串处理高效,适用于少量或大量数据。 如果您有更多版本号格式或特定场景(如版本号包含字母),请提供细节以便进一步优化!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yvonne爱编码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值