zoukankan      html  css  js  c++  java
  • 关于 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",
               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
    
  • 相关阅读:
    浅谈TCP三次握手和四次挥手
    浅谈网络七层协议
    websocket实例
    浅谈websocket
    python的垃圾回收机制
    解释型语言和编译型语言的区别
    装饰器修复技术@wraps
    Django基础知识点
    项目再Windows上没有问题,但是在Linux上运行报错OSError: [Errno 8] Exec format error:
    在Centos 7 系统上部署flask 项目 pipenv+nginx+gunicorn
  • 原文地址:https://www.cnblogs.com/apolis/p/10004055.html
Copyright © 2011-2022 走看看