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文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

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

相关文章
|
7月前
|
API
AutoJs4.1.0开发心得
AutoJs4.1.0开发心得
104 0
|
Android开发
autojs最近任务多界面
牙叔教程 简单易懂
713 0
|
Android开发
autojs加载中界面
牙叔教程 简单易懂
423 0
|
4月前
|
图形学
小功能⭐️Unity获取点击到的UI
小功能⭐️Unity获取点击到的UI
|
图形学
Unity3D简陋版跑酷游戏
Unity3D简陋版跑酷游戏
|
Android开发
autojs一键换肤
牙叔教程 简单易懂
159 0
|
Android开发
autojs牙叔工具箱
牙叔教程 简单易懂
791 0
|
XML Android开发 数据格式
autojs自定义控件色轮
牙叔教程 简单易懂
248 0
|
Java Android开发
autojs正经的交互-安卓与webview
牙叔教程 简单易懂
608 0
Unity3D原生编辑器的界面太丑?那就试试这款插件吧
是否已经看厌了Unity一成不变的白灰色了?现在给大家带来一个可以更换Unity的主题颜色的插件,下面就让我们来看看怎么使用吧