js 放到 cdn 上后,开发环境下编译器警告,如何处理 ?

2019-04-02 13:41:15 +08:00
 HarryQu

起因

Vue 打包后 vendor.js 太大,因此我准备将一些 js 放到 CDN 上。


过程

如 element-ui , 我在 webpack.base.conf.js 配置如下:

  externals: {
    'vue': 'Vue',
    'element-ui': 'ELEMENT'
  }

index.html 添加了 :

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

main.js 中移除了相关导入 ,如下三行,已全部移除

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

问题

上述配置后,生产环境确实是使用了 CDN。但是这样配置后,我在开发环境下,IDE 却无法智能提示,比如我有一个 HomeContainer.vue 中使用了 ElementUI 的组件 ,结果如下图 :

或者在 html 文件中

没有提示重影响开发,因此我想在开发环境使用 npm,生产环境使用 CDN,应该如何配置?

注 :IDE 为 webstorm

2000 次点击
所在节点    问与答
13 条回复
ysc3839
2019-04-02 14:18:16 +08:00
你把最终编译好的 js 整个放到 CDN 不就好了吗?
HarryQu
2019-04-02 14:41:13 +08:00
@ysc3839 也可以,写个脚本上传到 CDN,然后自动替换掉 index.html 的 路径。

我看网上大多是用帖子描述的方法,只是好奇他们怎么处理?
anmie
2019-04-02 14:49:14 +08:00
噫。。。为啥我也这样做的 没问题呢,该有的提示还都有
bestie
2019-04-02 15:03:29 +08:00
单个文件太大可以分包。
最终编译的 js 肯定要全放 cdn 的,按照你这样来处理的应该不会很多。
momocraft
2019-04-02 15:08:43 +08:00
加到 devDeps ?
BearD01001
2019-04-02 15:13:46 +08:00
楼主可以参考一些还在使用 jQuery 的过渡项目,是可以不打包某些依赖使用 external 资源的。
BearD01001
2019-04-02 15:18:40 +08:00
搜索关键字:webpack externals
HarryQu
2019-04-02 15:26:04 +08:00
@anmie 你也用的是 webstorm 吗
HarryQu
2019-04-02 15:27:41 +08:00
@bestie 哦,我之前的想法是:不经常变化的 JS 包走 CDN,经常变化的直接走自己的服务器。。
momocraft
2019-04-02 15:30:03 +08:00
哦看漏了
为什么要在 main.js 中移除,我猜 webstorm 是看这个的
external 的意思是 "即使 import 了也不打包"
HarryQu
2019-04-02 16:34:38 +08:00
@momocraft
@anmie
我新建了一个项目 https://github.com/ilpanda/vue.git ,这个项目这样配置,webstorm 也是无法提示 。
anmie
2019-04-02 17:58:36 +08:00
@HarryQu 我用的 vscode
HarryQu
2019-04-03 11:45:08 +08:00
最终的解决方法使用了这个哥们的方案 :
https://github.com/HaoChuan9421/vue-optimization/tree/cdn 在 cdn 分支

我打出的包很大, 与以下几个 js 库有关 :

element-ui
highlight.js
moment

可运行命令查看项目使用的 js 占用空间:npm run build --report

优化后,实现了秒开,谢谢楼上各位的意见。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/551223

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX