一文带你快速掌握如何读懂 YonBuilder移动开发 的项目源码

news2024/11/26 2:35:28

本文将通过四大步的简单讲述,让新手开发者朋友们快速掌握阅读YonBuilder移动开发项目源码的技巧方法。

1.读懂代码的第一步,了解项目的整体文件结构

在这里插入图片描述

  • CSS: 存放css样式的文件;

  • feature:猜测是用来存放特征文件的,实际开发中没看到真实使用案例,通常不需要,删除即可。

  • html:核心文件夹,存放项目各个页面对应的html文件

  • icon:存放项目的icon图标,仅对本地测试包有效,可删除

  • image:图片资源文件夹

  • launch:存放项目的启动图图片资源,仅对本地测试包有效,可删除

  • res:存放非图片资源的文件夹

  • script:存放通用的js文件,包括一些封装有通用逻辑的js文件,或引用的第三方js框架文件等

  • wgt:用来存放widget子包,根据项目实际需要使用,一般不用,可删除

  • config.xml: 项目的配置文件, 存放关于项目配置的相关信息数据,如入口文件,appid等

  • index.html: 默认的整个app项目的入口文件,当app启动后,会首先读取运行该文件。(可以在config.xml中重新修改设置程序的入口文件)

    PS: 上面的截图是通常在创建一个新的项目时,系统会自动帮你创建好的项目文件结构,对于一个新的项目,处于简化项目代码的需要,建议可将其中的featureiconlaunch wgt 均可删除掉,不影响正常的代码逻辑。

    上面介绍的这些,属于一个项目的核心文件机构,有兴趣的小伙伴,可点击Widget包结构说明了解更多

2.读懂代码的第二步,找到程序的入口文件

通常一个项目的入口文件是根目录下的index.html文件,这个文件是创建应用时,系统默认的。但是这个入口配置是可以在config.xml中修改的,所以如果我们要查看一个项目,首先需要打开应用根目录下的 config.xml 文件,查看一下这个项目的入口文件位置。

在YonStudio开发工具下,config.xml被可视化了,它的入门文件位置见下截图

在这里插入图片描述

我们也可以点击上面截图中导航条右侧的源文件文字,去查看真正的config.xml页面源码

在这里插入图片描述

PS: 当我们再github或者gitee等开源仓库下载一个YonBuilder移动开发项目代码时,如果我们想要运行体验一下代码,那么就需要在config.xml中,将appid的值,修改成我们账户下自己的一个应用项目的appid才行,因为通常我们只能运行和调式自己账户下的应用。特别是如果一些项目引用了一些移动插件,那么我们就需要在云端控制台自己的项目中,同步添加这些移动插件才OK,否则运行就会报错。

有兴趣的小伙伴,可点击config.xml的配置说明在线文档了解更多

3.读懂代码的第三步,了解 HTML文件的编码结构

3.1 html文件编码结构简述

使用YonBuilder移动开发技术,开发出的App项目,其每一个用户可见的页面,必定由一个(=1)win窗口和若干个(≥0)frame窗口组合而成,每一个win或者frame窗口组件,都对应着一个唯一的html页面,所以读懂html文件,是掌握YonBuilder移动开发技术的关键。

一个完整的html文件的基本结构描述如下:


<html>
	<!--head主要包含页面的meta元数据描述-->
	<head>
		<!--页面的meta元数据描述-->
		<meta></meta>
		<!--页面的标题,在移动端没有意义-->
		<title><title>
		<!--页面的资源引用,主要用于引用第三方的css样式文件(支持本地和远程)-->
		<link><link>
		<!--页面内dom引用的class样式-->
		<style><style>
	<head>
	<!--页面的主要结构部分,存放页面结构与内容的dom标签-->
	<body></body>
	<!--主要存放页面的逻辑代码,也可以通过src属性来引用本地或远程的第三方js框架文件-->
	<script>
		<!--非常重要:整个html的入口函数,html页面在被加载完成之后,引擎就会自动调用该函数执行-->
		apiready = function () {
			<!--整个页面的入口运行函数,核心!重要!-->
		}
	</script>
</html>

由上面我们可以看出,在App开发中使用的html结构与web端开发使用的html结构没有什么不同,其结构是保持一致的,这一特性会更方面擅长Web开发的同学迅速上手YonBuilder移动开发。唯一不同的一点是YonBuilder移动开发特有的apiready函数,下面我们就重点介绍一下这个函数。

3.2 apiready函数

apiready是一个生命周期事件函数,它是单个html文件的入口自运行函数,其特性有点类似window.onload事件,它的运行时机是当引擎加载完成html页面,并在页面内的window对象下挂载api对象成功后,进行调用运行。

整个html加载的运行机制,见下图

在这里插入图片描述

这一运行机制会使得开发者更方便的去阅读相关的项目源码,理解整个页面的编程思路和代码逻辑。
同时,这里也说明一下,apiready函数的重要性,即为什么要特别设计出这一一个函数。

引入apiready函数的最根本原因就是在进行YonBuilder移动开发的时候,我们会根据业务逻辑的需要,频繁的使用到大量的引擎内置的api对象函数方法。

在这里插入图片描述

这些api对象方法是YonBuilder移动开发引擎环境所特有的,在原本的浏览器环境中并不存在,所以需要引擎在加载html页面时,去动态注入api对象后,在相关的程序方法中才可以正常调用,否则就会报错。而apiready函数就是一个显性的生命周期事件,是引擎用来告诉程序,现在api对象已经加载完毕,可以正常调用了。

综上所述,新手开发者朋友们,在你编写项目代码时,如果程序使用了相关的api函数,那么一定要保证这个程序方法是在apiready生命周期事件后再被调用执行,一定不能在apiready函数执行前就运行,否则程序就会异常报错。如果定义的函数体内没有使用到相关的api对象,就不受这个限制。

4.读懂代码的第四步,了解「移动插件」这个特殊存在

在一些项目代码中,我们会看到很多语句编码中使用到了 api.require 这个函数对象,例如

var bMap = api.require('bMap');

这种require对象的方法,就是YonBuilder移动开发在项目代码中引用原生的移动插件的一种调用方法。通过 api.require函数,可以初始化一个移动插件的实例对象,后面就可以通过这个实例对象来调用该移动插件内部已经封装好的api方法,从而快速实现需要的编码功能。

关于「移动插件」,简单来说是YonBuilder移动开发的一种扩展机制,在移动端进行代码开发,有时候我们会遇到一些特殊场景是不适合使用HTML方式去实现的,例如

  • 场景下需要实现的一些功能是移动平台所特有的,原生的HTML环境不具备或者无法实现,比如调用手机相机、通讯录、定位、闹铃、消息通知等;
  • 场景下一些功能比较耗费性能,虽然可以使用原生HTML去实现,但实现后运行的性能和体验不够理想,比如上千条的列表数据(如5000人的通讯录列表),使用html+js方式去实现,滑动页面列表时,就会出现页面的卡顿问题;
  • 场景需要使用一些第三方平台的功能,即需要调用第三方平台移动端封装好的SDK,比如 百度(高德)地图的SDK、人脸识别、直播、客服等等功能,他们这些平台封装的都是android或者iOS的原生SDK安装包,在HTML的web环境无法直接调用;

鉴于以上的场景需要,YonBuilder移动开发在引擎层提供了一种机制,就是可以使用引擎提供的一套特定的框架方法,可以将使用android或者iOS原生语言开发的SDK进行封装,封装后的程序可以直接被JavaScript进行调用使用。这个封装好的程序包,就被叫做「移动插件」,或「移动原生插件」。

移动插件需要在云端的应用程序控制台去进行添加,通过「移动打包」进行编译,才可以在具体的项目代码中进行调用。所以我们在遇到使用api.require调用移动插件时,如果想了解具体的插件api功能,就可以访问网站去查看对应的移动插件开发文档,里面有详细的介绍。具体的插件名称就是require括号内的名称,如上面的api.require('bMap'), 其中的单引号包含的 bMap就是具体的插件名称。

未登录情况下在「资源市场」下查看移动插件

在这里插入图片描述

已登录情况下,可以在租户下-「移动开发」-「移动插件」下的「已添加插件」或「移动插件库」去查看移动插件

在这里插入图片描述

总结

上面的简单讲述,其目的是让新手开发者朋友们对YonBuilder移动开发的项目代码的项目结构、运行机制和编码流程有了一个整体上的快速了解。了解以后,一些已经具备Web开发能力的小伙伴们,就可以通过阅读他人项目代码,来快速掌握和提高自己的YonBuilder移动开发技术水平了。

想要学习更多,可点击YonBuilder移动开发官方文档进行了解和学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解投影坐标系统,并在精美的地图上探索

投影坐标系简介 地球椭球体表面也是个曲面&#xff0c;而我们日常生活中的地图及量测空间通常是二维平面&#xff0c;因此在地图制图和线性量测时首先要考虑把曲面转化成平面。由于球面上任何一点的位置是用地理坐标&#xff08;λ&#xff0c;φ&#xff09;表示的&#xff0…

计算机三级网络技术总结(更新中)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;欢迎来到前端初见的博文&#xff0c;本文主要讲解我计算机三级网络技术&#x1f35f; &#x1f468;‍&#x1f527; 个人主页 : 前端初见 &#x1f95e;喜欢的朋友可以关注一下&#…

BEV专栏(二)从BEVFormer看BEV流程(下篇)

前言 书接上回&#xff0c;在上一篇文章中&#xff0c;我们介绍了BEVFormer这一先进的BEV算法。在本篇文章中&#xff0c;我们将深入探讨BEVFormer的实现细节&#xff0c;旨在帮助读者更深入地理解BEVFormer的工作原理和性能表现。 本教程禁止转载。同时&#xff0c;本教程来自…

【maven】自定义构建maven的jar包依赖

前言 自己定义自己的maven的jar包依赖&#xff0c;本地版本。 实现 pom.xml pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSche…

车载软件架构——闲聊几句AUTOSAR BSW(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…

车载基础软件——基础软件验证平台(网络管理和诊断)

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 我们并不必要为了和谐&#xff0c;而时刻保持通情达理&#xff1b;我们需要具备的是&#xff0c;偶尔有肚量欣然承…

部署packstack及问题总结

目录 一、部署packstack 1.1 简介 1.2 性能搭配 1.3 准备工作 1.4 安装 二、出现的问题 2.1 安装中断临时文件 2.2 提示某个安装包出错 2.3 leatherman版本太高 三、安装成功 一、部署packstack 1.1 简介 对于openstack初学者而言&#xff0c;传统部署openstack流程…

MQ-rabbitMQ_基础篇

MQ-rabbitMQ_基础篇 1.MQ1.1什么是MQ1,2应用 2.常见消息中间件协议&#xff08;模型&#xff09;2.1JMS模型&#xff08;协议&#xff09;2.2AMQP协议 3.RabbitMQ3.1六种工作模式3.1.1Hello Word简单模式3.1.2word queues 工作队列能者多劳 3.1.3Publish/Subscribe 发布与订阅模…

在SwissTargetsPrediction数据库中预测成分靶点

1.对筛选的多肽成分进行靶点预测&#xff1a; ①用Uniport中的蛋白进行一系列操作&#xff08;水解&#xff0c;挑选2~8短肽&#xff0c;活性预测&#xff0c;毒性&#xff0c;过敏性预测&#xff0c;胃肠吸收度&#xff0c;半衰期和苦味的预测、生物活性功能预测&#xff09;…

mybatis连接池源码分析

文章目录 前言一、PooledDataSourceFactory二、获取连接三、归还连接 前言 其实大部分连接池的代码都大同小异&#xff0c;总体获取连接&#xff0c;归还连接逻辑大都相同。希望通过阅读本文章&#xff0c;能给你带来帮助。 测试用例 public void testMybatis()throws Excepti…

深入篇【C++】类与对象:运算符重载详解

深入篇【C】类与对象&#xff1a;运算符重载详解 ⏰一.运算符重载&#x1f553;1.<运算符重载&#x1f550;2.>运算符重载&#x1f552;3.运算符重载&#x1f551;4.运算符重载①.格式1.改进12.改进2 ②.默认成员函数1.功能2.不足 &#x1f553;5.<运算符重载&#x1…

学内核之十九:Linux文件系统结构大蓝图

目录 一&#xff1a;参考资料 二&#xff1a;整理的原因及基本原则 三&#xff1a;Linux文件系统大蓝图 四&#xff1a;补充说明 一&#xff1a;参考资料 博主梳理的关于文件系统的基础知识&#xff1a; 7.5 文件系统_定义_龙赤子的博客-CSDN博客 博主转载的关于page cac…

深入理解深度学习——正则化(Regularization):参数范数惩罚

分类目录&#xff1a;《深入理解深度学习》总目录 正则化在深度学习的出现前就已经被使用了数十年。线性模型&#xff0c;如线性回归和逻辑回归可以使用简单、直接、有效的正则化策略。许多正则化方法通过对目标函数 J J J添加一个参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ…

三、Neo4j 源码研究系列 - 持久化

version: v-2023051401 author: 路__ 说到数据库&#xff0c;那么离不开的模块就是持久化&#xff08;Persistence&#xff09;&#xff0c;数据持久化是数据库不可缺少的重要组成模块之一。可以说一个数据库少了持久化功能&#xff0c;可以说这个数据库就不足以称为数据库。…

并查集:解密算法面试中的常客

文章目录 1. 并查集原理&#x1f351; 举例说明&#x1f351; 并查集的应用 2. 并查集实现&#x1f351; 接口总览&#x1f351; 构造函数&#x1f351; 查询操作&#x1f345; 代码实现 &#x1f351; 合并操作&#x1f345; 动图演示&#x1f345; 代码实现 &#x1f351; 判…

Linux文件打开函数open()

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> int main(void) {int fd -1; /*这个整数用来存放文件描述符*/char filename[] "good.txt"; /*打开的文件名&#xff0c;是一个字符数组…

String类 [下]

目录 一、拷贝构造和赋值重载的传统写法和现代写法 0x01 拷贝构造的传统写法 0x02 拷贝构造的现代写法 0x03 赋值重载的传统写法 0x04 赋值重载的现代写法 0x05 总结 二、 增删改查之后的string 0x01 成员函数swap: 0x02 reserve&#xff1a;改变容量 0x03 push_back: 尾…

带你深入理解Java异常

&#x1f495;“人生就像一盘棋&#xff0c;有时候你慢一步&#xff0c;就输掉了一局。但只要你不停止思考和行动&#xff0c;就永远有机会翻盘。”&#x1f495; &#x1f43c;作者&#xff1a;不能再留遗憾了&#x1f43c; &#x1f386;专栏&#xff1a;Java学习&#x1f38…

《计算机网络——自顶向下方法》精炼——3.4.1-3.4.3

聪明出于勤奋,天才在于积累。——华罗庚 文章目录 对协议的进一步改进rdt2.1rdt2.2rdt3.0&#xff1a;含有比特差错和丢包的可靠数据传输协议 流水线协议回退n步&#xff08;GBN&#xff09; 对协议的进一步改进 rdt2.1 在上一篇文章中&#xff0c;我们讲到对于产生比特差错的…

A2-RIDE Long-tailed recognition by routing diverse distribution-aware experts

文章目录 0. Abstract1. Introduction2. Related Works3. RIDE&#xff1a;ROUTING DIVERSE DISTRIBUTION-AWARE EXPERTS4. Experiments5. Summary论文总结长尾数据分布 (Long-tailed Data Distribution)RIDE方法及模型1. **Multi-expert framework**2. **Routing diversified …