整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript代码怎样引入到HTML中?

avaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。通过 <script> 标签将 JavaScript 代码引入到 HTML 中,有两种方式:
1.内部方式
内部方式是通过<script>标签包裹JavaScript代码,从而引入HTML页面中,示例代码如下:

<!DOCTYPE html>
 <html>
 <head>
   <meta charset="UTF-8">
   <title>JavaScript 基础 - 引入方式</title>
 </head>
 <body>
   <!-- 内联形式:通过 script 标签包裹 JavaScript 代码 -->
   <script>
     alert('嗨,欢迎来传智播学习前端技术!')
   </script>
 </body>
 </html>

2.外部形式

一般将 JavaScript 代码写在独立的以 .js 结尾的文件中,然后通过 <script>标签的 <src>属性引入,示例代码如下:

// demo.js
document.write('嗨,欢迎来传智播学习前端技术!')
<!DOCTYPE html>
 <html>
 <head>
   <meta charset="UTF-8">
   <title>JavaScript 基础 - 引入方式</title>
 </head>
 <body>
   <!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
   <script src="demo.js"></script>
 </body>
 </html>

注意:如果 script 标签使用 src 属性引入了某 .js 文件,那么 标签的代码会被忽略!!!如下代码所示:

4 种方式可以在 HTML 中引入 CSS。其中有 2 种方式是在 HTML 文件中直接添加 CSS 代码,另外两种是引入 外部 CSS 文件。下面我们就来看看这些方式和它们的优缺点。

内联方式

内联方式指的是直接在 HTML 标签中的 style 属性中添加 CSS。

示例:

<div style="background: red"></div>

这通常是个很糟糕的书写方式,它只能改变当前标签的样式,如果想要多个 <div> 拥有相同的样式,你不得不重复地为每个 <div> 添加相同的样式,如果想要修改一种样式,又不得不修改所有的 style 中的代码。很显然,内联方式引入 CSS 代码会导致 HTML 代码变得冗长,且使得网页难以维护。

嵌入方式

嵌入方式指的是在 HTML 头部中的 <style> 标签下书写 CSS 代码。

示例:

<head>
 <style>
 .content {
 background: red;
 }
 </style>
</head>

嵌入方式的 CSS 只对当前的网页有效。因为 CSS 代码是在 HTML 文件中,所以会使得代码比较集中,当我们写模板网页时这通常比较有利。因为查看模板代码的人可以一目了然地查看 HTML 结构和 CSS 样式。因为嵌入的 CSS 只对当前页面有效,所以当多个页面需要引入相同的 CSS 代码时,这样写会导致代码冗余,也不利于维护。

链接方式

链接方式指的是使用 HTML 头部的 <head> 标签引入外部的 CSS 文件。

示例:

<head>
 <link rel="stylesheet" type="text/css" href="style.css">
</head>

这是最常见的也是最推荐的引入 CSS 的方式。使用这种方式,所有的 CSS 代码只存在于单独的 CSS 文件中,所以具有良好的可维护性。并且所有的 CSS 代码只存在于 CSS 文件中,CSS 文件会在第一次加载时引入,以后切换页面时只需加载 HTML 文件即可。

导入方式

导入方式指的是使用 CSS 规则引入外部 CSS 文件。

示例:

<style>
 @import url(style.css);
</style>

比较链接方式和导入方式

链接方式(下面用 link 代替)和导入方式(下面用 @import 代替)都是引入外部的 CSS 文件的方式,下面我们来比较这两种方式,并且说明为什么不推荐使用 @import

  • link 属于 HTML,通过 <link> 标签中的 href 属性来引入外部文件,而 @import 属于 CSS,所以导入语句应写在 CSS 中,要注意的是导入语句应写在样式表的开头,否则无法正确导入外部文件;
  • @import 是 CSS2.1 才出现的概念,所以如果浏览器版本较低,无法正确导入外部样式文件;
  • 当 HTML 文件被加载时,link 引用的文件会同时被加载,而 @import 引用的文件则会等页面全部下载完毕再被加载;

小结:我们应尽量使用 <link> 标签导入外部 CSS 文件,避免或者少用使用其他三种方式。

ypeScript是由微软开发的自由和开源的编程语言,它是JavaScript语言的超集,主要增加了类型检查的能力,目标是为了支持大型项目的开发,原生的JavaScript可以原封不动在TypeScript语言里使用。TypeScript的语言很像Java这样的后端语言,转换到TypeScript让你开启了全栈能力的征程。

但是直接从JavaScript切换到TypeScript并非没有代价,可以参考从 JavaScript 迁移到 TypeScript - TypeScript 中文手册掌握切换的一般步骤,不过按照指导操作我还是遇到别的问题,本文以《WebGL编程指南》一书的示例代码为例介绍我遇到的问题以及解决办法。

注意使用TypeScript编写的代码并不能直接运行,还是需要编译成JavaScript才行,首先使用npm命令全局安装TypeScript。

npm install -g typescript

安装成功后,cmd执行tsc -v如果成功打印版本则表示安装成功。

当我尝试把《WebGL编程指南》中的代码转换到TypeScript进行练习时,执行tsc命令编译报错,提示找不到getWebGLContext这个方法,这个方法是本书作者提供的js库cuon-utils.js中的方法。

示例代码位置:

《WebGL编程指南》第2章WebGL入门中的一个示例“最短的WebGL程序:清空绘图区”,16页。

源码仓库链接:https://github.com/GrayMind/WebGL-Programming-Guide.git/

解决这个问题可以通过在tsconfig.json这个TypeScript工程管理配置中设置,在include中引入lib这个目录即可,这样TypeScript就能识别提示不存在的方法了,再次执行tsc命令编译就不会报错了,getWebGLContext方法就可以正常使用了(不过TypeScript做了检查,需要把第二个参数传入,默认为false)。

{
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es6"
    },
    "include": [
        "./src/*", 
        "./lib/*",      // 这里引入lib目录,TypeScript就会包含引入其中的js文件了
    ]
}

还有些细节的地方需要变动,这里列出全部代码并在变动的地方添加了注释。

HelloCanvas.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>最短的WebGL程序:清空绘图区</title>
</head>
<!-- 原来body中的onload="main()"不再需要了 -->
<body>
    <canvas id="webgl" width="400" height="400">
        您的浏览器不支持WebGL
    </canvas>

    <script src="../lib/webgl-utils.js"></script>
    <script src="../lib/webgl-debug.js"></script>
    <script src="../lib/cuon-utils.js"></script>
    <!-- script元素要增加type="module"来支持模块的import export -->
    <script type="module" src="./built/src/HelloCanvas.js"></script>
</body>
</html>

HelloCanvas.ts: