在React组件中定义视图
在开始编写React视图库之前,要先添加react
包,这个包囊括了你在Meteor
应用中开始运行React
所需要所有东西。这个React库自己可以自动将jsx
文件编译,并且通过ReactMeteorData
的mixin加载数据。我们将会在接下来的步骤中看到如何使用所有的这些东西。
打开一个新的终端,在你运行Meteor
程序相同的文件夹下运行这样一条命令:
替换启动代码
为了启动,我们来替换掉默认的启动应用的代码,接下来我们会讨论这是什么意思
首先,替换掉最开始的名为simple-todos-react.html
的HTML文件内容。
然后, 删除simple-todos-react.js
并建立三个新的文件
新建 simple-todos-react.jsx
文件写入这些内容
新建App.jsx
文件,并写入以下内容:
新建Task.jsx
文件,并写入
我们刚刚在应用中添加的三个事情分别是以下的意思:
- 一个 App React组件
- 一个 Task React组件
- 一些包裹在
if (Meteor.isClient) { ... }
中的代码, 这些代码定义了在浏览器中会被执行,还有Meteor.startup
, 这个让程序知道页面在被加载完成之后如何去调用代码。
在教程之后,我们会在添加和修改代码的时候参考这些组件
看看结果
在我们的浏览器中,应用将会看起来像这个样子:
Todo List
- This is task1
- This is task2
- This is task3
如果你的应用看起来并不是这样,请确认你的代码和例子上的一致
HTML文件中定义静态内容
Meteor
将你的应用中的HTML文件切分并识别三个最高等级的标签:<head>, <body>,还有<template>
每个在 <head>标签中的标签被添加到已被发送的HTML文件的head
部分,<body>标签中的所有标签同样是被添加到已被发送的HTML的body
部分,就像正常的html文件一样
每一个在<template>中的标签将会被编译成Meteor
模板文件, 那些可以被包含在HTML中,包含{{>templateName}}或者是在js
中引用的Template.templateName
。在本教程中,我们并不会使用这些Meteor特性,因为我们将会用React定义所有的这些视图组件。
用React定义视图组件
在React中,视图组件是被使用React.createClass
定义的。你的组件可以有任何你想要的方法。除了几个像是render
这样的特殊方法。组件可以接收来自于父组件通过props
属性传过来的数据。在这个教程中,我们将看一看更多的一些React特性。你也可以通过Facebook’s React tutorial来学习
从JSX的render方法中得到标记语言(markup)
在React组件中最重要的方法就是render
, 这个被React调用从应该被显示的HTML中返回内容(description),HTML内容被叫做JSX
的javascript
的扩展语言所编写。这是一种像是在javascript中写HTML的样子。你早就看出了一些明显的不同了吧:在JSX
中,你使用className
属性代替class
,关于JSX一个重要的事情就是它(JSX)并不是一种像是Spacebars
或是Angular
的模板语言 – 它被直接编译成常规的JavaScript文件。了解更多请看React docs
JSX文件可以使用ES2015的新特性
如果你现在还没有尝试过下一代JavaScript特性,一些代码片段可能看起来有点怪异。这是因为.jsx
文件会随着react
包被编译,同时包含一些通用的ES2015特性,即下一代JavaScript。这些特性包含了以下的:
- 箭头函数:
- 方法名简化:
- 使用
const
和let
替换var
你可以阅读ecmascript README来了解Meteor所支持的特性。想要更多关于 ECMAScript 2015 的知识可以看看下面的几个文章:
- Luke Hoban’s “ES6 features”
- Kyle Simpson’s “You don’t know JS: ES6 and beyond”
- Nikolas C. Zakas “Understanding ECMAScript 6”
- 阮一峰ES6入门
添加样式
在我们做更多的未来打算之前,先来添加一些CSS来让我们的页面好看一点儿吧。
因为本教程专注于HTML和JavaScript,所以你可以拷贝下面的代码到simple-todos.css
文件中。这是你直到本教程结束都会用到的所有CSS代码。这个应用没有这些CSS也能运行,但是你添加了这些CSS会更好看一点。
现在,你已经添加了这些CSS,这款应用应该看起来会更好一点了。切换到你的浏览器看看新的样式并确认其有没有加载成功吧~
添加Sass(可选)
我知道你肯定想耍Sass。嘿嘿,来添加上sass吧
meteor add fourseven:scss
只要把simple-todos-react.css改名成simple-todos-react.scss就好了