能用 vue 写个独立的 js 文件供第三方用么?

2022-03-09 14:53:55 +08:00
 snoopyhai

今儿拿到个需求,写个 js 库,供第三方使用。

习惯 vue 了,突然就把我整不会了。。

大致是这样,写个 js 库,里面封装好一个小界面和交互。比如一个华丽的 mp3 播放器。 用户直接引入 js ,然后实例化配置,就会在指定的 dom 中插入这个播放器,并使用。

但是已经习惯了 vue 了,是否能用 vue 写这么个东西。最后脱离 vue 成为一个单文件库。

脑子空白一片,没思路。

4025 次点击
所在节点    Vue.js
30 条回复
cydysm
2022-03-09 14:56:32 +08:00
可以啊
注意要支持 script 引入的话就输出 umd 格式
把 vue 和其他一些依赖配置为 external
你可以参考 element 的做法
Natsuno
2022-03-09 14:56:57 +08:00
上传到 npm 库来引入,不就和你写 vue 正常 import 一样
cydysm
2022-03-09 14:57:44 +08:00
另外 你说的脱离 vue 是 runtime 不需要 vue 吗 那应该不行
murmur
2022-03-09 14:58:41 +08:00
第三方是什么样的第三方,能拿到源码么,如果是开源的为什么要脱离 vue ,如果是加密的还是建议单 js 引入
renmu123
2022-03-09 14:58:51 +08:00
jQuery 一把梭吧 23333
WhateverYouLike
2022-03-09 15:00:01 +08:00
@cydysm 调用方引用这个 umd 时,也需要 vue 运行时环境的吧?
snoopyhai
2022-03-09 15:00:21 +08:00
@cydysm 对,runtime 脱离 vue 。比如目前已经有网站的客户,是 jquery 的。script:src 引入后拿到一个全局变量,然后去实例化配置,之类的。。
snoopyhai
2022-03-09 15:03:17 +08:00
@murmur 第三方不可控,可以理解为我写了个 js 播放器,各种网站都有可能去使用,有源生的有 jquery 有 vue 有 react 的等等。
cydysm
2022-03-09 15:03:56 +08:00
@WhateverYouLike 需要的 在页面另外引入就 ok 了

@snoopyhai runtime 脱离应该是不可以的
lower
2022-03-09 15:04:57 +08:00
直接以 iframe 方式引入吧😂
snoopyhai
2022-03-09 15:06:36 +08:00
补充一下:

第三方是不可控的,就好比早些年间,各大站长喜欢引入站长统计的 js 库一样。
啥技术栈都有,但只要 script:src 引入,并简单配置,就能用起来。

只不过习惯 vue 了,想在界面部分,用 vue 的这种数据绑定模式,写起来顺手。
snoopyhai
2022-03-09 15:07:41 +08:00
或者我该看看 svelte ??
shakukansp
2022-03-09 15:12:41 +08:00
vue 写完,webpack 编译好打包,给一个 Index.js 的入口,好似没有什么问题
shakukansp
2022-03-09 15:13:15 +08:00
@shakukansp webpack 打包的时候可以选择输出为一个挂载在 window 上的对象的
GoogleUser
2022-03-09 15:19:23 +08:00
Webpack ,Rollup ,Vite 都支持打包成你想要的,要在浏览器里用的话,选择 UMD 模式
建议试试 Vite 的库模式
cn.vitejs.dev/guide/build.html#library-mode
musi
2022-03-09 15:22:23 +08:00
snoopyhai
2022-03-09 15:28:46 +08:00
@musi 我研究研究
c1273082756
2022-03-09 15:30:49 +08:00
iframe?
KouShuiYu
2022-03-09 15:38:07 +08:00
可以把 Vue 打包进去就行了
JaxXu
2022-03-09 19:50:34 +08:00
petite-vue 可以考虑一下 , 如果体积受限的话
svelte 如果只是简单的业务可以考虑一下

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

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

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

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

© 2021 V2EX