想要练练手写下 composition api,搜罗了很多资料。 标签页都开了五十多个,最后还是被 vue-cli + vue3 + typescript 组合拳击倒了。 整理了一些问题,今晚还要继续看,希望有经验的前辈能够回答一下:
比方说我想要开发一个 UI 库,但是它在最开始只有零星的组件可供使用。 这时候,我能否将 UI 库和组件分别作为 NPM 包发布? 虽然我希望结果是这样的,但是想不到怎么做:
npm install @vueui // UI 库,暴露往根部 vue 实例挂载 UI 库所有组件的 install 方法
npm install @vueui/confirm // vue 组件,暴露挂载单独组件的 install 方法
这样的话,package.json 和 tsconfig.json 这些配置文件该怎么办呢,也要嵌套吗? 还是说只能写完了将文件复制到一个专门发布 vue 组件的模板中,然后单独发布?
在搜罗到的文章里,基本提到了组件要分成 src 和 dist 两个文件夹,dist 文件夹用于存放打包成.js 的组件。 不过他们有的使用 rollup 来打包,有的直接使用 vue-cli-service build,这两种方式有什么区别吗?
关于 typescript 的问题就是不懂 d.ts 是一定要写的吗,需要把自己在.vue 里面写的类型声明提取出来吗? 如果提出来,我该把这个文件引入 /声明到什么地方,才能让我在.vue 里写代码的时候能够识别 interface 呢?
在使用 composition api + typescript 进行开发时,我有多次因为代码结构杂乱感到尿急,比如:
setup () {
// vue3 composition api 绑定 $refs 的方法,比较奇怪的
const wrap: any = ref(null);
// 直接定义一个方法
function getWrap (): HTMLElement | null {
return wrap.value ? wrap.value : null;
}
// 定义接口并实现(如果我做错了,请纠正我)
interface getWrap {
(): HTMLElement | null;
}
const getWrap: getWrap = () => wrap.value ? wrap.value : null;
return {
wrap,
};
}
实现接口时是不是只能够以初始化变量的形式来实现? 这样的话满屏就都是 const 了。 将接口部分单独写成文件后,也因为不懂在哪引入,好好发愁了一段时间。
也许是许多新事物一下子涌入大脑,所以我现在比较难转过弯来,发这个帖子或许能够帮助我整理一下要做的事情。 放上一些搜到的资料,或许能帮到一些比较聪明的朋友。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.