通用前端的学习

通用前端的概念

通用前端的概念是我自创的,也是我多年开发全栈时的个人理解,结合自己对各种语言的比较,发现前端都具有几个特征,而这几个特征,很多人只能用具体的表象来描述,比如用安卓方式来说明,用IOS的方式来说明,或者QT的方式来说明等等。

让我得出一个结论,前端应该就是学习配置,外加使用其指定的语言来编写自己需要实现的行为。

所谓配置

  1. 无论Android,IOS,QT,Flutter等,他们都自定义了自己的一套UI组件,如果我们想要使用他们这些组件,就要遵守他们的配置规则,这些东西都起源于早期的 XML 这种标签形式,这种标签以其丰富的属性(可以用来将语义化理解最低)让你指定具体的样式和行为,HTML 也是这种标签的演化品。

所谓语言

  1. 所谓语言,就是任何一个开发 UI 组件的人都必须使用一种语言来开发,不然他自己也顶不住,此外任何一个 UI 组件,都应该给予更多的自定义能力,这样才能满足不同开发者的各种需求,否则这个 UI 组件不会被普及。

  2. 为此,UI 组件开发者必然要先预定义一些事件和行为,并且还允许你能重写这些行为的默认能力。

事件是什么?

事件就是代码逻辑执行过程中可能发生的各种行为的一种标记,后续通过这种标记,提取绑定在该事件下的所有代码行为进行执行。

所以 UI 组件必然有一堆事件定义。

需要记的通用知识

配置和事件每次更换框架时都要从 0 开始记忆,而每个框架都有大量的这类东西需要记忆,而你为了减少这种记忆的痛苦性,早期没有 AI 时只能在充分掌握一种 UI 组件的前提下,推测其他 UI 组件可能的事件和行为,例如在已知 html 的 input 组件的 blur,change,focus 等事件的基础上,你就可以定向去找安卓的这些事件和行为的定义。

在有 AI 的 加持下,这些代码都是信手拈来了,感谢时代的馈赠!

java 复制代码
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText editText = findViewById(R.id.editText);
        // 处理焦点变化
        editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    Toast.makeText(MainActivity.this, "获得焦点", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "失去焦点", Toast.LENGTH_SHORT).show();
                }
            }
        });
        // 处理点击事件
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "点击了EditText", Toast.LENGTH_SHORT).show();
            }
        });
        // 处理文本改变
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // 可以在这里处理文本改变之前的逻辑
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // 可以在这里处理文本改变的逻辑
            }
            @Override
            public void afterTextChanged(Editable s) {
                // 可以在这里处理文本改变之后的逻辑
            }
        });
    }
}
相关推荐
半吊子伯爵几秒前
开发过程优化·自定义鼠标右键菜单
前端·javascript·自定义鼠标右键菜单
xcLeigh4 分钟前
HTML5实现好看的喜庆圣诞节网站源码
前端·html·html5
Tirzano22 分钟前
vue3 ts 简单动态表单 和表格
前端·javascript·vue.js
杰~JIE29 分钟前
前端工程化概述(初版)
前端·自动化·工程化·前端工程化·sop
程序员_三木30 分钟前
使用 Three.js 创建圣诞树场景
开发语言·前端·javascript·ecmascript·three
赵大仁1 小时前
深入理解 Vue 3 中的具名插槽
前端·javascript·vue.js·react.js·前端框架·ecmascript·html5
一雨方知深秋1 小时前
v-bind 操作 class(对象,数组),v-bind 操作 style
前端·css·vue.js·html·style·class·v-bind
安晴晚风2 小时前
从0开始在linux服务器上部署SpringBoot和Vue
linux·运维·前端·数据库·后端·运维开发
前端小小王3 小时前
pnpm、Yarn 和 npm 的区别?
前端·npm·node.js
supermapsupport3 小时前
使用npm包的工程如何引入mapboxgl-enhance/maplibre-gl-enhance扩展包
前端·webpack·npm·supermap·mapboxgl