ViteJS, Ionic Framework Beta v6 및 VueJS 시작하기

65873 단어 vueionicjavascriptvite

바이트 + 이온 v6 + VueJS



v6 공식 릴리스로 업데이트되었습니다. 이 분기를 참조하세요.



Ionic에서 beta for v6을 발표한 이후로 ViteJS에서 ionic을 사용할 수 있는지 확인하고 싶었습니다.

If you want to understand more why Vite was created and what its benefits are, you can read here



내가 취한 접근 방식은 vuejs에서 vuejs 프로젝트를 생성하기 위한 지침을 따른 다음 Ionic 항목을 추가하는 것입니다. 저에게는 효과가 있었지만 다른 방법으로 수행한 경우 Ionic에서 프로젝트를 생성하고. 그런 다음 vite를 추가하십시오. 알려주십시오.
  • https://vitejs.dev/guide/#scaffolding-your-first-vite-project

  • vite 프로젝트를 생성한 후 Ionic Framework v6 베타를 설치해야 합니다.

  • https://github.com/ionic-team/ionic-framework/blob/next/BETA.md

  • // install latest vue
    npm install vue@next vue-router@4
    
    // install latest ionic beta
    npm install @ionic/vue@next @ionic/vue-router@next
    

    webpack을 사용하지 않기 때문에 다른 단계가 필요하지 않다고 생각합니다.

    여기에 문서화된 알려진 문제가 있습니다.


  • https://github.com/ionic-team/ionic-framework/issues/23539

  • 기본적으로 "vue": "^3.0.11",를 사용하고 package.json 파일에서 업데이트해야 합니다.

    프로젝트를 이온화하기



    다음 단계는 vue 프로젝트에 모든 Ionic 관련 항목을 추가하는 것입니다. 모든 것을 처리하는 내 github 저장소에서 사용할 수 있는 템플릿 프로젝트가 있지만 아래에서 이 작업을 수행하기 위한 변경 사항을 간략하게 설명했습니다.

    대부분의 변경 사항은 ionic 및 필요한 모든 css를 가져와야 하는 main.ts에 있습니다.

    import { createApp } from 'vue'
    import App from './App.vue'
    
    import { IonicVue } from '@ionic/vue';
    
    /* Core CSS required for Ionic components to work properly */
    import '@ionic/vue/css/core.css';
    
    /* Basic CSS for apps built with Ionic */
    import '@ionic/vue/css/normalize.css';
    import '@ionic/vue/css/structure.css';
    import '@ionic/vue/css/typography.css';
    
    /* Optional CSS utils that can be commented out */
    import '@ionic/vue/css/padding.css';
    import '@ionic/vue/css/float-elements.css';
    import '@ionic/vue/css/text-alignment.css';
    import '@ionic/vue/css/text-transformation.css';
    import '@ionic/vue/css/flex-utils.css';
    import '@ionic/vue/css/display.css';
    
    /* Theme variables - copied from existing project */
    import './theme/variables.css';
    
    // be sure to add the use(IonicVue)
    createApp(App).use(IonicVue).mount('#app')
    

    이 파일을 프로젝트의 올바른 위치에 추가합니다./theme/variables.css.

    /* Ionic Variables and Theming. For more info, please see:
    http://ionicframework.com/docs/theming/ */
    
    /** Ionic CSS Variables **/
    :root {
      /** primary **/
      --ion-color-primary: #3880ff;
      --ion-color-primary-rgb: 56, 128, 255;
      --ion-color-primary-contrast: #ffffff;
      --ion-color-primary-contrast-rgb: 255, 255, 255;
      --ion-color-primary-shade: #3171e0;
      --ion-color-primary-tint: #4c8dff;
    
      /** secondary **/
      --ion-color-secondary: #3dc2ff;
      --ion-color-secondary-rgb: 61, 194, 255;
      --ion-color-secondary-contrast: #ffffff;
      --ion-color-secondary-contrast-rgb: 255, 255, 255;
      --ion-color-secondary-shade: #36abe0;
      --ion-color-secondary-tint: #50c8ff;
    
      /** tertiary **/
      --ion-color-tertiary: #5260ff;
      --ion-color-tertiary-rgb: 82, 96, 255;
      --ion-color-tertiary-contrast: #ffffff;
      --ion-color-tertiary-contrast-rgb: 255, 255, 255;
      --ion-color-tertiary-shade: #4854e0;
      --ion-color-tertiary-tint: #6370ff;
    
      /** success **/
      --ion-color-success: #2dd36f;
      --ion-color-success-rgb: 45, 211, 111;
      --ion-color-success-contrast: #ffffff;
      --ion-color-success-contrast-rgb: 255, 255, 255;
      --ion-color-success-shade: #28ba62;
      --ion-color-success-tint: #42d77d;
    
      /** warning **/
      --ion-color-warning: #ffc409;
      --ion-color-warning-rgb: 255, 196, 9;
      --ion-color-warning-contrast: #000000;
      --ion-color-warning-contrast-rgb: 0, 0, 0;
      --ion-color-warning-shade: #e0ac08;
      --ion-color-warning-tint: #ffca22;
    
      /** danger **/
      --ion-color-danger: #eb445a;
      --ion-color-danger-rgb: 235, 68, 90;
      --ion-color-danger-contrast: #ffffff;
      --ion-color-danger-contrast-rgb: 255, 255, 255;
      --ion-color-danger-shade: #cf3c4f;
      --ion-color-danger-tint: #ed576b;
    
      /** dark **/
      --ion-color-dark: #222428;
      --ion-color-dark-rgb: 34, 36, 40;
      --ion-color-dark-contrast: #ffffff;
      --ion-color-dark-contrast-rgb: 255, 255, 255;
      --ion-color-dark-shade: #1e2023;
      --ion-color-dark-tint: #383a3e;
    
      /** medium **/
      --ion-color-medium: #92949c;
      --ion-color-medium-rgb: 146, 148, 156;
      --ion-color-medium-contrast: #ffffff;
      --ion-color-medium-contrast-rgb: 255, 255, 255;
      --ion-color-medium-shade: #808289;
      --ion-color-medium-tint: #9d9fa6;
    
      /** light **/
      --ion-color-light: #f4f5f8;
      --ion-color-light-rgb: 244, 245, 248;
      --ion-color-light-contrast: #000000;
      --ion-color-light-contrast-rgb: 0, 0, 0;
      --ion-color-light-shade: #d7d8da;
      --ion-color-light-tint: #f5f6f9;
    }
    
    @media (prefers-color-scheme: dark) {
      /*
       * Dark Colors
       * -------------------------------------------
       */
    
      body {
        --ion-color-primary: #428cff;
        --ion-color-primary-rgb: 66,140,255;
        --ion-color-primary-contrast: #ffffff;
        --ion-color-primary-contrast-rgb: 255,255,255;
        --ion-color-primary-shade: #3a7be0;
        --ion-color-primary-tint: #5598ff;
    
        --ion-color-secondary: #50c8ff;
        --ion-color-secondary-rgb: 80,200,255;
        --ion-color-secondary-contrast: #ffffff;
        --ion-color-secondary-contrast-rgb: 255,255,255;
        --ion-color-secondary-shade: #46b0e0;
        --ion-color-secondary-tint: #62ceff;
    
        --ion-color-tertiary: #6a64ff;
        --ion-color-tertiary-rgb: 106,100,255;
        --ion-color-tertiary-contrast: #ffffff;
        --ion-color-tertiary-contrast-rgb: 255,255,255;
        --ion-color-tertiary-shade: #5d58e0;
        --ion-color-tertiary-tint: #7974ff;
    
        --ion-color-success: #2fdf75;
        --ion-color-success-rgb: 47,223,117;
        --ion-color-success-contrast: #000000;
        --ion-color-success-contrast-rgb: 0,0,0;
        --ion-color-success-shade: #29c467;
        --ion-color-success-tint: #44e283;
    
        --ion-color-warning: #ffd534;
        --ion-color-warning-rgb: 255,213,52;
        --ion-color-warning-contrast: #000000;
        --ion-color-warning-contrast-rgb: 0,0,0;
        --ion-color-warning-shade: #e0bb2e;
        --ion-color-warning-tint: #ffd948;
    
        --ion-color-danger: #ff4961;
        --ion-color-danger-rgb: 255,73,97;
        --ion-color-danger-contrast: #ffffff;
        --ion-color-danger-contrast-rgb: 255,255,255;
        --ion-color-danger-shade: #e04055;
        --ion-color-danger-tint: #ff5b71;
    
        --ion-color-dark: #f4f5f8;
        --ion-color-dark-rgb: 244,245,248;
        --ion-color-dark-contrast: #000000;
        --ion-color-dark-contrast-rgb: 0,0,0;
        --ion-color-dark-shade: #d7d8da;
        --ion-color-dark-tint: #f5f6f9;
    
        --ion-color-medium: #989aa2;
        --ion-color-medium-rgb: 152,154,162;
        --ion-color-medium-contrast: #000000;
        --ion-color-medium-contrast-rgb: 0,0,0;
        --ion-color-medium-shade: #86888f;
        --ion-color-medium-tint: #a2a4ab;
    
        --ion-color-light: #222428;
        --ion-color-light-rgb: 34,36,40;
        --ion-color-light-contrast: #ffffff;
        --ion-color-light-contrast-rgb: 255,255,255;
        --ion-color-light-shade: #1e2023;
        --ion-color-light-tint: #383a3e;
      }
    
      /*
       * iOS Dark Theme
       * -------------------------------------------
       */
    
      .ios body {
        --ion-background-color: #000000;
        --ion-background-color-rgb: 0,0,0;
    
        --ion-text-color: #ffffff;
        --ion-text-color-rgb: 255,255,255;
    
        --ion-color-step-50: #0d0d0d;
        --ion-color-step-100: #1a1a1a;
        --ion-color-step-150: #262626;
        --ion-color-step-200: #333333;
        --ion-color-step-250: #404040;
        --ion-color-step-300: #4d4d4d;
        --ion-color-step-350: #595959;
        --ion-color-step-400: #666666;
        --ion-color-step-450: #737373;
        --ion-color-step-500: #808080;
        --ion-color-step-550: #8c8c8c;
        --ion-color-step-600: #999999;
        --ion-color-step-650: #a6a6a6;
        --ion-color-step-700: #b3b3b3;
        --ion-color-step-750: #bfbfbf;
        --ion-color-step-800: #cccccc;
        --ion-color-step-850: #d9d9d9;
        --ion-color-step-900: #e6e6e6;
        --ion-color-step-950: #f2f2f2;
    
        --ion-toolbar-background: #0d0d0d;
    
        --ion-item-background: #000000;
    
        --ion-card-background: #1c1c1d;
      }
    
      /*
       * Material Design Dark Theme
       * -------------------------------------------
       */
    
      .md body {
        --ion-background-color: #121212;
        --ion-background-color-rgb: 18,18,18;
    
        --ion-text-color: #ffffff;
        --ion-text-color-rgb: 255,255,255;
    
        --ion-border-color: #222222;
    
        --ion-color-step-50: #1e1e1e;
        --ion-color-step-100: #2a2a2a;
        --ion-color-step-150: #363636;
        --ion-color-step-200: #414141;
        --ion-color-step-250: #4d4d4d;
        --ion-color-step-300: #595959;
        --ion-color-step-350: #656565;
        --ion-color-step-400: #717171;
        --ion-color-step-450: #7d7d7d;
        --ion-color-step-500: #898989;
        --ion-color-step-550: #949494;
        --ion-color-step-600: #a0a0a0;
        --ion-color-step-650: #acacac;
        --ion-color-step-700: #b8b8b8;
        --ion-color-step-750: #c4c4c4;
        --ion-color-step-800: #d0d0d0;
        --ion-color-step-850: #dbdbdb;
        --ion-color-step-900: #e7e7e7;
        --ion-color-step-950: #f3f3f3;
    
        --ion-item-background: #1e1e1e;
    
        --ion-toolbar-background: #1f1f1f;
    
        --ion-tab-bar-background: #1f1f1f;
    
        --ion-card-background: #1e1e1e;
      }
    }
    

    기본 URL에 액세스


    router/index.ts 파일에서 기본 URL에 대한 환경 변수에 약간 다르게 액세스해야 합니다.

    // https://vitejs.dev/guide/env-and-mode.html
    const router = createRouter({
        history: createWebHistory(import.meta.env.BASE_URL),
        routes
    })
    

    프로젝트 실행



    npm run dev
    

    동영상




    소스 코드




    아론크사운더스 / ionicv6-beta-vue-vite-project-1


    VueJS 및 Vite가 포함된 Ionic 스타터 템플릿 - Ionic Framework의 새로운 v6 베타를 사용합니다.





    ViteJS, Ionic Framework Beta v6 및 VueJS 시작하기


  • 이 템플릿은 Vite에서 Ionic, Vue 3 및 Typescript로 개발을 시작하는 데 도움이 됩니다.
  • 이 블로그 게시물에서 자세한 정보 보기 -
  • 여기에 동영상도 있습니다 -

  • 권장 IDE 설정


    VSCode + Vetur . 설정에서 활성화vetur.experimental.templateInterpolationService를 확인하세요!

    <스크립트 설정>을 사용하는 경우


    <script setup> 은 현재 RFC 단계에 있는 기능입니다. 구문에 대한 적절한 IDE 지원을 받으려면 Vetur 대신 Volar을 사용하고 Vetur를 비활성화하십시오.

    TS에서 .vue 가져오기에 대한 유형 지원


    TypeScript는 .vue 가져오기에 대한 유형 정보를 처리할 수 없기 때문에 기본적으로 일반 Vue 구성 요소 유형으로 시밍됩니다. 대부분의 경우 템플릿 외부의 구성 요소 prop 유형에 대해 실제로 신경 쓰지 않는다면 괜찮습니다. 그러나 .vue 가져오기에서 실제 소품 유형을 가져오려는 경우(예: 가져오기 위해…

    View on GitHub

    좋은 웹페이지 즐겨찾기