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最近任务多界面
牙叔教程 简单易懂
677 0
|
Android开发
autojs加载中界面
牙叔教程 简单易懂
405 0
|
iOS开发
iOS 常用阅读软件打开书籍的转场动画
iOS 常用阅读软件打开书籍的转场动画
90 0
|
图形学
Unity3D简陋版跑酷游戏
Unity3D简陋版跑酷游戏
Unity3D简陋版跑酷游戏
|
编解码 人工智能 计算机视觉
一段蛋疼的代码:超不清视频播放器
一幅图像全部转成字符序列后,就可以直接在控制台输出了。对于一个视频来说,只需要将每一帧都转换后输出,并按照一定的时间间隔清屏、输出下一帧,即可达到我们的需要的效果。
|
Android开发
autojs一键换肤
牙叔教程 简单易懂
150 0
|
Android开发
autojs牙叔工具箱
牙叔教程 简单易懂
766 0
|
数据可视化 Android开发
autojs连连看脚本可视化
牙叔教程 简单易懂
295 0
|
XML Android开发 数据格式
autojs自定义控件色轮
牙叔教程 简单易懂
232 0
Qt-网易云音乐界面实现-9 照片墙功能
最近车也买了,不过倒是没有想象的那么开心,车真的是想消耗品啊。
205 0
Qt-网易云音乐界面实现-9 照片墙功能