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
JSX有感的更多相关文章
- React的使用与JSX的转换
前置技能:Chrome浏览器 一.拿糖:React的使用 React v0.14 RC 发布,主要更新项目: 两个包: React 和 React DOM DOM node refs 无状态的功能 ...
- React Native JSX value should be expression or a quoted JSX text.
问题描述: 我在使用props时候, 我的写法是这样的 ... <View> <Person name='john' age=32 gender=true></Pers ...
- React反模式 —— 如何不使用JSX地动态显示组件
欢迎指导与讨论 : ) 前言 文章的最后能写出以 Modal.open( ) 这种调用形式,动态显示React对话框组件的写法(类似于ant design),同时涉及数据交互(数据能异步地返回给调用者 ...
- 深入理解JSX
本文由笔者翻译自官方文档的JSX In Depth,若干案例经过了改写.其实说白了也好像不算太深入,但还是提示了一些可能的盲区. JSX是为构造React元素方法React.createElement ...
- 学习 React(jsx语法) + es2015 + babel + webpack
视频学习地址: http://www.jtthink.com/course/play/575 官方地址 https://facebook.github.io/react/ 神坑: 1.每次this.s ...
- JSX语法简介
React的核心机制之一就是可以在内存中创建虚拟的DOM元素.React利用虚拟DOM来减少对实际DOM的操作从而提升性能. JSX简介 JSX就是Javascript和XML结合的一种格式.Reac ...
- React学习笔记-2-什么是jsx?如何使用jsx?
什么是jsx? JSX是JavaScript XML 这两个单词的缩写,xml和html非常类似,简单来说可以把它理解成使用各种各样的标签,大家可以自行 百度.所以jsx就是在javascri ...
- 30-React JSX IN DEPTH
JSX IN DEPTH JSX 从根本上说,JSX只是提供了语法糖React.createElement(component, props, ...children)的功能.以下JSX代码: < ...
- 22-React JSX语法
React JSX语法 JSX只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,当然你想直接使用纯Javascript代码写也是可以的,只是利用JSX,组件的结构和 ...
随机推荐
- 携程实时计算平台架构与实践丨DataPipeline
文 | 潘国庆 携程大数据平台实时计算平台负责人 本文主要从携程大数据平台概况.架构设计及实现.在实现当中踩坑及填坑的过程.实时计算领域详细的应用场景,以及未来规划五个方面阐述携程实时计算平台架构与实 ...
- Chrome启动后打开第一个网页很慢的解决方案
Chrome启动后打开第一个网页很慢的解决方案 Chrome/Chromium以速度快著称,最近每当打开chrome的时候,打开第一个页面都非常慢,往往需要数十秒的时间,经分 析,应该是卡在了域名解析 ...
- 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 ...
- 微信小程序开发之多图片上传+服务端接收
前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...
- SpringBoot/SpringMVC文件下载方式
本篇文章引用外网博客代码,共描述SpringMVC下三种文件下载方式,本人测试在SpringBoot(2.0以上版本)正常使用. 引用博客,强烈推荐https://www.boraji.com. pa ...
- RecyclerView实现一个页面有多种item,每个item有多个view,并且可以让任意item的任意view自定义监听,通过接口方法进行触发操作
百度了很多贴子,看着大佬的博客,模仿尝试,最终都是以失败告终,api可能版本不一样, 毕竟博客大佬都是7~8前写的,日期新点的都是好几年前了,多次尝试,还是报出莫名其妙的错. 哎,忧伤. 翻阅各种资料 ...
- Android序列化
1.序列化的目的 (1)永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2)通过序列化对象在网络中传递对象 (3)通过序列化对象在进程间传递 (4)在Intent之间,基本的数据类型直接 ...
- Navicat 导出sql问题
楼主最近碰到一个问题: 使用Navicat建立数据模型的时候使用导出sql功能导出的sql脚本放在sqlserver中执行失败,表创建成功了,但是我在Navicat中写的表注释和字段注释都没有成功, ...
- pwnable.tw applestore 分析
此题第一步凑齐7174进入漏洞地点 然后可以把iphone8的结构体中的地址通过read修改为一个.got表地址,这样就能把libc中该函数地址打出来.这是因为read函数并不会在遇到\x00时截断( ...
- SpringBoot整合系列--整合MyBatis-plus
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10125279.html SpringBoot整合MyBatis-plus 步骤 第一步: ...