关于 JSX

开发网页,我们既要写视图部分【HTML】,又要写逻辑部分【JS】。

  • 写 JS 时,不断翻看 HTML,确保 querySelector 能取到期望的元素。
  • 改 HTML 时,一个个排查 JS 文件,确保其没受影响。
  • ……

类似情况很影响工作效率。把视图和相关逻辑放在一起,成了大家迫切的需求。

就这一问题,我们来看看不同的解决思路。


ExtJS

视图部分也用 JS 来写,自然很容易放在一起了。

Ext.define("XXX.view.Alarm", {
  extend: "Ext.container.Container",
  xtype: "alarmpanel",

  initComponent: function() {
    Ext.apply(this, {
      layout: "border",

      items: [
        {
          xtype: "hsnavtree",
          itemId: "leftTree",
          store: Ext.getStore("AlarmNavTree"),
          cls: "left-directory",
          rootVisible: false,
          region: "west",
          width: 240
        },
        {
          xtype: "container",
          itemId: "centerContainer",
          layout: "fit",
          region: "center"
        }
      ]
    });
    this.callParent(arguments);
  }
});

layout: "border" 指定布局方式为东南西北中。
region: "west" 指定元素放在西部。


JSX

在 JS 中直接写 HTML,再通过编译转成 JS。思想是这样,但大家知道和 HTML 还是有区别的。

class ShoppingList extends React.Component {
  render() {
    return (
      <div className="shopping-list">
        <h1>
          Shopping List for {this.props.name}
        </h1>
        <ul>
          <li>Instagram</li>
          <li>WhatsApp</li>
          <li>Oculus</li>
        </ul>
      </div>
    );
  }
}

两种思路都做到了把视图和相关逻辑放在一起

我想 JSX 赢在了:

  • 大家都熟悉 HTML,学 JSX 比学 ExtJS 那套 layout 轻松,而且 JSX 更简洁直观。
  • 大家越来越追求 Dom 的语义化,ExtJS 生成的 Dom 层级太多,不但不语义化,而且性能也不咋样。

不过 JSX 这样的思想,也并不是新思想。2009 年我接触 Flex 时也见识过。Flex 在 ActionScript 的基础上发展出了 mxml,用 xml 的形式写视图,再编译成 ActionScript。

JSX -> JavaScript
mxml -> ActionScript
posted @   apolis  阅读(275)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示