前端如何低门槛开发iOS、Android、小程序多端应用

news/2024/7/10 2:50:49 标签: vue, java, js, html, javascript
htmledit_views">
html" title=js>js_content">

现如今跨平台开发技术已不是什么新鲜话题了,在市面上也有一些开源的框架可供选择,然而技术成熟、产品服务健全的平台并不多,其中也不乏推陈出新的框架值得关注。

比如最近使用的AVM,由APICloud迭代推出的多端开发框架,基于JavaScript,兼容多语法,如果是Vue、React的用户,可直接上手,没什么学习成本,具备虚拟DOM,可一次编写多端渲染;主要是APICloud上线已有7年,相对已经成熟,所以我把自己的一些认知和实践结合AVM官方文档的内容做了一下整理,希望能对需要使用跨平台开发技术的开发者有所帮助。

为什么学习AVM框架?

结合AVM官网的介绍和我自己的一些实践经验,我总结了一系列AVM的特性,我想这些内容足以让你主动去学习AVM框架了。

AVM特性

1. 一套代码可编译为对应Android 、iOS 、微信小程序、iOS轻App、H5端的安装包或代码包。

2. 兼容APICloud2.0技术栈,这意味着平台上上千款Android iOS原生模块可供使用。或者在老项目里部分引入3.0的技术,对APP局部进行优化。

3. 原生引擎渲染。如果使用 avm.html" title=js>js 进行开发,App 将使用无 webView 的原生引擎 3.0 进行渲染,所有组件及视图与 Android & iOS 系统原生组件和视图百分百对齐。

4. 类Vue语法和兼容 React JSX。有Vue或React基础的用户可以很快上手。

5. 组件化开发,提升代码复用率。

AVM页面介绍

AVM中的页面称为stml页面,一个典型的 stml 文件代码如下:

<template>  
      <view>  
          <view class="header">  
              <text>{title}</text>  
          </view>  
          <view class="content">  
              <text>{content}</text>  
          </view>  
          <view class="footer">  
              <text>{footer}</text>  
          </view>  
      </view>  
  </template>  
  <style>  
      .header {  
        height: 45px;  
      }  
      .content {  
        flex-direction:row;  
      }  
      .footer {  
        height: 55px;  
      }  
  </style>  
  <script>  
      export default {  
          name:  api-test ,  


          apiready(){  
              console.log("Hello APICloud");  
          },  


          data(){  
              return {  
                  title:  Hello App ,  
                  content:  this is content ,  
                  footer:  this is footer   
              }  
          }  
      }  
  </script>


数据绑定

从上面代码段中可以看到数据绑定方式为{变量},同时支持双大括号、单大括号将变量或表达式包起来,可以用于绑定文本内容或元素属性


事件绑定

监听事件有两种方式。

使用 on 监听:

<text onclick="doThis">Click me!</text>

使用 v-on 指令以及缩写方式监听:

<text v-on:click="doThis">Click me!</text>
<text @click="doThis">Click me!</text>

事件处理方法

事件的处理方法需要在 methods 中定义,方法默认包含一个参数,可以通过该参数获取 detail、currentTarget 对象等。

<template>  
      <text data-name="avm" onclick="doThis">Click me!</text>  
  </template>  
  <script>  
      export default {  
          name:  test ,  
          methods: {  
              doThis(e){  
                  api.alert({  
                      msg:e.currentTarget.dataset.name  
                  });  
              }  
          }  
      }  
  </script>

事件处理方法也可以使用模板的方式,如:

<text onclick={this.doThis}>Click me!</text>

默认组件举几个例子说明,更多组件可点击文末【阅读原文】查看官方文档。

view 是通用容器组件,内部可以放置任意组件。默认布局方式为flex布局。注意不要直接在 view 内添加文本,添加文本使用 text 组件。

text 组件用于显示文本信息。

<template>  
      <scroll-view class="main" scroll-y>  
          <text class="text">普通文本</text>  
          <text class="text bold">粗体文本</text>  
          <text class="text italic">斜体文本</text>  
          <text class="text shadow">Text-shadow 效果</text>  
      </scroll-view>  
  </template>  
  <style>  
      .main {  
          width: 100%;  
          height: 100%;  
      }  
      .text {  
          height: 30px;  
          font-size: 18px;  
      }  
      .bold {  
          font-weight:bold;  
      }  
      .italic {  
          font-style:italic;  
      }  
      .shadow {  
          text-shadow:2px 2px #f00;  
      }  
  </style>  
  <script>  
      export default {  
          name:  test   
      }  
  </script>

image 组件用于显示图片。button 组件定义一个按钮。input 组件定义一个输入框。swiper 定义滑动视图,支持上下或左右滑动。其中只可放置 swiper-item 组件。scroll-view 定义滚动视图。

若需要在垂直方向滚动,则需要指定高度;若在水平方向滚动,则需要指定宽度,否则可能无法显示。

ist-view 定义可复用内容的竖向滚动视图,可以优化内存占用和渲染性能,支持下拉刷新和上拉加载。可使用 scroll-view 的基本属性。

list-view 里面可放置 cell、list-header、list-footer、refresh 等组件,使用 cell 组件作为每项显示内容。

frame 组件用于显示一个frame,效果同 openFrame 方法一致。

frame-group 组件用于显示一个 frame 组,里面的每个 frame 为一个独立的页面。

组件化开发

定义一个组件:

使用stml定义一个组件 api-test.stml:

<template>    
      <view class= header >  
          <text>{this.data.title}</text>  
      </view>    
  </template>    
  <script>  
      export default {    
          name:  api-test ,  
          data(){  
              return {  
                  title:  Hello APP   
              }  
          }  
      }  
  </script>  
  <style scoped>  
      .header{  
          height: 45px;  
      }  
  </style>

引用组件:

在其他页面或组件引用。

// app-index.stml:  
    
  <template>    
      <view class="app">    
          <img src="./assets/logo.png" />    
          <api-test></api-test>   
      </view>    
  </template>  
  <script>  
      import  ./components/api-test.stml     
        
      export default {    
          name:  app-index ,    
          data: function () {    
              return {  
                  title:  Hello APP   
              }  
          }    
      }    
  </script>    
  <style>    
      .app {     
          text-align: center;    
          margin-top: 60px;    
      }    
  </style>

使用JS定义一个组件/页面 ,可以点击文末【阅读原文】参考官方文档。


组件生命周期

AVM.html" title=js>js组件规范符合Web Components规范,生命周期遵循标准Web Components组件的生命周期。同时兼容Vue组件的生命周期。

所有支持的生命周期事件

生命周期函数名

触发时机

apiready

页面运行时环境准备完毕&渲染完毕。当页面未引入组件时,该事件等同于installed。

install

组件被挂载到真实DOM(或App原生界面)之前

installed

组件被挂载到真实DOM(或App原生界面)之后。在页面级别中,该事件等同于apiready。

render

组件开始渲染

uninstall

组件从真实DOM(或App原生界面)移除之前

beforeUpdate

组件更新之前

updated

组件更新完成

beforeRender

组件开始渲染之前

『每个页面都应实现apiready,并在apiready后处理业务逻辑;installed属于组件级别生命周期,在页面加载组件过程中即被触发,其触发时机早于apiready』

生命周期更多详情,请点击【阅读原文】查看官方文档。

总体而言,APICloud这款开发框架,比较趋近于原生的开发体验,通过简洁的模式来分离应用的用户界面、业务逻辑和数据模型,适合高度定制化的项目,另外APICloud网站上提供了很多模块、实例和工具源码的下载,感兴趣的前端小伙伴可以点击【阅读原文】来学习尝试下~

登录APICloud官网:www.apicloud.com,体验高性能多端开发技术!


http://www.niftyadmin.cn/n/1251148.html

相关文章

React 官方文档终于更新了!

React一直被吐槽官方文档对新手不友好&#xff0c;而且自从v16.8出现Hooks后&#xff0c;Hooks逐渐成为React主要发展方向&#xff0c;新特性都会基于Hooks开发。但是当前官方文档还是基于class component讲解。所以从去年10月开始&#xff0c;React团队的「Rachel Nabors」开始…

React Hook 高级用法

一. Hook高级使用 1.1. useReducer很多人看到useReducer的第一反应应该是redux的某个替代品&#xff0c;其实并不是。useReducer仅仅是useState的一种替代方案&#xff1a;在某些场景下&#xff0c;如果state的处理逻辑比较复杂&#xff0c;我们可以通过useReducer来对其进行拆…

重磅!微软发布 vscode.dev,把 VSCode 带入浏览器!

原作者&#xff1a;Chris Dias原文&#xff1a;https://code.visualstudio.com/blogs/2021/10/20/vscode-dev翻译&#xff1a;韩老师 Google Translate早在 2019 年&#xff0c;当.dev 顶级域名开放时&#xff0c;我们赶紧注册了 vscode.dev。像许多购买.dev 域名的人一样&…

太赞了!华为工程师总结的400道前端面试题和VUE笔记资料提供免费下载

10月份很多小伙伴找我要一些前端面试题资料&#xff0c;于是我翻箱倒柜&#xff0c;把这份华为大牛总结的前端开发归纳笔记找出来&#xff0c;同时赠送直播、录播、视频、笔记、源码、软件包和价值1万元VUE笔记资料&#xff0c;免费共享给大家&#xff01;据说有小伙伴靠这份笔…

这波 React 属实被针对了

昨天在网上愉快冲浪时&#xff0c;看到一篇框架测评&#xff0c;效果属实爆炸。作者用React和Solid.js开发了同样的Demo。为什么用Solid.js和React对比呢&#xff0c;让我们看看Solid.js的API&#xff1a;HooksContext、Portal APIError Boundaries不能说和React多雷同&#xf…

效率神器!UI 稿智能转换成前端代码

做前端&#xff0c;不搬砖大家好&#xff0c;我是小生方勤。从事前端五年之久&#xff0c;也算见证了前端数次变革&#xff0c;从到DW&#xff08;Dreamweaver&#xff09;到H5C3、从JQuery到MVC框架&#xff0c;无数前端大佬在为打造前端完整生态做出努力&#xff0c;由于他们…

仅仅过去 4 年,微软最终放弃了 Electron

↓推荐关注↓作者 | electron 团队编译 | InfoQ - 核子可乐、褚杏娟策划 | InfoQ - Tina2017 年时&#xff0c;Electron 可以说是 Web 应用在桌面平台发布的最佳、甚至是唯一选项&#xff0c;但如今它却成了需要被优化淘汰的对象。 微软近期宣布&#xff0c;旗下 Teams 应用活…

这一局,中国前端属实领先世界了...

让我们回到4年前&#xff0c;17年国外前端圈都发生了哪些大事&#xff1f;为了弥补web和原生应用体验的差异&#xff0c;谷歌大力推进PWA所有主流浏览器都支持WebAssemblyServerless开始流行CSS-in-JS走进主流前端视野TypeScript火爆GraphQL爆炸式增长......那么这一年&#xf…