autojs用MCV框架实现界面切换

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂

MVC概念


MVC框架_百度百科 (baidu.com)


  • M即model模型是指模型表示业务规则
  • V即View视图是指用户看到并与之交互的界面
  • C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求


MVC目的


将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强


思考


使用mcv的思想来写脚本, 不一定要遵循标准的mvc, 可以一定程度的修改, 让其更适合写脚本;


学习编程的时候, 做了比不做好;


不能光看教程不动手, 要把学到的具体的知识, 变成泛化的知识, 动手是最好的方法;


我写的不一定对, 欢迎大佬批评指正


main.js

"ui";
require("./controller").init();


view.js


未登录页面和登录页面的xml文件

let LoginPage = (
  <vertical padding="30">
    <horizontal>
      <text text="username" textSize="30sp" />
      <input id="username" w="*" />
    </horizontal>
    <horizontal>
      <text text="password" textSize="30sp" />
      <input id="password" type="password" w="*" />
    </horizontal>
    <button id="login">login</button>;
  </vertical>
);
let HomePage = (
  <vertical padding="30">
    <text text="homepage" w="*" gravity="center" textStyle="bold" textSize="40sp" />
    <horizontal>
      <text text="username: " textSize="30sp" />
      <text id="username" textSize="30sp" />
      <linear id="vipComponentParent"></linear>
    </horizontal>
    <button id="logout">logout</button>;
  </vertical>
);
let VipComponent = (
  <vertical>
    <text text=" vip" textColor="#ff5722" w="*" textStyle="bold" textSize="30sp" />
  </vertical>
);
module.exports = {
  LoginPage: LoginPage,
  HomePage: HomePage,
  VipComponent: VipComponent,
};


controller.js


用来调度View层和Model层, 用来将不同的View和不同的Model组织在一起,顺便替双方传递消息;


把登录的数据交给model处理, 显示对应的界面

let view = require("./view");
let model = require("./model");
module.exports = {
  init,
};
function init() {
  loadLoginPage();
}
function loadLoginPage() {
  ui.layout(view.LoginPage);
  loginPageAction();
}
function loadHomePage(user) {
  ui.layout(view.HomePage);
  user.vip && ui.vipComponentParent.addView(ui.inflate(view.VipComponent));
  homePageAction(user);
}
function loginPageAction() {
  ui.login.click(function () {
    let username = ui.username.text();
    let password = ui.password.text();
    if (!username) {
      toastLog("username is empty");
      ui.username.setError("username is empty");
      return;
    }
    if (!password) {
      toastLog("password is empty");
      ui.password.setError("password is empty");
      return;
    }
    let user = new model.UserModel(username, password);
    let loginResult = user.login();
    if (loginResult) {
      loadHomePage(user);
    } else {
      toastLog("login failed");
    }
  });
}
function homePageAction(user) {
  ui.username.text(user.username);
  ui.logout.click(function () {
    loadLoginPage();
  });
}


model.js


数据模型和业务逻辑;


验证登录

let UserModel = function (username, password) {
  this.username = username;
  this.password = password;
  this.vip = false;
  this.login = function () {
    if (this.username === "admin" && this.password === "123") {
      this.vip = true;
      return true;
    } else if (this.username === "user" && this.password === "123") {
      this.vip = false;
      return true;
    } else {
      return false;
    }
  };
};
module.exports = {
  UserModel: UserModel,
};


环境

手机: Mi 11 Pro

Android版本: 12

Autojs版本: 9.1.0

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
|
Android开发
autojs最近任务多界面
牙叔教程 简单易懂
905 0
|
12月前
|
存储 缓存 负载均衡
一致性哈希:解决分布式难题的神奇密钥
一致哈希是一种特殊的哈希算法,用于分布式系统中实现数据的高效、均衡分布。它通过将节点和数据映射到一个虚拟环上,确保在节点增减时只需重定位少量数据,从而提供良好的负载均衡、高扩展性和容错性。相比传统取模方法,一致性哈希能显著减少数据迁移成本,广泛应用于分布式缓存、存储、数据库及微服务架构中,有效提升系统的稳定性和性能。
674 1
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。
|
JavaScript 前端开发 Android开发
安卓自动化 | autox.js
安卓自动化 | autox.js
1633 8
|
数据安全/隐私保护
基于AutoJs实现的薅羊毛专业版又一次大更新
基于AutoJs实现的薅羊毛专业版又一次大更新
232 0
基于AutoJs实现的薅羊毛专业版又一次大更新
|
Android开发
android|Magisk注入Zygisk的过程
android|Magisk注入Zygisk的过程
1660 1
 android|Magisk注入Zygisk的过程
AutoJs4.1.0实战教程---字节跳动App大集合
AutoJs4.1.0实战教程---字节跳动App大集合
385 0
|
NoSQL Java 关系型数据库
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
1410 0
|
开发框架 前端开发 数据库
基于Python+Flask实现一个在线聊天室网站系统
基于Python+Flask实现一个在线聊天室网站系统
605 0