cli3打包js无法导入的简单介绍

本文目录一览:

vue-cli3打包之后的文件为何不能本地打开

meta charset=”utf-8″

vue-cli 提供了一个入口让你能配置修改 webpack .

在根目录下新建一个 vue.config.js 文件, 然后在其中修改 publicPath 这个选项:

vue.config.js :

将这个选项设置为 ‘/’ (当前文件夹).

现在你就可以本地打开 dist 文件夹中的 index.html 了.

但是会有一个小问题, 就是如果你使用了 vue-router (路由)的话, 会发现路由跳转有问题了.

这个路径明显不对呀…

原来是因为我的 vue-router 的模式设置成了 history 模式:

src/router/index.js :

只要把 mode 改为 hash 就可以正常跳转了(其实默认是这个模式的, 但如果你的项目中mode被改了你得知道是这个问题).

vuecli3打包部署 非根目录下 配置vue.config.js publicPath

从 Vue CLI 3.3 起已弃用baseUrl,请使用publicPath。

默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 ,则设置 publicPath 为 /my-app/。

这个值在开发环境下同样生效。如果你想把开发服务器架设在根路径,你可以使用一个条件式的值:

在vue.config.js文件中添加如下:

vue-cli3 pubic静态资源引入

静态资源文件放入public文件夹下(类似cli2里面的static文件夹),打包时不会被wenpack处理,输出文件在dist文件夹下。

在index.html中通过

script src=”%= BASE_URL %clipboard.min.js”/script

参考

link rel=”icon” href=”%= BASE_URL %favicon.ico”

可以看到项目中ico图标就是通过这种方式引入!!

public文件夹下文件是不被处理的,所以我们可以创建一个config.js文件

config.js

在index.html中引入

使用

遇到的问题,修改打包后的config.js文件,值不更新

排查方式:

1.先确认config.js文件是否更新,浏览器的缓存可能会影响

2.可以修改js文件名,比如加上hash值,config.hashxxx.js,在index.html引入的地方也要对应修改

综上

本地测试ok

VueCLI3打包优化–抽离依赖包

项目开发中,使用了很多依赖包,如 Vue 、路由管理 Vue-router 、状态管理 Vuex 、UI组件库( ElementUI 、 Vant )、图表( echarts )等。打包构建,发现有一些包体积过大,会影响首页加载速度。如下所示:

从上图的分析包中,可以将以下插件抽离:

需要删除的依赖包

VueCLI3自带了 webpack analzer ,可通过如下命令即可生成分析包内容,在 dist/report.html

更多请查看:

减少打包体积、加快打包速度,常规的优化有以下两种:

按需加载是通过只引用使用的组件来减少体积,这就会有一个问题:如果项目重度依赖第三方插件(如 ElementUI 、 vant ),那么此方案将无法减少打包的体积。

这里选择CDN的方式, 配置流程 :

可根据环境变量,仅在线上采取使用CDN,开发环境直接使用npm依赖包即可。

进行包分离以后,打包结果:

vue.config.js 的pages为:

修改如下的地方:

外部扩展(externals)

使用webpack的externals来指定echarts无法减少包的大小

vue-cli利用webpack-bundle-analyzer分析构建产物

vue打包后发布文件路径错误且报错Unexpected token

项目执行npm run dev和npm run build-dev(开发环境打包)都没有问题

当使用npm run build-prod(生产环境)打包,发布之后查看报错:

此处所采用的的是vue-cli2.x

1.修改文件config/index.js,修改build配置中的内容

如上修改后打包可以打开不在报错,但是找不到图片以及文字了

2.修改build/utils.js文件,修改publicPath

重新打包后,访问正常

用过与该项目相同的脚手架,搭建了两个项目,然而另外的项目却没有该问题,暂未发现问题所在。

本项目Nginx配置中存在前置web-pmms

最终还原了上方的三处修改,将config/index.js中assetsPublicPath做如下修改

assetsPublicPath是配置为相对路径还是绝对路径,取决于你打包后前端资源怎么发布部署

vue-cli2.x版本

情况1: 如果应用配置在一个域名的根路径上,例如,则直接配置assetsPublicPath:’/’;

情况2: 如果应用配置在一个域名的子路径上,例如 ,则应设置assetsPublicPath:’/myapp/’;

这个值也可以设置为空字符串(”)或相对路径(‘./’),这样所有资源都会被链接为相对路径,这样打包后的文件可以被部署在任意路径。

vue-cli3.x版本

需要在vue.config.js 添加baseUrl:‘xxx’

vue-cli 4.x版本

需要在 vue.config.js 中修改 publicPath:’xxx’

关于Vue-cli引入外部js资源文件失败的一点思路

首先申明我是window系统下Vue-cli 4.5.3版本,脚手架整体基于vue2内核。

1.正常js文件如果有使用export向外暴露对象,将js放在src/assets都是可以通过import直接引入。但有有些情况下我们需要导入第三方的js文件,例如近期我在做的阿里云点播视频上传SDK,包括最近在学习的ThreeJs,如果单单只是在public中index.html通过script src=””/script引入,是不够的还需要在具体vue页面引入:

这也是我尝试两天才成功,走了些弯路,希望帮助到有同样问题的打工人,共勉!

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/293726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-26 13:14
下一篇 2024-12-26 13:14

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • t3.js:一个全能的JavaScript动态文本替换工具

    t3.js是一个非常流行的JavaScript动态文本替换工具,它是一个轻量级库,能够很容易地实现文本内容的递增、递减、替换、切换以及其他各种操作。在本文中,我们将从多个方面探讨t…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 用Python实现简单爬虫程序

    在当今时代,互联网上的信息量是爆炸式增长的,其中很多信息可以被利用。对于数据分析、数据挖掘或者其他一些需要大量数据的任务,我们可以使用爬虫技术从各个网站获取需要的信息。而Pytho…

    编程 2025-04-28

发表回复

登录后才能评论