如何为自定义(vanilla Javascript)Ionic 应用程序设置“构建”脚本?

Posted

技术标签:

【中文标题】如何为自定义(vanilla Javascript)Ionic 应用程序设置“构建”脚本?【英文标题】:How do I setup a "build" script for a custom (vanilla Javascript) Ionic app? 【发布时间】:2021-06-10 18:23:28 【问题描述】:

我是一名技术教师,正在为高中生设计一门编码课程。我想教他们 Ionic 而不必教他们 React、Angular 或 Vue。他们已经了解基本的 Web 开发,所以我希望他们能够仅使用原生 javascript + Ionic 创建 iosandroid 和 Web 应用程序。

当我运行“ionic init”开始时,我不得不从 Angluar、React、Vue 或 Custom 中进行选择。所以,当然,我选择自定义。

然后我开始构建一个“Hello World”应用程序。在 Android Studio 中查看简单应用程序时,我运行“离子电容器添加 android”,然后运行“npx cap open android”。都很好。

当我开始向我的简单应用程序添加更多内容,然后尝试在 Android Studio 中查看这些更改时,就会出现问题。通常,这将通过运行“离子电容器复制安卓”来完成。但这在我的自定义应用程序中不起作用。我收到此错误消息:

[ERROR] Cannot perform build.

Since you're using the custom project type, you must provide the ionic:build npm script so the Ionic CLI can build your project.

我该如何解决这个问题? 如何为我的自定义应用提供构建脚本?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

由于您使用的是 vanilaJS,因此您根本不需要任何构建步骤。只需将您的index.html 放入www 文件夹,并包含一些内容。你可以从类似的东西开始

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">

    <title>Ionic without any framework</title>

    <script type="module" src="https://cdn.jsdelivr.net/npm/@ionic/core@latest/dist/ionic/ionic.esm.js"></script>
    <script nomodule src="https://cdn.jsdelivr.net/npm/@ionic/core@latest/dist/ionic/ionic.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ionic/core@latest/css/ionic.bundle.css"/>
</head>
<body>

<!-- We create a vanilla Javascript function to call the alert -->
<script>
    hello = async function () 
        alert('Hello World!');
    ;
</script>

<!-- We declare an Ionic app using the <ion-app/> element -->
<ion-app>
    <!-- Cool thing, the Ionic CSS utilities could be used too -->
    <ion-content text-center>
        <h1>Basic usage</h1>
        <!-- We add an ion-button with an onclick event -->
        <ion-button onclick="hello()">Click me</ion-button>
    </ion-content>
</ion-app>

</body>
</html>

然后ionic capacitor copy android 应该可以工作。 (我假设遵循初始化步骤ionic initnpm initionic capacitor add android

【讨论】:

非常感谢您的详细回答。不幸的是,我已经完成了你所说的一切。 “离子电容器添加安卓”工作正常。但是“离子电容器复制安卓”特别抛出一个错误,指出“您必须提供 ionic:build npm 脚本,以便 Ionic CLI 可以构建您的项目。” 现在,我能做的最好的就是每次我需要在 Android Studio 中查看更改时删除 android 文件夹。删除文件夹后,不仅需要重新运行“离子电容器添加android”,还需要在Android Studio中重新打开android文件夹,比较麻烦。 “ionic serve”命令——允许我在网络浏览器中查看应用程序——给出了类似的错误。它说:“您必须提供 ionic:serve npm 脚本,以便 Ionic CLI 可以为您的项目提供服务。”幸运的是,我找到了解决这个问题的方法——我只是使用 Visual Studio Code 的“Live Server”扩展在本地为应用程序提供服务。 你有什么版本的ionic cli【参考方案2】:

我也有同样的问题:(

我的团队从http://www.javadecompilers.com/apk 获得了一个 Ionic 框架应用程序,它仅附带资源/和源/(代码还可以,但现在如何构建?它不是 Vue、React 和 Angular)

应用程序使用cordova构建到android,并按照Tomas提出的步骤,CLI在到达“离子电容器添加android”(使用cordova)步骤时询问构建脚本。

【讨论】:

【参考方案3】:

因为看起来你正在尝试教他们开发的基本原理,所以我什至不会使用 Ionic。它是一个跨平台开发的框架。一旦您选择使用该框架,您不妨购买其中一个 Javascript/Typescript 开发框架,以获得它们带来的优势。

对于针对 iOS 和 Android 的 POJO 工作,我会investigate using Cordova.

请考虑一下在四轨磁带机上教学生录音基础知识与在 128 轨数字录音棚上花里胡哨的区别。

许多基础是相同的,没有所有改进的复杂性。

在我从事企业级财务应用程序的日常工作中,我们仍然使用 Cordova,并且近期没有迁移计划。

在我公认的有偏见的观点中,Cordova 将是一个基于“普通旧 Javascript 对象”的跨平台开发介绍的更好起点。

这将使向离子和电容器的飞跃更容易。

因为,这只是我的看法,如果他们还没有了解像 Angular 这样的框架的优势,那么使用 Ionic/Capacitor 就是本末倒置。

【讨论】:

以上是关于如何为自定义(vanilla Javascript)Ionic 应用程序设置“构建”脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UITabBarItem 设置自定义标题属性

如何为自定义控件创建事件

如何为 Handsontable 中的每一列定义自定义验证器

如何为 iPhone 创建自定义 Interface Builder 插件?

如何为 AVD 管理器创建自定义 Android 设备配置文件?

如何为 Jcrop 'setSelect' 选项指定自定义值?