用extjs6.0写一个系统登录及注销

本文基于ext-6.0.0

一、用sencha cmd建立一个ExtJs小项目

  首先,需要一个命令行工具。进入extjs所在目录

  然后,输入:sencha -sdk [ExtJs6.0文件夹地址] generate app [项目名称] [项目路径]      

      例如:sencha -sdk ext-6.0.0 generate app App MyApp

  (注):还可以加--classic--modern建立pc或WAP单独项目

二、在浏览器打开

  命令行输入:sencha app watch

三、开始写login页

  1、在view文件夹中创建login文件夹,在login中创建文件login.js和loginController.js(login.js放在classic/view/login,loginController.js放在app/view/login)

  2、在app.js中禁用  mainView: ‘FirstTest.view.main.Main‘

  3、在login.js中写页面

    ①创建窗口  ②写依赖、配置  ③写登录的表单和按钮

Ext.define(‘FirstTest.view.login.login‘, {
    extend: ‘Ext.window.Window‘,
    xtype: ‘login‘,

    requires: [
        ‘Ext.form.Panel‘,
        ‘FirstTest.view.login.loginController‘
    ],

    controller:‘login‘,

    bodyPadding: 10,
    title:‘用户登录‘,

    closable:false,//窗口是否可关闭
    autoShow:true,//windows默认是隐藏,要设置为显示

    items: {
        xtype:‘form‘,
        reference: ‘form‘,
        items: [{
            xtype:‘textfield‘,
            name: ‘username‘,
            fieldLabel: ‘用户名‘,
            allowBlank: false
        },{
            xtype:‘textfield‘,
            name: ‘password‘,
            fieldLabel: ‘密码‘,
            allowBlank: false
        }],
        buttons: [{
            text:‘登录‘,
            formBind: true,//按钮是否可用取决于form
            listeners:{
                click: ‘onLoginClick‘
            }
        }]
    }
});

  4、在loginController.js中写登录按钮的onLoginClick事件

    ①在localStorage中记录登录状态(写入TutorialLoggedIn:true)  ②destroy登录页  ③create首页

Ext.define(‘FirstTest.view.login.loginController‘,{
    extend:‘Ext.app.ViewController‘,
    alias:‘controller.login‘,
    onLoginClick: function() {

        // Set the localStorage value to true
        localStorage.setItem("TutorialLoggedIn", true);

        // Remove Login Window
        this.getView().destroy();

        // Add the main view to the viewport
        Ext.create({
            xtype: ‘app-main‘
        });

    }
})

  5、添加启动逻辑到Application.js(app/Application.js)

  ①判断是否登录(通过判断localStorage中的TutorialLoggedIn是否存在),若登录则打开首页,否则打开登录页

Ext.define(‘FirstTest.Application‘, {
    extend: ‘Ext.app.Application‘,

    name: ‘FirstTest‘,

    stores: [
        // TODO: add global / shared stores here
    ],

    views: [
        ‘FirstTest.view.login.login‘,
        ‘FirstTest.view.main.Main‘
    ],

    launch: function () {
        // TODO - Launch the application

        var loggedIn;

        // Check to see the current value of the localStorage key
        loggedIn = localStorage.getItem("TutorialLoggedIn");

        // This ternary operator determines the value of the TutorialLoggedIn key.
        // If TutorialLoggedIn isn‘t true, we display the login window,
        // otherwise, we display the main view
        Ext.create({
            xtype: loggedIn ? ‘app-main‘ : ‘login‘
        });
    },

    onAppUpdate: function () {
        Ext.Msg.confirm(‘Application Update‘, ‘This application has an update, reload?‘,
            function (choice) {
                if (choice === ‘yes‘) {
                    window.location.reload();
                }
            }
        );
    }
});

  

  6、在main.js中添加Viewport插件

plugins: ‘viewport‘,

   这个不加,登录后就是一片空白。

--------------------------------------------------到这里,整个登录就写好啦。下面写一下怎么注销。-------------------------------------------------------------------------------------------------------------

四、注销

  1、写一个注销按钮

{
    xtype:‘button‘,
    text:‘注销‘,
    iconCls:‘x-fa fa-power-off‘,
    handler: ‘onClickButton‘
}

  2、在MainController.js中写注销的方法onClickButton

  onClickButton: function () {
        // Remove the localStorage key/value
        localStorage.removeItem(‘TutorialLoggedIn‘);

        // Remove Main View
        this.getView().destroy();

        // Add the Login Window
        Ext.create({
            xtype: ‘login‘
        });
    },

到此,登录注销就都写好了。

时间: 2024-10-10 01:21:00

用extjs6.0写一个系统登录及注销的相关文章

Extjs6(三)——用extjs6.0写一个简单页面

本文基于ext-6.0.0 一.关于border布局 在用ext做项目的过程中,最常用到的一种布局就是border布局,现在要写的这个简单页面也是运用border布局来做.border布局将页面分为五个部分,分别是north.south.west.east.center,对应着上.下.左.右.中,下面看一个简单的border布局的例子. Ext.define('Learning.view.treelearn.trees', { extend: 'Ext.panel.Panel', xtype:'

Vue.js写一个SPA登录页面的过程

技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cookie或者本地存储的值): 如果有登录态则查询登录信息(uid,头像等...)并保存起来:如果没有则跳转到登录页: 在登录页面(或者登录框),校检用户输入信息是否合法: 校检通过后发送登录请求:校检不成功则反馈给用户: 登录成功则从后端数据中取出session信息保存登录状态(可能需要跳转);登录不成功

夺命雷公狗---linux NO:5 linux系统登录和注销

我们在系统中常用的有登录和注销,就用我们常见的系统用户root为例: 首先我们进行输入帐号和密码对她进行登录: 输入密码后回车系统即可登录..... 然后我们就开始对她进行注销,我们用到的命令是:  logout   ,如下所示 然后回车即可回到登录时候的界面,如下所示:

用cocos2d3.0写一个srpg游戏-移动部分的实现

确定SRPG一个人物的移动范围, 我用的是比较傻的穷举法, 其实就是把人物可移动长度的每一个点都判断一下是否可以移动, 然后根据地形对人物影响的障碍等级, 每走一步,就少一个障碍等级的行走能力. 具体看代码 void SearchPathForSLG::init(TMXTiledMap* map, Point heroIndex,int runLength,bool movePath[][255]){ Point mapSize=Point(map->getMapSize().width,map

写一个通不过的代码

尼科彻斯定理 /*验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和.×× *问题分析与算法设计 本题是一个定理,我们先来证明它是成立的. 对于任一正整数a,不论a是奇数还是偶数,整数(a×a-a+1)必然为奇数. 构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为2(奇数数列),则前a项的和为: a×((a×a-a+1))+2×a(a-1)/2 =a×a×a-a×a+a+a×a-a =a×a×a 定理成立.证毕. 通过定理的证明过程可知L所要求的奇数数列的首项为

Java小练习之利用面向对象写一个简单的登录系统

import java.util.Scanner; /** * 采用面向对象的方式 写一个登录系统 * @author Administrator * */ //用户信息 class UserInfo{ public static String[] user = new String[10]; public static String[] passwd = new String[10]; public UserInfo() { this.user[0] = "test"; this.p

zabbix3.0监控windows系统安全日志,实现监控用户登录windows并报警的功能

zabbix3.0版本自带eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>]监控项,通过添加该监控项实践监控windows系统日志(系统.安全.应用程序). 以下是添加监控项的截图: 其中:Name 指监控项的名称,可以随便取,最好做到看到名字就知道意思: Type 指监控项的类型,这里选择Zabbix agent(active)类型: Key

【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间

打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多,5毛钱一根,还有几根1.5的. 嗯 接着说gcc的事 先把源代码贴上来 //gettime.h #ifndef _GET_TIME_H_ #define _GET_TIME_H_ void PrintCurrentTime(); #endif //gettime.c #include <stdio.

Linux系统的rm命令太危险,一不小心就会删除系统文件。写一个shell脚本来替换系统的rm命令,

Linux系统的rm命令太危险,一不小心就会删除系统文件.写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时都要做一个备份,然后再删除. 假设有一个大的分区/data/,每次删除文件或者目录前,都要在/data/下面创建一个隐藏目录,以日期/时间命名,比如/data/.201802021054,然后把所有删除的文件同步到该目录下面,可以使用rsync -R把文件路径一同同步 答案: #!/bin/bash d=`date +%Y%m%d%H%M` read -p "Are y