导入js库或在html <script>标签中引用它有啥区别

Posted

技术标签:

【中文标题】导入js库或在html <script>标签中引用它有啥区别【英文标题】:What is the difference between importing js library or reference it in html <script> tag导入js库或在html <script>标签中引用它有什么区别 【发布时间】:2016-08-02 10:28:59 【问题描述】:

我目前正在使用带有 react js 的 webpack。我是新手,对导入依赖项有疑问。传统方式,我们通常从html中的&lt;script&gt;标签导入第三方库。现在我可以通过运行下面的代码在 javascript 中做到这一点。我想知道这两种方法之间的区别是什么。它们是否被导入同一个命名空间?还有其他区别吗?

import $ from 'jquery'
import React from 'react';
import ReactDOM from 'react-dom';
import load from 'little-loader';

【问题讨论】:

这是一个你可以通过一些战术谷歌搜索可能找到的东西。 exploringjs.com/es6/ch_modules.html 听起来你对webpack的核心用例有疑问。它只允许您导入模块,并且范围在您进行导入的任何地方都是本地的。如果你想让一些东西全球化,你会做import $ from 'jquery'; window.$ = $; 但是你应该使用模块而不是使用全局命名空间。 好的,谢谢你的解释。 【参考方案1】:

你会注意到 Webpack 会生成一个 JS 文件,该文件 通过 &lt;script&gt; 标签包含在其中。这是“捆绑”文件。页面上总是有一个&lt;script&gt; 标签。

什么 Webpack/Browserify/等。做,他们是否需要几个不同的 JS 文件并将它们组合成一个 JS 文件以通过 &lt;script&gt; 标签加载。所以这个:

<script src="jquery.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>

...变成这样:

<script src="bundle.js" type="text/javascript"></script>

jQuery 和你所有的app.js 代码现在都在bundle.js 文件中。 Webpack 还将确保一切都按正确的顺序运行,以便 jQuery 在 app.js 代码之前运行。这就是为什么你有这条线:

import $ from 'jquery'

...或在 ECMAScript 5 中:

var $ = require('jquery');

这告诉打包器您依赖 jQuery,因此它可以确保它 1) 被包含和 2) 以正确的顺序包含。

【讨论】:

以上是关于导入js库或在html <script>标签中引用它有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

jQuery导入及测试

javaScript的基础语法

解决了jQuery插件未能导入到项目之中

文件的导入

three.js怎么导入html

前端 js技术