开发网页,我们既要写视图部分【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. 关于RecyclerView嵌套导致item复用异常,界面异常的问题

    常规需求: 外层RecyclerView嵌套内层RecyclerView , 在上下滑动的时候会出现item数据以及view的显示异常. 解决办法: 1.重写  getItemViewType  方法 ...

  2. Hexo + GitHub 搭建个人博客

    对于程序员来说,搭建和维护一个个人博客十分必要​,写博客既是对所学知识的整理和总结,同时也能向他人展现自己的学习成果.这篇教程就是基于 Hexo 和 GitHub 来搭建属于自己的个人博客,简单快捷, ...

  3. Ansible安装及简单使用备注

    1.安装epel源: rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 2.安装: yum ...

  4. React 与 React-Native 使用同一个 meteor 后台

    meteor 可以快速构建 pc,移动端,桌面端应用. 最大的优点是:数据库的数据发生变化时,可以实时推送到前端,非常适用于实时展示的应用开发. 在 react,react-native 应用中,可以 ...

  5. markdown实战问题备忘

    问题一:怎么把文档标题放在中间呢? 下面这个能解决问题. 居中: <center>诶嘿</center> 左对齐: <p align="left"&g ...

  6. IdentityServer4 中文文档与实战

    写在前面 写于2018.9.12 我研究 IdentityServer4 是从.net core 1.1的时候开始的,那时候国内的中文资料比较少,我都是按照官方文档来研究的,整理成了笔记.这个系列文档 ...

  7. TabTopUnderLineLayout【自定义顶部选项卡(带下划线)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义顶部选项卡布局LinearLayout类,实现带下划线样式的效果. 备注:如果配合Fragment的话,MainActivit ...

  8. springboot~openfeign从此和httpClient说再见

    在微服务设计里,服务之间的调用是很正常的,通常我们使用httpClient来实现对远程资源的调用,而这种方法需要知识服务的地址,业务接口地址等,而且需要等他开发完成后你才可以去调用它,这对于集成开发来 ...

  9. 补习系列(1)-springboot项目基础搭建课

    目录 前言 一.基础结构 二.添加代码 三.应用配置 四.日志配置 五.打包部署 小结 前言 springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了.抛开微服务.技术社区 ...

  10. cocos creator主程入门教程(五)—— 日志系统

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇介绍日志系统的设计.一般我们开发一个demo,只会简单的用cocos提供的cc.log打印下日志, ...