Ionic 构建 Vue / React / Angular Web App

Ionic Framework一个开源的使用web技术(HTML , CSS , JS)UI库,用于构建高性能和高质量的移动和桌面应用程序

移动端开发框架ionic 最近发布version 4大版本,重写了UI组件库,可以让更多的前端框架集成使用,当前已支持 Vue , React , Angular。更让人兴奋的是,如果你不想使用任何框架,它同样支持使用CDN资源的形式,直接在项目中引用。下面我们就看看,它如何在Vue , React, Angular 中集成使用。

环境搭建

首先我们要安装Node.js 环境,然后使用node 的包管理工具全局安装Ionic CLI

$ npm install -g ionic

Vue

我们通过Vue CLI 创建一个的新的项目,然后将Ionic 集成进去。

$ npm install -g @vue/cli

$ vue create ionic-vue

select default options

$ cd ionic-vue

$ npm run serve (请在chrome中以移动端窗口打开)

通过以上的步骤可以打开如下的页面:

image

下一步我们将ionic / vue 安装到项目中

$ npm install @ionic/core @ionic/vue vue-router

然后我们将使用ionic 中提供的UI 组件重新构建 HelloWorld.vue。@ionic/vue 是作为Vue的一个插件,我们首先要在main.js 中注入它。

import Vue from 'vue';
import App from './App.vue';
import IonicVue from '@ionic/vue';
import '@ionic/core/css/core.css';
import '@ionic/core/css/ionic.bundle.css';

Vue.config.productionTip = false;
Vue.use(IonicVue);
new Vue({
  render: h => h(App)
}).$mount('#app');

在这里我们做了:
1、首先将IonicVue已插件的形式注入到项目中
2、其次将Ionic 组件样式表注入进来
3、然后使用Vue.use(IonicVue)方法将IonicVue插件应用到项目中

Note: 这时在你的IDE编辑器中或者浏览器控制台里会提示unknown element, 这是因为ionic 组件是web 组件,所以你需要告诉vue,以ion前缀开头的组件不是Vue组件,需要在src/main.js中添加如下设置:

Vue.config.ignoredElements = [/^ion-/]

最后使用ionic 的UI 组件来重写编写HelloWorld.vue页面

<template>
  <ion-app>
    <ion-header>
      <ion-toolbar color="primary">
        <ion-title>Hello, Ionic!</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content>
      <ion-card>
        <img src="https://images.unsplash.com/photo-1552394459-917cbbffbc84?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80"/>
        <ion-card-header>
          <ion-card-subtitle>Isn't it great?</ion-card-subtitle>
          <ion-card-title>Look at this view!</ion-card-title>
        </ion-card-header>
        <ion-card-content>
          Although, it does look fairly cold.
        </ion-card-content>
      </ion-card>
    </ion-content>
  </ion-app>
</template>

<script>
export default {
  name: 'app',
}
</script>

<style>
</style>

这时你的界面像这样:


image.png

React

将ionic 集成进React 项目中其实和Vue 差别不大,这里我们采用Facebook提供的脚本create-react-app 创建React项目。

$ npm install create-react-app -g

$ create-react-app ionic-react

$ cd ionic-react

$ npm start (请在chrome中以移动端窗口打开)

$ npm install @ionic/react react-router react-router-dom

同样的,我们将ionic 集成进项目中,在使用组件的过程和Vue有一些差异。

在index.js中,我们需要将ionic 的css 样式注入进去

import '@ionic/core/css/core.css';
import '@ionic/core/css/ionic.bundle.css';

在App.js 中我们将使用的组件注入进去

import React, { Component } from 'react';

import {
  IonApp,
  IonHeader,
  IonToolbar,
  IonContent,
  IonTitle,
  IonCard,
  IonCardHeader,
  IonCardTitle,
  IonCardSubtitle,
  IonCardContent
} from '@ionic/react';

class App extends Component {
  render() {
    return (
      <IonApp>
        <IonHeader>
          <IonToolbar color="primary">
            <IonTitle>Hello, Ionic!</IonTitle>
          </IonToolbar>
        </IonHeader>
        <IonContent>
          <IonCard>
            <img src="https://images.unsplash.com/photo-1552394459-917cbbffbc84?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80" />
            <IonCardHeader>
              <IonCardSubtitle>Isn't it great?</IonCardSubtitle>
              <IonCardTitle>Look at this view!</IonCardTitle>
            </IonCardHeader>
            <IonCardContent>Although, it does look fairly cold.</IonCardContent>
          </IonCard>
        </IonContent>
      </IonApp>
    );
  }
}
export default App;

这时你的界面会和vue项目中出现相同的效果:


image.png

Angular

ionic 3及以前的版本,组件是采用Angular 作为内置JS框架,ionic 4同样支持使用ionic cli 一键创建项目。

$ ionic start ionic-angular blank --type=angular (如果不添加option的话,会默认创建ionic3 的项目)

don't install AppFlow at this stage

$ cd ionic-angular

$ ionic serve (请在chrome中以移动端窗口打开)

采用ionic cli创建的项目里,我们不需要注入@ionic/angular (默认注入),或者在页面中注入组件来构建页面

<ion-header>
  <ion-toolbar color="primary">
    <ion-title>Hello, Ionic!</ion-title>
  </ion-toolbar>
</ion-header>
<ion-content>
  <ion-card>
    <img
      src="https://images.unsplash.com/photo-1552394459-917cbbffbc84?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80" />
    <ion-card-header>
      <ion-card-subtitle>Isn't it great?</ion-card-subtitle>
      <ion-card-title>Look at this view!</ion-card-title>
    </ion-card-header>
    <ion-card-content>
      Although, it does look fairly cold.
    </ion-card-content>
  </ion-card>
</ion-content>

同样你能看到如上两个项目中相同的页面。


image.png

总结

Ionic 作为一个流行的高性能移动端UI框架,它如何可以集成进Vue / React /Angular 前端框架,答案是就像它介绍的一样,它采用的是web standard 技术,即内置的组件都是web element。它是采用 stencil.js(ionic 团队开发的一个编译器),可以把你写的web component 编译成web element(即普通的html),这样就可以在各个框架中共同使用,真正做到"write once, run everywhere"。

参考链接:https://dev.to/paulhalliday/ionic-4-angular-vue-js-and-react-1o14

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269