首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webpack引用外部js

Webpack 是一个流行的 JavaScript 模块打包工具,它可以将多个 JavaScript 文件及其依赖打包成一个或多个文件,以提高应用的加载速度和性能。在 Webpack 中引用外部 JavaScript 文件可以通过几种不同的方式实现,以下是一些基础概念和相关信息:

基础概念

外部脚本(External Script):指的是那些不由 Webpack 打包,而是在 HTML 文件中直接通过 <script> 标签引入的 JavaScript 文件。

优势

  1. 缓存利用:外部脚本可以被浏览器缓存,减少重复加载。
  2. 并行加载:外部脚本可以与主应用代码并行加载,提高页面加载速度。
  3. 依赖管理:对于一些第三方库,如 jQuery 或 lodash,可以通过 CDN 引入,减少打包体积。

类型

  1. CDN 引入:通过内容分发网络(CDN)提供的 URL 引入。
  2. 本地文件引入:直接引用项目目录中的文件。

应用场景

  • 第三方库:当使用广泛且稳定的第三方库时,可以通过 CDN 引入以节省带宽和提高加载速度。
  • 性能优化:对于大型项目,将不经常更新的库作为外部脚本可以提高缓存利用率。

实现方法

方法一:通过 HTML 引入

在 HTML 文件中使用 <script> 标签直接引入外部 JS 文件:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 引入外部 JS 文件 -->
    <script src="https://example.com/some-library.js"></script>
    <script src="bundle.js"></script>
</body>
</html>

方法二:配置 Webpack 的 externals

在 Webpack 配置文件中设置 externals 属性,告诉 Webpack 某些依赖不需要打包,而是在运行时从环境中获取:

代码语言:txt
复制
module.exports = {
    // ...
    externals: {
        'jquery': 'jQuery' // 假设 jQuery 已经通过 CDN 引入
    },
    // ...
};

然后在代码中可以像平常一样导入模块:

代码语言:txt
复制
import $ from 'jquery';

在 HTML 文件中,需要确保 jQuery 库已经被引入:

代码语言:txt
复制
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="bundle.js"></script>

可能遇到的问题及解决方法

问题:外部脚本加载失败或顺序错误。

原因:可能是由于网络问题,或者脚本标签放置顺序不正确。

解决方法

  • 确保 CDN 地址正确无误。
  • 使用 asyncdefer 属性控制脚本加载行为。
  • 在 Webpack 配置中正确设置 externals

示例代码

假设我们有一个项目使用了 jQuery,并且想通过 CDN 引入它,而不是打包到最终的 bundle 中。

Webpack 配置 (webpack.config.js)

代码语言:txt
复制
module.exports = {
    // ...
    externals: {
        jquery: 'jQuery'
    },
    // ...
};

JavaScript 文件 (app.js)

代码语言:txt
复制
import $ from 'jquery';

$(document).ready(function() {
    $('body').append('<h1>Hello, World!</h1>');
});

HTML 文件 (index.html)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="bundle.js"></script>
</body>
</html>

通过以上配置和代码,jQuery 将不会被 Webpack 打包,而是通过 CDN 引入,从而优化了应用的加载性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java引用外部字体(路径引用)的一些坑

    (后面你会发现更加反程序员) 那么,只能把字体放到哦静态文件里面,然后引用外部字体了。...于是,只能引用外部字体。 坑二 前头说了,是otf文件,用正确的代码跑一下,很好一个报错都没有!(此处应有掌声!)...嗯,我只能说这个引用外部的otf在百度上,根本没有任何解决方法。 甚至问这个问题的人,答案也是叫我们在操作系统安装,本地引用。 然后,谷歌,stackflow。...大神直接fxxk了一下java的awt,大意就是java说支持引用otf,但是,不支持外部引用otf,最后说了一句awt写的就是一坨翔。...我那个纠结啊,也就是说外部引用,路径引用代码没错,而且看了源码,外部引用也就是路径引用。 也就是说需求给的ttf有问题,反映一下问题,需求说你想要怎样的ttf呢? 鬼子知道啊?我也想知道啊!

    2.7K10

    3D开发是一个生态,ThingJS支持js,css,json,html外部资源引用

    从开发生态的角度,webGL技术可以调用显卡、调用麦克风、调用摄像头等一切能用的硬件去提升服务质量,同时也支持引用js脚本和css演示,让你的3D开发效果更加有特色。 **官方如何引入外部资源呢?...** 我们默认js脚本和css样式会带上时间戳,且按urls数组中的顺序加载,浏览器会缓存之前的js,css的版本,我们更新了js,css文件后,浏览器不会更新。.../bootstrap.min.js', '/static/vendor/moment/moment.js'], function () { twitter-bootstrap, moment均为外部资源...这样在平台上引用,开发不因为访问不到资源或者访问报错而拖延,所以我们支持css库,JS库打包并提供官方文件夹储存资源,确保稳定,也方便用户无论何时何地都可开发。...ThingJS官方平台支持外部资源,可操作js, css文件新建或者icon、jpg、png、gif、js、css、html、json、ttf、woff、gltf、rvt、ifc、mp3格式的文件上传。

    1.5K20

    Feed2JS实现JS的外部调用

    Feed2JS实现JS的外部调用 作者:matrix 被围观: 4,064 次 发布时间:2011-04-30 分类:兼容并蓄 | 无评论 » 这是一个创建于 4142 天前的主题,其中的信息可能已经有所发展或是发生改变...feed2js顾名思义就是将feed内容以js方式输出,便于嵌入页面中,做成文章列表。不单适用于Wordpress,任何博客程序以及免费博客甚至网站,只要支持RSS Feed就可以适用。...网址:http://feed2js.org/index.php?s=build 在页面中URL地址栏输入RSS Feed地址,再在下面选项中进行一些设置。...display设置显示条数 中文内容会出现乱码选上UTF-8 Character Encoding即可 点页面右边的Preview Feed可以预览效果,Generate JavasScript生成JS...我的设置: http://feed2js.org/index.php?

    2.4K10

    js如何引用同级元素

    具体效果 示例效果 https://coder.itclan.cn/fontend/js/17-yinyong-tongji-elem/ 具体描述 在网页中,同级(兄弟)元素,指的是拥有相同的直接父级元素的元素...并且往往指的是同类的元素,同类元素在实际开发中遇到的比较多 比如:列表li,并列的按钮等,当需要做一些特殊的效果时,可以对其他同级的元素进行一些操作,满足特定的网页要求 比如:隔行填充颜色等 原生方法实现 以下是通过原生js...就是同级元素,同级元素拥有相同的父级元素都是p,那么就可以得到除自身以外的的同级元素,如果还需要排除同一类别的话,那么可以使用节点的nodeType属性来加以区别 Vue版本实现 在Vue里面,就不用类似原生js...margin: 20px 0; } .content { padding: 20px 0 0 0; } 从上面可以看出,使用Vue实现类似同样的效果,就几行代码,相比原生js...实现是比较简单的,但是原生js的操作依旧还是要知道的

    7.9K40
    领券