最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    正文概述 掘金(叶梅树)   2021-06-21   594

    这是我参与更文挑战的第20天,活动详情查看: 更文挑战

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    开篇之前的叨叨,今天看到掘金伙伴的评论,还是有点小小激动,毕竟不是自己擅长的开发语言,项目也是因为这次掘金的活动而突发想着把开发过程记录下来。所以能得到关注,我还是感谢这位小伙伴~

    但愿项目记录对大家有些价值,也欢迎大家多多指正批评!

    好了,废话不多说,开始说说今天的记录内容。

    今天看了看 fossa 引入插件数量:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    感觉还是引入的有点多,就这么个小项目。所以接下来还是要考虑如何减少第三方插件的不价值引入。今天彻底把 Primevue 移除。

    重构--彻底去除 primevue

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    天气小布局

    没想好怎么使用天气这个小布局,之前单独成一个组件,是为了后续看看如何扩展使用,所以重构起来比较简单:

    <template>
      <n-badge
        :value="temp"
        class="weather"
      >
        <n-image
          width="40"
          :src="weatherIcon"
        />
      </n-badge>
    </template>
    
    <script lang="ts">
    import { defineComponent} from 'vue';
    import { NBadge, NImage } from 'naive-ui';
    import weathericons from '~/images/weathericons/100.png';
    

    没什么可说的,直接用一个 NBadge 组件解决。

    创建事件组件

    <template>
      <Dialog
        v-model:visible="eventDialogVisible"
        :modal="true"
        @click="$emit('update:visibleFullDialog', eventDialogVisible)"
      >
        <div class="p-fluid">
          <span class="p-float-label">
            <InputText
              id="eventInput"
              v-model="eventText"
              type="text"
            />
            <label for="eventInput">事件内容</label>
          </span>
        </div>
        <div class="p-fluid p-formgrid p-grid">
          <Calendar
            id="range"
            v-model="dates"
            date-format="MM d,yy"
            ::minDate="Date()"
            selection-mode="range"
            :inline="true"
          />
        </div>
        <template #footer>
          <Button
            label="取消"
            icon="pi pi-times"
            class="p-button-danger"
            @click="$emit('update:visibleFullDialog', false)"
          />
          <Button
            label="确定"
            icon="pi pi-check"
            autofocus
            @click="add"
          />
        </template>
      </Dialog>
    </template>
    

    核心的主要使用:DialogInputTextCalendar:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    下面使用 Naive UI 找出对应的重构:

    <template>
      <n-drawer-content
        
        closable
      >
        <n-space vertical>
          <n-input
            id="eventInput"
            v-model:value="eventText"
            placeholder="事件内容"
          />
          <n-date-picker
            v-model:value="dates"
            type="daterange"
            :actions="['confirm']"
            clearable
          />
        </n-space>
        <template #footer>
          <n-button
            type="success"
            @click="add"
          >
            增加
          </n-button>
        </template>
      </n-drawer-content>
    </template>
    

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    主界面

    主界面主要是最后一个下拉菜单了:

      <Menu
        id="overlay_tmenu"
        ref="menu"
        :model="items"
        :popup="true"
      />
      ...
      import Menu from 'primevue/menu';
    

    这个直接使用 Naive UI 的下拉菜单解决:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

      <n-dropdown
        trigger="hover"
        placement="bottom-start"
        :options="options"
        @select="dropdownClick"
      >
        <n-button
          text
          type="success"
          :keyboard="false"
          class="dropdown"
        >
          <n-icon>
            <list-icon />
          </n-icon>
        </n-button>
      </n-dropdown>
      
      ...
      
      import { NDropdown, NDrawer, NDrawerContent, NButton, NIcon } from 'naive-ui';
    import { List as ListIcon, PowerOff as PowerOffIcon } from '@vicons/fa';
    
    options: [
    {
      label: '创建事件',
      key: 'goCreateEventView',
      icon() {
        return h(NIcon, null, {
          default: () => h(Add12FilledIcon),
        });
      },
      on: this.goCreateEventView,
    },
    {
      label: '设置',
      key: 'goSettingView',
      icon() {
        return h(NIcon, null, {
          default: () => h(LauncherSettings24FilledIcon),
        });
      },
      on: this.goSettingView,
    },
    {
      type: 'divider',
      key: 'd1',
    },
    {
      label: '退出应用',
      key: 'quit',
      icon() {
        return h(NIcon, null, {
          default: () => h(PowerOffIcon),
        });
      },
      on: this.quit,
    },
    ],
    

    这个代码基本参考官网文档来的,没出现什么问题,此外之前的操作按钮用的是 Fullcalendar 自定义按钮,这次也把他们移除了(为后续自定义日历组件做准备):

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    执行看看效果:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    到此,基本把所有该用到的地方都改过来了,最后就剩下引用了。

    移除所有引用

    // index.ts
    import PrimeVue from 'primevue/config';
    import ToastService from 'primevue/toastservice';
    import 'primevue/resources/themes/saga-green/theme.css';
    import 'primevue/resources/primevue.min.css';
    import 'primeicons/primeicons.css';
    
    // package.json
    "primeflex": "^2.0.0",
    "primeicons": "^4.1.0",
    "primevue": "3.3.5",
    

    小结

    最后我们重新 yarn upgrade 生成新的 yarn.lock 文件以供 Github Action 自动打包服务。

    今天刚好第二十天,基本完成该有的逻辑和代码了,剩下的 10 天就是把每一个功能和模块好好排查问题,把 Test 测试用例补上,以及参考主流的开源项目把该有得补上,至少还有以下几个内容没完成:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    最后,看看依赖项少了 3 个:

    Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue


    起源地下载网 » Electron+Vue3 MAC 版日历开发记录(20)——彻底去除PrimeVue

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元