三思系列:“声明式UI“和“命令式UI“,你的理解可能是错的

三思系列是我最新的学习、总结形式,着重于:问题分析技术积累视野拓展关于三思系列

前言

最近,Jetpack Compose 发布了 Beta 版本,可以说是千呼万唤始出来。

在一个 现象级事物 出现时,关于它的讨论会很热。我注意到,最近有一大批关于Compose的文章涌现了出来,并且有很多的讨论,这很棒。

但是,值得一提的是,我发现很多人对于 声明式UI命令式UI 的认知,可能出现了一点偏差。

当然,我也 不是马丁老爷子 或者 Jack Wharton 那样的 专家,对于这个问题,只能是同大家 一道探索

声明式 和 命令式 含义探索

按照经验,中文往往比英文具有 更强的表达力 ,这也意味着:中文的 凝练度更高,也更容易产生理解误差,我们结合英文一起看

  • 声明式 declarative

a declarative sentence has the form of a statement.

statement: 4条释义,看第一条

  • something you say or write, especially publicly or officially, to let people know your intentions or opinions, or to record facts
  • 其他三条略

technical, an imperative verb is one that expresses an order, such as ‘stand up’

如果从 语境 上来看,声明 是面向一个环境、一个群体表达某些规则,而 命令 所面向的,是一个明确的对象群,在指使他们做一些事情。

举个可能不太恰当的例子:

  • 我军优待俘虏,缴枪投降不杀,这是对敌军的声明

  • 营长命令各战斗单位,打扫战场,一连收缴武器弹药,二连负责收押俘虏。这是命令式

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
介绍:facebook开源了litho一个高效的声明UI框架。运行效果:使用说明:dependencies {   // ...   // Litho   compile 'com.facebook.litho:litho-core:0.2.0'   compile 'com.facebook.litho:litho-widget:0.2.0'   provided 'com.facebook.litho:litho-annotations:0.2.0'     annotationProcessor 'com.facebook.litho:litho-processor:0.2.0'      // SoLoader    compile 'com.facebook.soloader:soloader:0.2.0'     // Optional   // For debugging   debugCompile 'com.facebook.litho:litho-stetho:0.2.0'     // For integration with Fresco   debugCompile 'com.facebook.litho:litho-fresco:0.2.0'     // For testing   testCompile 'com.facebook.litho:litho-testing:0.2.0' }测试是否安装成功可以在activity中使用Litho创建一个view来测试是否安装成功。首先,初始化SoLoader。Litho依赖于SoLoader,它帮助加载由布局引擎Yoga提供的本地库。Application类适合做这件事情:[MyApplication.java] public class MyApplication extends Application {     @Override   public void onCreate() {     super.onCreate();          SoLoader.init(this, false);   } }然后把一个Litho文本控件放到一个activity中,显示“Hello World!”:[MyActivity.java] import com.facebook.litho.ComponentContext; import com.facebook.litho.LithoView;   public class MyActivity extends Activity {     @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);          final ComponentContext c = new ComponentContext(this);       final LithoView lithoView = LithoView.create(       this /* context */,        Text.create(c)             .text("Hello, World!")             .textSizeDip(50)             .build());            setContentView(lithoView);   } }现在运行app应该就能看到屏幕上显示“Hello World!” 了。注:不久前翻译了一篇文章Components for Android: 一个高效的声明UI框架 ,现在判断就是说的这个库了,那个时候还没开源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值