- 浏览: 84414 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
近日,facebook将其用户界面构建Javascript库React开源发布。
- 等等……什么叫用户界面构建库(a library for building user interfaces)?
顾名思义,当然就是该库是将特定规范的源代码(JSX),构建成新的代码(Javascript)。
- 为什么我们需要这么做呢?
我们觉得写CSS太麻烦了,太多重复工作了,所以我们使用LESS来代替他,让机器代替我们做这些事情。但是出于性能的需求,现在并不流行加载一个less.js让其动态处理这些LESS代码,而是转为先由LESS文件构建成静态的CSS文件,再使用,就像Bootstrap一样。
OK,回到React,我们发现Javaascript模板虽然能动态的生成我们想要的东东,但是实际上对性能并不友善,所以我们寻求一种方法让其构建成静态的,然后再使用。
当然,React不仅仅做了这些,下面让我们一起来认识React吧!
简单的例子——Hello World
首先,我们点击下面链接下载其Starter Kit。
然后在其根目录下创建一个HTML文件helloworld.html,键入以下代码:
<!DOCTYPE html>
<html>
<head>
<script src="build/react.min.js"></script>
<script src="build/JSXTransformer.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/jsx">
/** @jsx React.DOM */
React.renderComponent(
<h1>Hello, world!</h1>,
document.getElementById('example')
);
</script>
</body>
</html>
什么,这是什么代码,为什么能这么写?
/** @jsx React.DOM */
React.renderComponent(
// 这是什么不是字符串,不是数字,又不是变量的参数……WTF
<h1>Hello, world!</h1>,
document.getElementById('example')
);
因为这个script标签的type为
type="text/jsx"
所以实际上,这里面的代码并没有运行……
这里面的奥秘在于该HTML引用了JSXTransformer.js和react.min.js。首先,JSXTransformer.js将所有text/jsx类型的script当成字符串读取出来,再分析其代码,转换成适用于react.min.js的UI模块。
可见这样效率当然是很低的,但是React提供了另一种方法,不用说,就是本地构建成静态代码。通过npm我们可以安装react-tools:
npm install -g react-tools
于是我们就可以用react-tools的watch命令来监控目录变化并进行构建:
jsx --watch src/ build/
所以实际项目上的代码应当是这样的:
<!DOCTYPE html>
<html>
<head>
<title>Hello React!</title>
<script src="build/react.min.js"></script>
<!-- 不需要 JSXTransformer! -->
</head>
<body>
<div id="example"></div>
<script src="build/helloworld.js"></script>
</body>
</html>
我们看看经过构建后helloworld.js变成怎么样了:
/** @jsx React.DOM */
React.renderComponent(
React.DOM.h1(null, 'Hello, world!'),
document.getElementyById('example')
);
这里有一个值得学习的地方,就是React在对DOM插入时候做的性能优化。JavaScript Micro-Templating一般是使用innerHTML进行插入操作的,但是React并非如此,其静态生成的代码是使用Document Fragment的方法插入的。这里有一个性能测试,可以看出这两者的性能差别:
http://jsperf.com/innertext-vs-fragment
我们可以看见使用Document Fragment的性能是优于innerHTML的,作为Facebook的类似模板解决方案,其对性能有更强的要求。
下一步?
如果想更进一步了解React,那么请查看Starter Kit中的examples或者查看其官网吧!
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1073原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1134原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 624原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 475原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 597原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 560原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 560原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 526原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 497原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 801原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 788原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 624原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 568原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 612原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 840原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 956原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 413原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 676原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 671原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 504原帖地址:http://www.cnblogs.com/had ...
相关推荐
元宇宙初探React+Three.js制作3D全景漫游.zip元宇宙初探React+Three.js制作3D全景漫游.zip元宇宙初探React+Three.js制作3D全景漫游.zip元宇宙初探React+Three.js制作3D全景漫游.zip元宇宙初探React+Three.js制作3D...
上半部共5个章节,分别为:课程导学、React初探、React基础精讲、React高级内容、Redux入门附录:分为三个部分上半部:https://download.csdn.net/download/guguaihaha/13011968下部分:...
React Native初探的知识点梳理: 1. 背景与问题概述: - 活动多:指的是移动应用可能面临的频繁活动更新需求。 - 产品迭代快:移动应用需要快速迭代来响应市场变化。 - 原生代码更新不灵活:原生应用在更新时...
一个React入门者的初探。使用React+Bootstrap模板.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大...
React 初探文章[1.React 简单介绍](1. React 简单介绍.md)[2.React 简单示例](2. React 简单示例.md)[3.使用 webpack + gulp 纵享丝滑构建](3. 使用 webpack + gulp 纵享丝滑构建.md)[4.零碎总结](4. 零碎总结.md)...
失效请留言、失效请留言、失效请留言 课程序号标题 第0课0、手把手教React Native实战之开山篇_视频 第1课1、手把手教React Native实战之环境搭建_视频_...第14讲14、手把手教React Native实战之Navigator组件初探
【食品App:React初探】 在当今的互联网世界中,前端开发框架的发展日新月异,其中React以其独特的设计理念和强大的功能,成为了许多开发者的选择。本项目“foodApp:React本地婴儿”是一个针对初学者的React应用...
React Native 初探意味着我们将探索这个框架的基本概念、优势和挑战,以及如何开始构建一个简单的RN应用。 React Native的核心理念是“Learn once, write anywhere”,这意味着开发者可以使用相同的JavaScript和...
camera: :laptop: :party_popper: :party_popper: :dog_face:进一步探索渲染道具 查询组件要点指南,Apollo文档使用Apollo,Alexey Kureev查询组件 异步React跟踪React Apollo 3.0的进度异步React Apollo初探Peggy ...
03 初探Reconciler 04 如何触发更新 05 实现首屏渲染 06 初探ReactDOM 07 初探FC与实现第二种调试方式 08 实现useState 09 ReactElement的测试用例 09.第九课:ReactElement的测试用例 10.第十课:初探update流程 11...
初探lerna回到正题,我们先看一下项目的目录结构。根据lerna项目默认的项目结构,我们需要管理需要的包都packages文件夹内,并在根目录的lerna.json中编写lerna相关的配置。packages文件夹内部的结构如上图,代表我...
** MemoApp:React Native开发初探 ** React Native是一款由Facebook开发的开源框架,它允许开发者使用JavaScript和React来构建原生的iOS和Android应用程序。本项目“MemoApp”是基于React Native创建的一个简单的...
初探 官方网址: 中文官网: 文档教程更新较慢,往往都是旧版本api的使用方法 中文论坛: 在搭建好ReactNative开发环境之后,就可以正式开始使用ReactNative来开发App了。 为何需要ReactNative? Web App ...
《React Native初探:构建“Hello”应用》 React Native,作为Facebook开源的一款跨平台移动应用开发框架,允许开发者使用JavaScript和React来构建原生的iOS和Android应用。本篇文章将深入探讨如何利用React Native...
【DjangoReactNative:将React Native与Django整合的初探】 DjangoReactNative是一个创新性的项目,旨在结合两个强大的开发框架——Django和React Native,以构建高性能、跨平台的Web和移动应用。这个项目首次尝试...
《初探React-Native:构建跨平台移动应用的基石》 React-Native是Facebook于2015年推出的一款开源框架,它允许开发者使用JavaScript和React来构建原生的iOS和Android应用程序。这个项目名为"First_React-Native",...
"Testing-ReactJS:Pertama Kali Mencoba React JS"这个主题暗示了我们将初探React的基本概念和实践应用。 1. **React基础知识**: - **React组件**:React的核心是组件化。组件是独立、可重用的代码块,可以像...