开发网页,我们既要写视图部分【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

JSX有感的更多相关文章

  1. React的使用与JSX的转换

    前置技能:Chrome浏览器   一.拿糖:React的使用 React v0.14 RC 发布,主要更新项目: 两个包: React 和 React DOM DOM node refs 无状态的功能 ...

  2. React Native JSX value should be expression or a quoted JSX text.

    问题描述:  我在使用props时候, 我的写法是这样的 ... <View> <Person name='john' age=32 gender=true></Pers ...

  3. React反模式 —— 如何不使用JSX地动态显示组件

    欢迎指导与讨论 : ) 前言 文章的最后能写出以 Modal.open( ) 这种调用形式,动态显示React对话框组件的写法(类似于ant design),同时涉及数据交互(数据能异步地返回给调用者 ...

  4. 深入理解JSX

    本文由笔者翻译自官方文档的JSX In Depth,若干案例经过了改写.其实说白了也好像不算太深入,但还是提示了一些可能的盲区. JSX是为构造React元素方法React.createElement ...

  5. 学习 React(jsx语法) + es2015 + babel + webpack

    视频学习地址: http://www.jtthink.com/course/play/575 官方地址 https://facebook.github.io/react/ 神坑: 1.每次this.s ...

  6. JSX语法简介

    React的核心机制之一就是可以在内存中创建虚拟的DOM元素.React利用虚拟DOM来减少对实际DOM的操作从而提升性能. JSX简介 JSX就是Javascript和XML结合的一种格式.Reac ...

  7. React学习笔记-2-什么是jsx?如何使用jsx?

    什么是jsx?    JSX是JavaScript  XML 这两个单词的缩写,xml和html非常类似,简单来说可以把它理解成使用各种各样的标签,大家可以自行 百度.所以jsx就是在javascri ...

  8. 30-React JSX IN DEPTH

    JSX IN DEPTH JSX 从根本上说,JSX只是提供了语法糖React.createElement(component, props, ...children)的功能.以下JSX代码: < ...

  9. 22-React JSX语法

    React JSX语法 JSX只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,当然你想直接使用纯Javascript代码写也是可以的,只是利用JSX,组件的结构和 ...

随机推荐

  1. 携程实时计算平台架构与实践丨DataPipeline

    文 | 潘国庆 携程大数据平台实时计算平台负责人 本文主要从携程大数据平台概况.架构设计及实现.在实现当中踩坑及填坑的过程.实时计算领域详细的应用场景,以及未来规划五个方面阐述携程实时计算平台架构与实 ...

  2. Chrome启动后打开第一个网页很慢的解决方案

    Chrome启动后打开第一个网页很慢的解决方案 Chrome/Chromium以速度快著称,最近每当打开chrome的时候,打开第一个页面都非常慢,往往需要数十秒的时间,经分 析,应该是卡在了域名解析 ...

  3. Ambari:Provide ability to apply single patches on top of RU release

    https://issues.apache.org/jira/browse/AMBARI-12556 Provide ability to apply single patches on top of ...

  4. 微信小程序开发之多图片上传+服务端接收

    前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...

  5. SpringBoot/SpringMVC文件下载方式

    本篇文章引用外网博客代码,共描述SpringMVC下三种文件下载方式,本人测试在SpringBoot(2.0以上版本)正常使用. 引用博客,强烈推荐https://www.boraji.com. pa ...

  6. RecyclerView实现一个页面有多种item,每个item有多个view,并且可以让任意item的任意view自定义监听,通过接口方法进行触发操作

    百度了很多贴子,看着大佬的博客,模仿尝试,最终都是以失败告终,api可能版本不一样, 毕竟博客大佬都是7~8前写的,日期新点的都是好几年前了,多次尝试,还是报出莫名其妙的错. 哎,忧伤. 翻阅各种资料 ...

  7. Android序列化

    1.序列化的目的 (1)永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2)通过序列化对象在网络中传递对象 (3)通过序列化对象在进程间传递 (4)在Intent之间,基本的数据类型直接 ...

  8. Navicat 导出sql问题

    楼主最近碰到一个问题: 使用Navicat建立数据模型的时候使用导出sql功能导出的sql脚本放在sqlserver中执行失败,表创建成功了,但是我在Navicat中写的表注释和字段注释都没有成功, ...

  9. pwnable.tw applestore 分析

    此题第一步凑齐7174进入漏洞地点 然后可以把iphone8的结构体中的地址通过read修改为一个.got表地址,这样就能把libc中该函数地址打出来.这是因为read函数并不会在遇到\x00时截断( ...

  10. SpringBoot整合系列--整合MyBatis-plus

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10125279.html SpringBoot整合MyBatis-plus 步骤 第一步: ...